Lines Matching refs:kcb
85 static void save_previous_kprobe(struct kprobe_ctlblk *kcb) in save_previous_kprobe() argument
87 kcb->prev_kprobe.kp = kprobe_running(); in save_previous_kprobe()
88 kcb->prev_kprobe.status = kcb->kprobe_status; in save_previous_kprobe()
92 static void restore_previous_kprobe(struct kprobe_ctlblk *kcb) in restore_previous_kprobe() argument
94 __this_cpu_write(current_kprobe, kcb->prev_kprobe.kp); in restore_previous_kprobe()
95 kcb->kprobe_status = kcb->prev_kprobe.status; in restore_previous_kprobe()
113 static void save_local_irqflag(struct kprobe_ctlblk *kcb, in save_local_irqflag() argument
116 kcb->saved_status = regs->csr_prmd; in save_local_irqflag()
121 static void restore_local_irqflag(struct kprobe_ctlblk *kcb, in restore_local_irqflag() argument
124 regs->csr_prmd = kcb->saved_status; in restore_local_irqflag()
128 static void post_kprobe_handler(struct kprobe *cur, struct kprobe_ctlblk *kcb, in post_kprobe_handler() argument
136 if (kcb->kprobe_status == KPROBE_REENTER) { in post_kprobe_handler()
137 restore_previous_kprobe(kcb); in post_kprobe_handler()
146 kcb->kprobe_status = KPROBE_HIT_SSDONE; in post_kprobe_handler()
156 struct kprobe_ctlblk *kcb, int reenter) in setup_singlestep() argument
161 save_previous_kprobe(kcb); in setup_singlestep()
163 kcb->kprobe_status = KPROBE_REENTER; in setup_singlestep()
165 kcb->kprobe_status = KPROBE_HIT_SS; in setup_singlestep()
170 save_local_irqflag(kcb, regs); in setup_singlestep()
178 post_kprobe_handler(p, kcb, regs); in setup_singlestep()
184 struct kprobe_ctlblk *kcb) in reenter_kprobe() argument
186 switch (kcb->kprobe_status) { in reenter_kprobe()
191 setup_singlestep(p, regs, kcb, 1); in reenter_kprobe()
209 struct kprobe_ctlblk *kcb; in kprobe_breakpoint_handler() local
218 kcb = get_kprobe_ctlblk(); in kprobe_breakpoint_handler()
224 if (reenter_kprobe(p, regs, kcb)) in kprobe_breakpoint_handler()
229 kcb->kprobe_status = KPROBE_HIT_ACTIVE; in kprobe_breakpoint_handler()
242 setup_singlestep(p, regs, kcb, 0); in kprobe_breakpoint_handler()
273 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); in kprobe_singlestep_handler() local
276 if (cur && (kcb->kprobe_status & (KPROBE_HIT_SS | KPROBE_REENTER)) && in kprobe_singlestep_handler()
278 restore_local_irqflag(kcb, regs); in kprobe_singlestep_handler()
279 post_kprobe_handler(cur, kcb, regs); in kprobe_singlestep_handler()
291 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); in kprobe_fault_handler() local
293 switch (kcb->kprobe_status) { in kprobe_fault_handler()
306 if (kcb->kprobe_status == KPROBE_REENTER) { in kprobe_fault_handler()
307 restore_previous_kprobe(kcb); in kprobe_fault_handler()
309 restore_local_irqflag(kcb, regs); in kprobe_fault_handler()