Lines Matching refs:ppc_inst
21 static int __patch_instruction(struct ppc_inst *exec_addr, struct ppc_inst instr, in __patch_instruction()
22 struct ppc_inst *patch_addr) in __patch_instruction()
38 int raw_patch_instruction(struct ppc_inst *addr, struct ppc_inst instr) in raw_patch_instruction()
146 static int do_patch_instruction(struct ppc_inst *addr, struct ppc_inst instr) in do_patch_instruction()
149 struct ppc_inst *patch_addr = NULL; in do_patch_instruction()
170 patch_addr = (struct ppc_inst *)(text_poke_addr + (kaddr & ~PAGE_MASK)); in do_patch_instruction()
185 static int do_patch_instruction(struct ppc_inst *addr, struct ppc_inst instr) in do_patch_instruction()
192 int patch_instruction(struct ppc_inst *addr, struct ppc_inst instr) in patch_instruction()
203 int patch_branch(struct ppc_inst *addr, unsigned long target, int flags) in patch_branch()
205 struct ppc_inst instr; in patch_branch()
242 bool is_conditional_branch(struct ppc_inst instr) in is_conditional_branch()
260 int create_branch(struct ppc_inst *instr, in create_branch()
261 const struct ppc_inst *addr, in create_branch()
266 *instr = ppc_inst(0); in create_branch()
276 *instr = ppc_inst(0x48000000 | (flags & 0x3) | (offset & 0x03FFFFFC)); in create_branch()
281 int create_cond_branch(struct ppc_inst *instr, const struct ppc_inst *addr, in create_cond_branch()
295 *instr = ppc_inst(0x40000000 | (flags & 0x3FF0003) | (offset & 0xFFFC)); in create_cond_branch()
300 static unsigned int branch_opcode(struct ppc_inst instr) in branch_opcode()
305 static int instr_is_branch_iform(struct ppc_inst instr) in instr_is_branch_iform()
310 static int instr_is_branch_bform(struct ppc_inst instr) in instr_is_branch_bform()
315 int instr_is_relative_branch(struct ppc_inst instr) in instr_is_relative_branch()
323 int instr_is_relative_link_branch(struct ppc_inst instr) in instr_is_relative_link_branch()
328 static unsigned long branch_iform_target(const struct ppc_inst *instr) in branch_iform_target()
344 static unsigned long branch_bform_target(const struct ppc_inst *instr) in branch_bform_target()
360 unsigned long branch_target(const struct ppc_inst *instr) in branch_target()
370 int instr_is_branch_to_addr(const struct ppc_inst *instr, unsigned long addr) in instr_is_branch_to_addr()
379 int translate_branch(struct ppc_inst *instr, const struct ppc_inst *dest, in translate_branch()
380 const struct ppc_inst *src) in translate_branch()
407 patch_branch((struct ppc_inst *)(ibase + (exc / 4) + 1), addr, 0); in __patch_exception()
424 struct ppc_inst instr; in test_branch_iform()
430 check(instr_is_branch_iform(ppc_inst(0x48000000))); in test_branch_iform()
432 check(instr_is_branch_iform(ppc_inst(0x4bffffff))); in test_branch_iform()
434 check(!instr_is_branch_iform(ppc_inst(0xcbffffff))); in test_branch_iform()
436 check(!instr_is_branch_iform(ppc_inst(0x7bffffff))); in test_branch_iform()
439 check(instr_is_branch_iform(ppc_inst(0x48000001))); in test_branch_iform()
441 check(instr_is_branch_iform(ppc_inst(0x4bfffffd))); in test_branch_iform()
443 check(instr_is_branch_iform(ppc_inst(0x4bff00fd))); in test_branch_iform()
445 check(!instr_is_branch_iform(ppc_inst(0x7bfffffd))); in test_branch_iform()
448 instr = ppc_inst(0x48000103); in test_branch_iform()
451 instr = ppc_inst(0x480420ff); in test_branch_iform()
454 instr = ppc_inst(0x49fffffc); in test_branch_iform()
457 instr = ppc_inst(0x4bfffffc); in test_branch_iform()
460 instr = ppc_inst(0x4a000000); in test_branch_iform()
494 check(ppc_inst_equal(instr, ppc_inst(0x48000000))); in test_branch_iform()
499 struct ppc_inst *iptr; in test_create_function_call()
501 struct ppc_inst instr; in test_create_function_call()
504 iptr = (struct ppc_inst *)ppc_function_entry(test_trampoline); in test_create_function_call()
515 struct ppc_inst *iptr, instr; in test_branch_bform()
522 check(instr_is_branch_bform(ppc_inst(0x40000000))); in test_branch_bform()
524 check(instr_is_branch_bform(ppc_inst(0x43ffffff))); in test_branch_bform()
526 check(!instr_is_branch_bform(ppc_inst(0xc3ffffff))); in test_branch_bform()
528 check(!instr_is_branch_bform(ppc_inst(0x7bffffff))); in test_branch_bform()
531 instr = ppc_inst(0x43ff0103); in test_branch_bform()
534 instr = ppc_inst(0x43ff20ff); in test_branch_bform()
537 instr = ppc_inst(0x43ff7ffc); in test_branch_bform()
540 instr = ppc_inst(0x43fffffc); in test_branch_bform()
543 instr = ppc_inst(0x43ff8000); in test_branch_bform()
580 check(ppc_inst_equal(instr, ppc_inst(0x43FF0000))); in test_branch_bform()
587 struct ppc_inst instr; in test_translate_branch()
614 check(ppc_inst_equal(ppc_inst_read(q), ppc_inst(0x4a000000))); in test_translate_branch()
625 check(ppc_inst_equal(ppc_inst_read(q), ppc_inst(0x49fffffc))); in test_translate_branch()
671 check(ppc_inst_equal(ppc_inst_read(q), ppc_inst(0x43ff8000))); in test_translate_branch()
683 check(ppc_inst_equal(ppc_inst_read(q), ppc_inst(0x43ff7ffc))); in test_translate_branch()
718 __patch_instruction((struct ppc_inst *)code_patching_test1, in test_prefixed_patching()
720 (struct ppc_inst *)code_patching_test1); in test_prefixed_patching()