Lines Matching refs:kcb
176 static void enable_singlestep(struct kprobe_ctlblk *kcb, in enable_singlestep() argument
188 __ctl_store(kcb->kprobe_saved_ctl, 9, 11); in enable_singlestep()
189 kcb->kprobe_saved_imask = regs->psw.mask & in enable_singlestep()
200 static void disable_singlestep(struct kprobe_ctlblk *kcb, in disable_singlestep() argument
205 __ctl_load(kcb->kprobe_saved_ctl, 9, 11); in disable_singlestep()
207 regs->psw.mask |= kcb->kprobe_saved_imask; in disable_singlestep()
217 static void push_kprobe(struct kprobe_ctlblk *kcb, struct kprobe *p) in push_kprobe() argument
219 kcb->prev_kprobe.kp = __this_cpu_read(current_kprobe); in push_kprobe()
220 kcb->prev_kprobe.status = kcb->kprobe_status; in push_kprobe()
230 static void pop_kprobe(struct kprobe_ctlblk *kcb) in pop_kprobe() argument
232 __this_cpu_write(current_kprobe, kcb->prev_kprobe.kp); in pop_kprobe()
233 kcb->kprobe_status = kcb->prev_kprobe.status; in pop_kprobe()
247 static void kprobe_reenter_check(struct kprobe_ctlblk *kcb, struct kprobe *p) in kprobe_reenter_check() argument
249 switch (kcb->kprobe_status) { in kprobe_reenter_check()
271 struct kprobe_ctlblk *kcb; in kprobe_handler() local
280 kcb = get_kprobe_ctlblk(); in kprobe_handler()
294 kprobe_reenter_check(kcb, p); in kprobe_handler()
295 push_kprobe(kcb, p); in kprobe_handler()
296 kcb->kprobe_status = KPROBE_REENTER; in kprobe_handler()
305 push_kprobe(kcb, p); in kprobe_handler()
306 kcb->kprobe_status = KPROBE_HIT_ACTIVE; in kprobe_handler()
308 pop_kprobe(kcb); in kprobe_handler()
312 kcb->kprobe_status = KPROBE_HIT_SS; in kprobe_handler()
314 enable_singlestep(kcb, regs, (unsigned long) p->ainsn.insn); in kprobe_handler()
364 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); in resume_execution() local
383 disable_singlestep(kcb, regs, ip); in resume_execution()
389 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); in post_kprobe_handler() local
395 if (kcb->kprobe_status != KPROBE_REENTER && p->post_handler) { in post_kprobe_handler()
396 kcb->kprobe_status = KPROBE_HIT_SSDONE; in post_kprobe_handler()
401 pop_kprobe(kcb); in post_kprobe_handler()
418 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); in kprobe_trap_handler() local
422 switch(kcb->kprobe_status) { in kprobe_trap_handler()
432 disable_singlestep(kcb, regs, (unsigned long) p->addr); in kprobe_trap_handler()
433 pop_kprobe(kcb); in kprobe_trap_handler()