Lines Matching refs:p

26 int __kprobes arch_prepare_kprobe(struct kprobe *p)  in arch_prepare_kprobe()  argument
29 if ((unsigned long)p->addr & 0x01) in arch_prepare_kprobe()
34 p->ainsn.is_short = is_short_instr((unsigned long)p->addr); in arch_prepare_kprobe()
35 p->opcode = *p->addr; in arch_prepare_kprobe()
40 void __kprobes arch_arm_kprobe(struct kprobe *p) in arch_arm_kprobe() argument
42 *p->addr = UNIMP_S_INSTRUCTION; in arch_arm_kprobe()
44 flush_icache_range((unsigned long)p->addr, in arch_arm_kprobe()
45 (unsigned long)p->addr + sizeof(kprobe_opcode_t)); in arch_arm_kprobe()
48 void __kprobes arch_disarm_kprobe(struct kprobe *p) in arch_disarm_kprobe() argument
50 *p->addr = p->opcode; in arch_disarm_kprobe()
52 flush_icache_range((unsigned long)p->addr, in arch_disarm_kprobe()
53 (unsigned long)p->addr + sizeof(kprobe_opcode_t)); in arch_disarm_kprobe()
56 void __kprobes arch_remove_kprobe(struct kprobe *p) in arch_remove_kprobe() argument
58 arch_disarm_kprobe(p); in arch_remove_kprobe()
61 if (p->ainsn.t1_addr) { in arch_remove_kprobe()
62 *(p->ainsn.t1_addr) = p->ainsn.t1_opcode; in arch_remove_kprobe()
64 flush_icache_range((unsigned long)p->ainsn.t1_addr, in arch_remove_kprobe()
65 (unsigned long)p->ainsn.t1_addr + in arch_remove_kprobe()
68 p->ainsn.t1_addr = NULL; in arch_remove_kprobe()
71 if (p->ainsn.t2_addr) { in arch_remove_kprobe()
72 *(p->ainsn.t2_addr) = p->ainsn.t2_opcode; in arch_remove_kprobe()
74 flush_icache_range((unsigned long)p->ainsn.t2_addr, in arch_remove_kprobe()
75 (unsigned long)p->ainsn.t2_addr + in arch_remove_kprobe()
78 p->ainsn.t2_addr = NULL; in arch_remove_kprobe()
94 static inline void __kprobes set_current_kprobe(struct kprobe *p) in set_current_kprobe() argument
96 __this_cpu_write(current_kprobe, p); in set_current_kprobe()
99 static void __kprobes resume_execution(struct kprobe *p, unsigned long addr, in resume_execution() argument
105 if (p->ainsn.t1_addr) { in resume_execution()
106 *(p->ainsn.t1_addr) = p->ainsn.t1_opcode; in resume_execution()
108 flush_icache_range((unsigned long)p->ainsn.t1_addr, in resume_execution()
109 (unsigned long)p->ainsn.t1_addr + in resume_execution()
112 p->ainsn.t1_addr = NULL; in resume_execution()
115 if (p->ainsn.t2_addr) { in resume_execution()
116 *(p->ainsn.t2_addr) = p->ainsn.t2_opcode; in resume_execution()
118 flush_icache_range((unsigned long)p->ainsn.t2_addr, in resume_execution()
119 (unsigned long)p->ainsn.t2_addr + in resume_execution()
122 p->ainsn.t2_addr = NULL; in resume_execution()
128 static void __kprobes setup_singlestep(struct kprobe *p, struct pt_regs *regs) in setup_singlestep() argument
139 *(p->addr) = p->opcode; in setup_singlestep()
141 flush_icache_range((unsigned long)p->addr, in setup_singlestep()
142 (unsigned long)p->addr + sizeof(kprobe_opcode_t)); in setup_singlestep()
156 if (!p->ainsn.is_short) { in setup_singlestep()
173 disasm_next_pc((unsigned long)p->addr, regs, in setup_singlestep()
177 p->ainsn.t1_addr = (kprobe_opcode_t *) next_pc; in setup_singlestep()
178 p->ainsn.t1_opcode = *(p->ainsn.t1_addr); in setup_singlestep()
179 *(p->ainsn.t1_addr) = TRAP_S_2_INSTRUCTION; in setup_singlestep()
181 flush_icache_range((unsigned long)p->ainsn.t1_addr, in setup_singlestep()
182 (unsigned long)p->ainsn.t1_addr + in setup_singlestep()
186 p->ainsn.t2_addr = (kprobe_opcode_t *) tgt_if_br; in setup_singlestep()
187 p->ainsn.t2_opcode = *(p->ainsn.t2_addr); in setup_singlestep()
188 *(p->ainsn.t2_addr) = TRAP_S_2_INSTRUCTION; in setup_singlestep()
190 flush_icache_range((unsigned long)p->ainsn.t2_addr, in setup_singlestep()
191 (unsigned long)p->ainsn.t2_addr + in setup_singlestep()
198 struct kprobe *p; in arc_kprobe_handler() local
204 p = get_kprobe((unsigned long *)addr); in arc_kprobe_handler()
206 if (p) { in arc_kprobe_handler()
216 set_current_kprobe(p); in arc_kprobe_handler()
217 kprobes_inc_nmissed_count(p); in arc_kprobe_handler()
218 setup_singlestep(p, regs); in arc_kprobe_handler()
223 set_current_kprobe(p); in arc_kprobe_handler()
233 if (!p->pre_handler || !p->pre_handler(p, regs)) { in arc_kprobe_handler()
234 setup_singlestep(p, regs); in arc_kprobe_handler()
240 p = __this_cpu_read(current_kprobe); in arc_kprobe_handler()
241 if (p->break_handler && p->break_handler(p, regs)) { in arc_kprobe_handler()
242 setup_singlestep(p, regs); in arc_kprobe_handler()
389 int __kprobes setjmp_pre_handler(struct kprobe *p, struct pt_regs *regs) in setjmp_pre_handler() argument
391 struct jprobe *jp = container_of(p, struct jprobe, kp); in setjmp_pre_handler()
408 int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs) in longjmp_break_handler() argument
437 static int __kprobes trampoline_probe_handler(struct kprobe *p, in trampoline_probe_handler() argument
512 int __kprobes arch_trampoline_kprobe(struct kprobe *p) in arch_trampoline_kprobe() argument
514 if (p->addr == (kprobe_opcode_t *) &kretprobe_trampoline) in arch_trampoline_kprobe()