Lines Matching refs:instr

44 int raw_patch_instruction(u32 *addr, ppc_inst_t instr)  in raw_patch_instruction()  argument
46 if (ppc_inst_prefixed(instr)) in raw_patch_instruction()
47 return __patch_mem(addr, ppc_inst_as_ulong(instr), addr, true); in raw_patch_instruction()
49 return __patch_mem(addr, ppc_inst_val(instr), addr, false); in raw_patch_instruction()
378 int patch_instruction(u32 *addr, ppc_inst_t instr) in patch_instruction() argument
380 if (ppc_inst_prefixed(instr)) in patch_instruction()
381 return patch_mem(addr, ppc_inst_as_ulong(instr), true); in patch_instruction()
383 return patch_mem(addr, ppc_inst_val(instr), false); in patch_instruction()
407 int patch_instruction(u32 *addr, ppc_inst_t instr) in patch_instruction() argument
409 return patch_mem(addr, ppc_inst_val(instr), false); in patch_instruction()
444 ppc_inst_t instr = ppc_inst_read(code); in __patch_instructions() local
446 if (ppc_inst_prefixed(instr)) { in __patch_instructions()
447 u64 val = ppc_inst_as_ulong(instr); in __patch_instructions()
451 u32 val = ppc_inst_val(instr); in __patch_instructions()
580 ppc_inst_t instr; in patch_branch() local
582 if (create_branch(&instr, addr, target, flags)) in patch_branch()
585 return patch_instruction(addr, instr); in patch_branch()
592 bool is_conditional_branch(ppc_inst_t instr) in is_conditional_branch() argument
594 unsigned int opcode = ppc_inst_primary_opcode(instr); in is_conditional_branch()
599 switch ((ppc_inst_val(instr) >> 1) & 0x3ff) { in is_conditional_branch()
610 int create_cond_branch(ppc_inst_t *instr, const u32 *addr, in create_cond_branch() argument
624 *instr = ppc_inst(0x40000000 | (flags & 0x3FF0003) | (offset & 0xFFFC)); in create_cond_branch()
629 int instr_is_relative_branch(ppc_inst_t instr) in instr_is_relative_branch() argument
631 if (ppc_inst_val(instr) & BRANCH_ABSOLUTE) in instr_is_relative_branch()
634 return instr_is_branch_iform(instr) || instr_is_branch_bform(instr); in instr_is_relative_branch()
637 int instr_is_relative_link_branch(ppc_inst_t instr) in instr_is_relative_link_branch() argument
639 return instr_is_relative_branch(instr) && (ppc_inst_val(instr) & BRANCH_SET_LINK); in instr_is_relative_link_branch()
642 static unsigned long branch_iform_target(const u32 *instr) in branch_iform_target() argument
646 imm = ppc_inst_val(ppc_inst_read(instr)) & 0x3FFFFFC; in branch_iform_target()
652 if ((ppc_inst_val(ppc_inst_read(instr)) & BRANCH_ABSOLUTE) == 0) in branch_iform_target()
653 imm += (unsigned long)instr; in branch_iform_target()
658 static unsigned long branch_bform_target(const u32 *instr) in branch_bform_target() argument
662 imm = ppc_inst_val(ppc_inst_read(instr)) & 0xFFFC; in branch_bform_target()
668 if ((ppc_inst_val(ppc_inst_read(instr)) & BRANCH_ABSOLUTE) == 0) in branch_bform_target()
669 imm += (unsigned long)instr; in branch_bform_target()
674 unsigned long branch_target(const u32 *instr) in branch_target() argument
676 if (instr_is_branch_iform(ppc_inst_read(instr))) in branch_target()
677 return branch_iform_target(instr); in branch_target()
678 else if (instr_is_branch_bform(ppc_inst_read(instr))) in branch_target()
679 return branch_bform_target(instr); in branch_target()
684 int translate_branch(ppc_inst_t *instr, const u32 *dest, const u32 *src) in translate_branch() argument
690 return create_branch(instr, dest, target, in translate_branch()
693 return create_cond_branch(instr, dest, target, in translate_branch()