Lines Matching refs:p

43 int __kprobes arch_prepare_kprobe(struct kprobe *p)  in arch_prepare_kprobe()  argument
45 kprobe_opcode_t opcode = *(kprobe_opcode_t *) (p->addr); in arch_prepare_kprobe()
50 p->opcode = opcode; in arch_prepare_kprobe()
55 void __kprobes arch_copy_kprobe(struct kprobe *p) in arch_copy_kprobe() argument
57 memcpy(p->ainsn.insn, p->addr, MAX_INSN_SIZE * sizeof(kprobe_opcode_t)); in arch_copy_kprobe()
58 p->opcode = *p->addr; in arch_copy_kprobe()
61 void __kprobes arch_arm_kprobe(struct kprobe *p) in arch_arm_kprobe() argument
63 *p->addr = BREAKPOINT_INSTRUCTION; in arch_arm_kprobe()
64 flush_icache_range((unsigned long)p->addr, in arch_arm_kprobe()
65 (unsigned long)p->addr + sizeof(kprobe_opcode_t)); in arch_arm_kprobe()
68 void __kprobes arch_disarm_kprobe(struct kprobe *p) in arch_disarm_kprobe() argument
70 *p->addr = p->opcode; in arch_disarm_kprobe()
71 flush_icache_range((unsigned long)p->addr, in arch_disarm_kprobe()
72 (unsigned long)p->addr + sizeof(kprobe_opcode_t)); in arch_disarm_kprobe()
75 int __kprobes arch_trampoline_kprobe(struct kprobe *p) in arch_trampoline_kprobe() argument
77 if (*p->addr == BREAKPOINT_INSTRUCTION) in arch_trampoline_kprobe()
91 struct kprobe *p = get_kprobe((kprobe_opcode_t *) pc + 1); in kprobe_handle_illslot() local
93 if (p != NULL) { in kprobe_handle_illslot()
96 unregister_kprobe(p); in kprobe_handle_illslot()
103 void __kprobes arch_remove_kprobe(struct kprobe *p) in arch_remove_kprobe() argument
108 arch_disarm_kprobe(p); in arch_remove_kprobe()
136 static void __kprobes set_current_kprobe(struct kprobe *p, struct pt_regs *regs, in set_current_kprobe() argument
139 __this_cpu_write(current_kprobe, p); in set_current_kprobe()
147 static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs) in prepare_singlestep() argument
151 if (p != NULL) { in prepare_singlestep()
154 arch_disarm_kprobe(p); in prepare_singlestep()
159 if (OPCODE_JSR(p->opcode) || OPCODE_JMP(p->opcode)) { in prepare_singlestep()
160 unsigned int reg_nr = ((p->opcode >> 8) & 0x000F); in prepare_singlestep()
162 } else if (OPCODE_BRA(p->opcode) || OPCODE_BSR(p->opcode)) { in prepare_singlestep()
163 unsigned long disp = (p->opcode & 0x0FFF); in prepare_singlestep()
167 } else if (OPCODE_BRAF(p->opcode) || OPCODE_BSRF(p->opcode)) { in prepare_singlestep()
168 unsigned int reg_nr = ((p->opcode >> 8) & 0x000F); in prepare_singlestep()
173 } else if (OPCODE_RTS(p->opcode)) { in prepare_singlestep()
176 } else if (OPCODE_BF(p->opcode) || OPCODE_BT(p->opcode)) { in prepare_singlestep()
177 unsigned long disp = (p->opcode & 0x00FF); in prepare_singlestep()
179 op1->addr = p->addr + 1; in prepare_singlestep()
186 } else if (OPCODE_BF_S(p->opcode) || OPCODE_BT_S(p->opcode)) { in prepare_singlestep()
187 unsigned long disp = (p->opcode & 0x00FF); in prepare_singlestep()
189 op1->addr = p->addr + 2; in prepare_singlestep()
197 op1->addr = p->addr + 1; in prepare_singlestep()
217 struct kprobe *p; in kprobe_handler() local
233 p = get_kprobe(addr); in kprobe_handler()
234 if (p) { in kprobe_handler()
236 *p->ainsn.insn == BREAKPOINT_INSTRUCTION) { in kprobe_handler()
246 set_current_kprobe(p, regs, kcb); in kprobe_handler()
247 kprobes_inc_nmissed_count(p); in kprobe_handler()
248 prepare_singlestep(p, regs); in kprobe_handler()
252 p = __this_cpu_read(current_kprobe); in kprobe_handler()
253 if (p->break_handler && p->break_handler(p, regs)) { in kprobe_handler()
260 p = get_kprobe(addr); in kprobe_handler()
261 if (!p) { in kprobe_handler()
277 set_current_kprobe(p, regs, kcb); in kprobe_handler()
280 if (p->pre_handler && p->pre_handler(p, regs)) in kprobe_handler()
285 prepare_singlestep(p, regs); in kprobe_handler()
309 int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs) in trampoline_probe_handler() argument
376 struct kprobe *p = NULL; in post_kprobe_handler() local
386 p = this_cpu_ptr(&saved_next_opcode); in post_kprobe_handler()
387 if (p->addr) { in post_kprobe_handler()
388 arch_disarm_kprobe(p); in post_kprobe_handler()
389 p->addr = NULL; in post_kprobe_handler()
390 p->opcode = 0; in post_kprobe_handler()
395 p = get_kprobe(addr); in post_kprobe_handler()
396 arch_arm_kprobe(p); in post_kprobe_handler()
398 p = this_cpu_ptr(&saved_next_opcode2); in post_kprobe_handler()
399 if (p->addr) { in post_kprobe_handler()
400 arch_disarm_kprobe(p); in post_kprobe_handler()
401 p->addr = NULL; in post_kprobe_handler()
402 p->opcode = 0; in post_kprobe_handler()
489 struct kprobe *p = NULL; in kprobe_exceptions_notify() local
505 p = get_kprobe(addr); in kprobe_exceptions_notify()
514 p = __this_cpu_read(current_kprobe); in kprobe_exceptions_notify()
515 if (p->break_handler && in kprobe_exceptions_notify()
516 p->break_handler(p, args->regs)) in kprobe_exceptions_notify()
526 int __kprobes setjmp_pre_handler(struct kprobe *p, struct pt_regs *regs) in setjmp_pre_handler() argument
528 struct jprobe *jp = container_of(p, struct jprobe, kp); in setjmp_pre_handler()
556 int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs) in longjmp_break_handler() argument