Lines Matching refs:instr

23 static int __patch_instruction(u32 *exec_addr, ppc_inst_t instr, u32 *patch_addr)  in __patch_instruction()  argument
25 if (!ppc_inst_prefixed(instr)) { in __patch_instruction()
26 u32 val = ppc_inst_val(instr); in __patch_instruction()
30 u64 val = ppc_inst_as_ulong(instr); in __patch_instruction()
44 int raw_patch_instruction(u32 *addr, ppc_inst_t instr) in raw_patch_instruction() argument
46 return __patch_instruction(addr, instr, addr); in raw_patch_instruction()
281 static int __do_patch_instruction_mm(u32 *addr, ppc_inst_t instr) in __do_patch_instruction_mm() argument
310 err = __patch_instruction(addr, instr, patch_addr); in __do_patch_instruction_mm()
331 static int __do_patch_instruction(u32 *addr, ppc_inst_t instr) in __do_patch_instruction() argument
348 err = __patch_instruction(addr, instr, patch_addr); in __do_patch_instruction()
356 int patch_instruction(u32 *addr, ppc_inst_t instr) in patch_instruction() argument
368 return raw_patch_instruction(addr, instr); in patch_instruction()
372 err = __do_patch_instruction_mm(addr, instr); in patch_instruction()
374 err = __do_patch_instruction(addr, instr); in patch_instruction()
383 ppc_inst_t instr; in patch_branch() local
385 if (create_branch(&instr, addr, target, flags)) in patch_branch()
388 return patch_instruction(addr, instr); in patch_branch()
395 bool is_conditional_branch(ppc_inst_t instr) in is_conditional_branch() argument
397 unsigned int opcode = ppc_inst_primary_opcode(instr); in is_conditional_branch()
402 switch ((ppc_inst_val(instr) >> 1) & 0x3ff) { in is_conditional_branch()
413 int create_cond_branch(ppc_inst_t *instr, const u32 *addr, in create_cond_branch() argument
427 *instr = ppc_inst(0x40000000 | (flags & 0x3FF0003) | (offset & 0xFFFC)); in create_cond_branch()
432 int instr_is_relative_branch(ppc_inst_t instr) in instr_is_relative_branch() argument
434 if (ppc_inst_val(instr) & BRANCH_ABSOLUTE) in instr_is_relative_branch()
437 return instr_is_branch_iform(instr) || instr_is_branch_bform(instr); in instr_is_relative_branch()
440 int instr_is_relative_link_branch(ppc_inst_t instr) in instr_is_relative_link_branch() argument
442 return instr_is_relative_branch(instr) && (ppc_inst_val(instr) & BRANCH_SET_LINK); in instr_is_relative_link_branch()
445 static unsigned long branch_iform_target(const u32 *instr) in branch_iform_target() argument
449 imm = ppc_inst_val(ppc_inst_read(instr)) & 0x3FFFFFC; in branch_iform_target()
455 if ((ppc_inst_val(ppc_inst_read(instr)) & BRANCH_ABSOLUTE) == 0) in branch_iform_target()
456 imm += (unsigned long)instr; in branch_iform_target()
461 static unsigned long branch_bform_target(const u32 *instr) in branch_bform_target() argument
465 imm = ppc_inst_val(ppc_inst_read(instr)) & 0xFFFC; in branch_bform_target()
471 if ((ppc_inst_val(ppc_inst_read(instr)) & BRANCH_ABSOLUTE) == 0) in branch_bform_target()
472 imm += (unsigned long)instr; in branch_bform_target()
477 unsigned long branch_target(const u32 *instr) in branch_target() argument
479 if (instr_is_branch_iform(ppc_inst_read(instr))) in branch_target()
480 return branch_iform_target(instr); in branch_target()
481 else if (instr_is_branch_bform(ppc_inst_read(instr))) in branch_target()
482 return branch_bform_target(instr); in branch_target()
487 int translate_branch(ppc_inst_t *instr, const u32 *dest, const u32 *src) in translate_branch() argument
493 return create_branch(instr, dest, target, in translate_branch()
496 return create_cond_branch(instr, dest, target, in translate_branch()