Lines Matching refs:p

141 int __kprobes arch_prepare_kprobe(struct kprobe *p)  in arch_prepare_kprobe()  argument
147 insn = p->addr[0]; in arch_prepare_kprobe()
156 if ((probe_kernel_read(&prev_insn, p->addr - 1, in arch_prepare_kprobe()
165 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe()
166 if (!p->ainsn.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()
190 p->opcode = *p->addr; in arch_prepare_kprobe()
196 void __kprobes arch_arm_kprobe(struct kprobe *p) in arch_arm_kprobe() argument
198 *p->addr = breakpoint_insn; in arch_arm_kprobe()
199 flush_insn_slot(p); in arch_arm_kprobe()
202 void __kprobes arch_disarm_kprobe(struct kprobe *p) in arch_disarm_kprobe() argument
204 *p->addr = p->opcode; in arch_disarm_kprobe()
205 flush_insn_slot(p); in arch_disarm_kprobe()
208 void __kprobes arch_remove_kprobe(struct kprobe *p) in arch_remove_kprobe() argument
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()
234 static void set_current_kprobe(struct kprobe *p, struct pt_regs *regs, in set_current_kprobe() argument
237 __this_cpu_write(current_kprobe, p); in set_current_kprobe()
255 static int evaluate_branch_instruction(struct kprobe *p, struct pt_regs *regs, in evaluate_branch_instruction() argument
258 union mips_instruction insn = p->opcode; in evaluate_branch_instruction()
266 if (p->ainsn.insn->word == 0) in evaluate_branch_instruction()
289 static void prepare_singlestep(struct kprobe *p, struct pt_regs *regs, in prepare_singlestep() argument
297 if (p->opcode.word == breakpoint_insn.word || in prepare_singlestep()
298 p->opcode.word == breakpoint2_insn.word) in prepare_singlestep()
299 regs->cp0_epc = (unsigned long)p->addr; in prepare_singlestep()
300 else if (insn_has_delayslot(p->opcode)) { in prepare_singlestep()
301 ret = evaluate_branch_instruction(p, regs, kcb); in prepare_singlestep()
307 regs->cp0_epc = (unsigned long)&p->ainsn.insn[0]; in prepare_singlestep()
322 static void __kprobes resume_execution(struct kprobe *p, in resume_execution() argument
326 if (insn_has_delayslot(p->opcode)) in resume_execution()
336 struct kprobe *p; in kprobe_handler() local
352 p = get_kprobe(addr); in kprobe_handler()
353 if (p) { in kprobe_handler()
355 p->ainsn.insn->word == breakpoint_insn.word) { in kprobe_handler()
368 set_current_kprobe(p, regs, kcb); in kprobe_handler()
369 kprobes_inc_nmissed_count(p); in kprobe_handler()
370 prepare_singlestep(p, regs, kcb); in kprobe_handler()
373 resume_execution(p, regs, kcb); in kprobe_handler()
388 p = __this_cpu_read(current_kprobe); in kprobe_handler()
389 if (p->break_handler && p->break_handler(p, regs)) in kprobe_handler()
395 p = get_kprobe(addr); in kprobe_handler()
396 if (!p) { in kprobe_handler()
411 set_current_kprobe(p, regs, kcb); in kprobe_handler()
414 if (p->pre_handler && p->pre_handler(p, regs)) { in kprobe_handler()
420 prepare_singlestep(p, regs, kcb); in kprobe_handler()
423 if (p->post_handler) in kprobe_handler()
424 p->post_handler(p, regs, 0); in kprobe_handler()
425 resume_execution(p, regs, kcb); in kprobe_handler()
520 int __kprobes setjmp_pre_handler(struct kprobe *p, struct pt_regs *regs) in setjmp_pre_handler() argument
522 struct jprobe *jp = container_of(p, struct jprobe, kp); in setjmp_pre_handler()
549 int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs) in longjmp_break_handler() argument
599 static int __kprobes trampoline_probe_handler(struct kprobe *p, in trampoline_probe_handler() argument
663 int __kprobes arch_trampoline_kprobe(struct kprobe *p) in arch_trampoline_kprobe() argument
665 if (p->addr == (kprobe_opcode_t *)kretprobe_trampoline) in arch_trampoline_kprobe()