Lines Matching refs:p
55 int __kprobes arch_prepare_kprobe(struct kprobe *p) in arch_prepare_kprobe() argument
59 unsigned long addr = (unsigned long)p->addr; in arch_prepare_kprobe()
88 insn = __mem_to_opcode_arm(*p->addr); in arch_prepare_kprobe()
94 p->opcode = insn; in arch_prepare_kprobe()
95 p->ainsn.insn = tmp_insn; in arch_prepare_kprobe()
97 switch ((*decode_insn)(insn, &p->ainsn, true, actions, checkers)) { in arch_prepare_kprobe()
102 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe()
103 if (!p->ainsn.insn) in arch_prepare_kprobe()
106 p->ainsn.insn[is] = tmp_insn[is]; in arch_prepare_kprobe()
107 flush_insns(p->ainsn.insn, in arch_prepare_kprobe()
108 sizeof(p->ainsn.insn[0]) * MAX_INSN_SIZE); in arch_prepare_kprobe()
109 p->ainsn.insn_fn = (probes_insn_fn_t *) in arch_prepare_kprobe()
110 ((uintptr_t)p->ainsn.insn | thumb); in arch_prepare_kprobe()
114 p->ainsn.insn = NULL; in arch_prepare_kprobe()
123 if ((p->ainsn.stack_space < 0) || in arch_prepare_kprobe()
124 (p->ainsn.stack_space > MAX_STACK_SIZE)) in arch_prepare_kprobe()
130 void __kprobes arch_arm_kprobe(struct kprobe *p) in arch_arm_kprobe() argument
137 addr = (void *)((uintptr_t)p->addr & ~1); in arch_arm_kprobe()
139 if (is_wide_instruction(p->opcode)) in arch_arm_kprobe()
144 kprobe_opcode_t insn = p->opcode; in arch_arm_kprobe()
146 addr = p->addr; in arch_arm_kprobe()
173 struct patch *p = data; in __kprobes_remove_breakpoint() local
174 __patch_text(p->addr, p->insn); in __kprobes_remove_breakpoint()
180 struct patch p = { in kprobes_remove_breakpoint() local
184 stop_machine(__kprobes_remove_breakpoint, &p, cpu_online_mask); in kprobes_remove_breakpoint()
187 void __kprobes arch_disarm_kprobe(struct kprobe *p) in arch_disarm_kprobe() argument
189 kprobes_remove_breakpoint((void *)((uintptr_t)p->addr & ~1), in arch_disarm_kprobe()
190 p->opcode); in arch_disarm_kprobe()
193 void __kprobes arch_remove_kprobe(struct kprobe *p) in arch_remove_kprobe() argument
195 if (p->ainsn.insn) { in arch_remove_kprobe()
196 free_insn_slot(p->ainsn.insn, 0); in arch_remove_kprobe()
197 p->ainsn.insn = NULL; in arch_remove_kprobe()
213 static void __kprobes set_current_kprobe(struct kprobe *p) in set_current_kprobe() argument
215 __this_cpu_write(current_kprobe, p); in set_current_kprobe()
219 singlestep_skip(struct kprobe *p, struct pt_regs *regs) in singlestep_skip() argument
223 if (is_wide_instruction(p->opcode)) in singlestep_skip()
233 singlestep(struct kprobe *p, struct pt_regs *regs, struct kprobe_ctlblk *kcb) in singlestep() argument
235 p->ainsn.insn_singlestep(p->opcode, &p->ainsn, regs); in singlestep()
247 struct kprobe *p, *cur; in kprobe_handler() local
259 p = get_kprobe((kprobe_opcode_t *)(regs->ARM_pc | 1)); in kprobe_handler()
260 if (!p) in kprobe_handler()
261 p = get_kprobe((kprobe_opcode_t *)regs->ARM_pc); in kprobe_handler()
264 p = get_kprobe((kprobe_opcode_t *)regs->ARM_pc); in kprobe_handler()
267 if (p) { in kprobe_handler()
274 kprobes_inc_nmissed_count(p); in kprobe_handler()
276 set_current_kprobe(p); in kprobe_handler()
278 singlestep(p, regs, kcb); in kprobe_handler()
285 } else if (p->ainsn.insn_check_cc(regs->ARM_cpsr)) { in kprobe_handler()
287 set_current_kprobe(p); in kprobe_handler()
297 if (!p->pre_handler || !p->pre_handler(p, regs)) { in kprobe_handler()
299 singlestep(p, regs, kcb); in kprobe_handler()
300 if (p->post_handler) { in kprobe_handler()
302 p->post_handler(p, regs, 0); in kprobe_handler()
312 singlestep_skip(p, regs); in kprobe_handler()
497 int __kprobes setjmp_pre_handler(struct kprobe *p, struct pt_regs *regs) in setjmp_pre_handler() argument
499 struct jprobe *jp = container_of(p, struct jprobe, kp); in setjmp_pre_handler()
580 int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs) in longjmp_break_handler() argument
585 struct jprobe *jp = container_of(p, struct jprobe, kp); in longjmp_break_handler()
608 int __kprobes arch_trampoline_kprobe(struct kprobe *p) in arch_trampoline_kprobe() argument