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()
237 bool is_conditional_branch(struct ppc_inst instr) in is_conditional_branch()
255 int create_branch(struct ppc_inst *instr, in create_branch()
256 const struct ppc_inst *addr, in create_branch()
261 *instr = ppc_inst(0); in create_branch()
271 *instr = ppc_inst(0x48000000 | (flags & 0x3) | (offset & 0x03FFFFFC)); in create_branch()
276 int create_cond_branch(struct ppc_inst *instr, const struct ppc_inst *addr, in create_cond_branch()
290 *instr = ppc_inst(0x40000000 | (flags & 0x3FF0003) | (offset & 0xFFFC)); in create_cond_branch()
295 static unsigned int branch_opcode(struct ppc_inst instr) in branch_opcode()
300 static int instr_is_branch_iform(struct ppc_inst instr) in instr_is_branch_iform()
305 static int instr_is_branch_bform(struct ppc_inst instr) in instr_is_branch_bform()
310 int instr_is_relative_branch(struct ppc_inst instr) in instr_is_relative_branch()
318 int instr_is_relative_link_branch(struct ppc_inst instr) in instr_is_relative_link_branch()
323 static unsigned long branch_iform_target(const struct ppc_inst *instr) in branch_iform_target()
339 static unsigned long branch_bform_target(const struct ppc_inst *instr) in branch_bform_target()
355 unsigned long branch_target(const struct ppc_inst *instr) in branch_target()
365 int instr_is_branch_to_addr(const struct ppc_inst *instr, unsigned long addr) in instr_is_branch_to_addr()
374 int translate_branch(struct ppc_inst *instr, const struct ppc_inst *dest, in translate_branch()
375 const struct ppc_inst *src) in translate_branch()
402 patch_branch((struct ppc_inst *)(ibase + (exc / 4) + 1), addr, 0); in __patch_exception()
419 struct ppc_inst instr; in test_branch_iform()
425 check(instr_is_branch_iform(ppc_inst(0x48000000))); in test_branch_iform()
427 check(instr_is_branch_iform(ppc_inst(0x4bffffff))); in test_branch_iform()
429 check(!instr_is_branch_iform(ppc_inst(0xcbffffff))); in test_branch_iform()
431 check(!instr_is_branch_iform(ppc_inst(0x7bffffff))); in test_branch_iform()
434 check(instr_is_branch_iform(ppc_inst(0x48000001))); in test_branch_iform()
436 check(instr_is_branch_iform(ppc_inst(0x4bfffffd))); in test_branch_iform()
438 check(instr_is_branch_iform(ppc_inst(0x4bff00fd))); in test_branch_iform()
440 check(!instr_is_branch_iform(ppc_inst(0x7bfffffd))); in test_branch_iform()
443 instr = ppc_inst(0x48000103); in test_branch_iform()
446 instr = ppc_inst(0x480420ff); in test_branch_iform()
449 instr = ppc_inst(0x49fffffc); in test_branch_iform()
452 instr = ppc_inst(0x4bfffffc); in test_branch_iform()
455 instr = ppc_inst(0x4a000000); in test_branch_iform()
489 check(ppc_inst_equal(instr, ppc_inst(0x48000000))); in test_branch_iform()
494 struct ppc_inst *iptr; in test_create_function_call()
496 struct ppc_inst instr; in test_create_function_call()
499 iptr = (struct ppc_inst *)ppc_function_entry(test_trampoline); in test_create_function_call()
510 struct ppc_inst *iptr, instr; in test_branch_bform()
517 check(instr_is_branch_bform(ppc_inst(0x40000000))); in test_branch_bform()
519 check(instr_is_branch_bform(ppc_inst(0x43ffffff))); in test_branch_bform()
521 check(!instr_is_branch_bform(ppc_inst(0xc3ffffff))); in test_branch_bform()
523 check(!instr_is_branch_bform(ppc_inst(0x7bffffff))); in test_branch_bform()
526 instr = ppc_inst(0x43ff0103); in test_branch_bform()
529 instr = ppc_inst(0x43ff20ff); in test_branch_bform()
532 instr = ppc_inst(0x43ff7ffc); in test_branch_bform()
535 instr = ppc_inst(0x43fffffc); in test_branch_bform()
538 instr = ppc_inst(0x43ff8000); in test_branch_bform()
575 check(ppc_inst_equal(instr, ppc_inst(0x43FF0000))); in test_branch_bform()
582 struct ppc_inst instr; in test_translate_branch()
609 check(ppc_inst_equal(ppc_inst_read(q), ppc_inst(0x4a000000))); in test_translate_branch()
620 check(ppc_inst_equal(ppc_inst_read(q), ppc_inst(0x49fffffc))); in test_translate_branch()
666 check(ppc_inst_equal(ppc_inst_read(q), ppc_inst(0x43ff8000))); in test_translate_branch()
678 check(ppc_inst_equal(ppc_inst_read(q), ppc_inst(0x43ff7ffc))); in test_translate_branch()
713 __patch_instruction((struct ppc_inst *)code_patching_test1, in test_prefixed_patching()
715 (struct ppc_inst *)code_patching_test1); in test_prefixed_patching()