Lines Matching refs:insn
56 static int __kprobes insn_has_delayslot(union mips_instruction insn) in insn_has_delayslot() argument
58 switch (insn.i_format.opcode) { in insn_has_delayslot()
65 switch (insn.r_format.func) { in insn_has_delayslot()
124 static int __kprobes insn_has_ll_or_sc(union mips_instruction insn) in insn_has_ll_or_sc() argument
128 switch (insn.i_format.opcode) { in insn_has_ll_or_sc()
143 union mips_instruction insn; in arch_prepare_kprobe() local
147 insn = p->addr[0]; in arch_prepare_kprobe()
149 if (insn_has_ll_or_sc(insn)) { in arch_prepare_kprobe()
165 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe()
166 if (!p->ainsn.insn) { in arch_prepare_kprobe()
184 if (insn_has_delayslot(insn)) in arch_prepare_kprobe()
185 memcpy(&p->ainsn.insn[0], p->addr + 1, sizeof(kprobe_opcode_t)); in arch_prepare_kprobe()
187 memcpy(&p->ainsn.insn[0], p->addr, sizeof(kprobe_opcode_t)); in arch_prepare_kprobe()
189 p->ainsn.insn[1] = breakpoint2_insn; in arch_prepare_kprobe()
210 if (p->ainsn.insn) { in arch_remove_kprobe()
211 free_insn_slot(p->ainsn.insn, 0); in arch_remove_kprobe()
212 p->ainsn.insn = NULL; in arch_remove_kprobe()
258 union mips_instruction insn = p->opcode; in evaluate_branch_instruction() local
266 if (p->ainsn.insn->word == 0) in evaluate_branch_instruction()
271 ret = __compute_return_epc_for_insn(regs, insn); in evaluate_branch_instruction()
307 regs->cp0_epc = (unsigned long)&p->ainsn.insn[0]; in prepare_singlestep()
355 p->ainsn.insn->word == breakpoint_insn.word) { in kprobe_handler()