Lines Matching refs:kcb
223 static void enable_singlestep(struct kprobe_ctlblk *kcb, in enable_singlestep() argument
235 __ctl_store(kcb->kprobe_saved_ctl, 9, 11); in enable_singlestep()
236 kcb->kprobe_saved_imask = regs->psw.mask & in enable_singlestep()
247 static void disable_singlestep(struct kprobe_ctlblk *kcb, in disable_singlestep() argument
252 __ctl_load(kcb->kprobe_saved_ctl, 9, 11); in disable_singlestep()
254 regs->psw.mask |= kcb->kprobe_saved_imask; in disable_singlestep()
264 static void push_kprobe(struct kprobe_ctlblk *kcb, struct kprobe *p) in push_kprobe() argument
266 kcb->prev_kprobe.kp = __this_cpu_read(current_kprobe); in push_kprobe()
267 kcb->prev_kprobe.status = kcb->kprobe_status; in push_kprobe()
277 static void pop_kprobe(struct kprobe_ctlblk *kcb) in pop_kprobe() argument
279 __this_cpu_write(current_kprobe, kcb->prev_kprobe.kp); in pop_kprobe()
280 kcb->kprobe_status = kcb->prev_kprobe.status; in pop_kprobe()
281 kcb->prev_kprobe.kp = NULL; in pop_kprobe()
285 static void kprobe_reenter_check(struct kprobe_ctlblk *kcb, struct kprobe *p) in kprobe_reenter_check() argument
287 switch (kcb->kprobe_status) { in kprobe_reenter_check()
309 struct kprobe_ctlblk *kcb; in kprobe_handler() local
318 kcb = get_kprobe_ctlblk(); in kprobe_handler()
332 kprobe_reenter_check(kcb, p); in kprobe_handler()
333 push_kprobe(kcb, p); in kprobe_handler()
334 kcb->kprobe_status = KPROBE_REENTER; in kprobe_handler()
343 push_kprobe(kcb, p); in kprobe_handler()
344 kcb->kprobe_status = KPROBE_HIT_ACTIVE; in kprobe_handler()
346 pop_kprobe(kcb); in kprobe_handler()
350 kcb->kprobe_status = KPROBE_HIT_SS; in kprobe_handler()
352 enable_singlestep(kcb, regs, (unsigned long) p->ainsn.insn); in kprobe_handler()
375 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); in resume_execution() local
394 disable_singlestep(kcb, regs, ip); in resume_execution()
400 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); in post_kprobe_handler() local
407 if (kcb->kprobe_status != KPROBE_REENTER && p->post_handler) { in post_kprobe_handler()
408 kcb->kprobe_status = KPROBE_HIT_SSDONE; in post_kprobe_handler()
411 pop_kprobe(kcb); in post_kprobe_handler()
428 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); in kprobe_trap_handler() local
431 switch(kcb->kprobe_status) { in kprobe_trap_handler()
441 disable_singlestep(kcb, regs, (unsigned long) p->addr); in kprobe_trap_handler()
442 pop_kprobe(kcb); in kprobe_trap_handler()