Lines Matching refs:regs

127 static unsigned find_nextpc(struct pt_regs *regs, int *flags)  in find_nextpc()  argument
138 pc = (u8 *) regs->pc; in find_nextpc()
139 sp = (u8 *) (regs + 1); in find_nextpc()
150 if (cond_table[regs->epsw & 0xf] & (1 << (opc & 0xf))) in find_nextpc()
174 next = (u8 *)regs->mdr; in find_nextpc()
195 next = (u8 *)regs->a0; in find_nextpc()
198 next = (u8 *)regs->a1; in find_nextpc()
201 next = (u8 *)regs->a2; in find_nextpc()
204 next = (u8 *)regs->a3; in find_nextpc()
229 (cond_table[regs->epsw & 0xf] & in find_nextpc()
272 static unsigned __kprobes singlestep_branch_setup(struct pt_regs *regs) in singlestep_branch_setup() argument
277 pc = (u8 *) regs->pc; in singlestep_branch_setup()
278 sp = (u8 *) (regs + 1); in singlestep_branch_setup()
305 regs->mdr = (unsigned) next; in singlestep_branch_setup()
391 void __kprobes disarm_kprobe(struct kprobe *p, struct pt_regs *regs) in disarm_kprobe() argument
394 regs->pc = (unsigned long) p->addr; in disarm_kprobe()
402 void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs) in prepare_singlestep() argument
406 cur_kprobe_orig_pc = regs->pc; in prepare_singlestep()
408 regs->pc = (unsigned long) cur_kprobe_ss_buf; in prepare_singlestep()
410 nextpc = find_nextpc(regs, &cur_kprobe_ss_flags); in prepare_singlestep()
412 cur_kprobe_next_pc = cur_kprobe_orig_pc + (nextpc - regs->pc); in prepare_singlestep()
418 nextpc = singlestep_branch_setup(regs); in prepare_singlestep()
428 static inline int __kprobes kprobe_handler(struct pt_regs *regs) in kprobe_handler() argument
432 unsigned int *addr = (unsigned int *) regs->pc; in kprobe_handler()
443 disarm_kprobe(p, regs); in kprobe_handler()
447 if (p->break_handler && p->break_handler(p, regs)) in kprobe_handler()
471 if (p->pre_handler(p, regs)) { in kprobe_handler()
477 prepare_singlestep(p, regs); in kprobe_handler()
494 static void __kprobes resume_execution(struct kprobe *p, struct pt_regs *regs) in resume_execution() argument
498 regs->pc = cur_kprobe_orig_pc; in resume_execution()
501 *(unsigned *) regs->sp = regs->mdr = regs->pc + 5; in resume_execution()
505 *(unsigned *) regs->sp = regs->mdr = regs->pc + 7; in resume_execution()
512 regs->mdr = regs->pc + 2; in resume_execution()
513 *(unsigned *) regs->sp = regs->mdr; in resume_execution()
519 *(unsigned *) regs->sp = regs->mdr = regs->pc + 4; in resume_execution()
524 *(unsigned *) regs->sp = regs->mdr = regs->pc + 6; in resume_execution()
529 regs->pc = cur_kprobe_next_pc; in resume_execution()
533 static inline int __kprobes post_kprobe_handler(struct pt_regs *regs) in post_kprobe_handler() argument
539 cur_kprobe->post_handler(cur_kprobe, regs, 0); in post_kprobe_handler()
541 resume_execution(cur_kprobe, regs); in post_kprobe_handler()
549 int __kprobes kprobe_fault_handler(struct pt_regs *regs, int trapnr) in kprobe_fault_handler() argument
552 cur_kprobe->fault_handler(cur_kprobe, regs, trapnr)) in kprobe_fault_handler()
556 resume_execution(cur_kprobe, regs); in kprobe_fault_handler()
573 if (cur_kprobe_bp_addr != args->regs->pc) { in kprobe_exceptions_notify()
574 if (kprobe_handler(args->regs)) in kprobe_exceptions_notify()
577 if (post_kprobe_handler(args->regs)) in kprobe_exceptions_notify()
583 kprobe_fault_handler(args->regs, args->trapnr)) in kprobe_exceptions_notify()
597 int __kprobes setjmp_pre_handler(struct kprobe *p, struct pt_regs *regs) in setjmp_pre_handler() argument
601 jprobe_saved_regs_location = regs; in setjmp_pre_handler()
602 memcpy(&jprobe_saved_regs, regs, sizeof(struct pt_regs)); in setjmp_pre_handler()
608 memcpy(&jprobe_saved_stack, regs + 1, sizeof(jprobe_saved_stack)); in setjmp_pre_handler()
611 regs->pc = (unsigned long) jp->entry; in setjmp_pre_handler()
629 int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs) in longjmp_break_handler() argument
631 u8 *addr = (u8 *) regs->pc; in longjmp_break_handler()
634 if (jprobe_saved_regs_location != regs) { in longjmp_break_handler()
638 regs, jprobe_saved_regs_location); in longjmp_break_handler()
644 memcpy(regs, &jprobe_saved_regs, sizeof(struct pt_regs)); in longjmp_break_handler()
646 memcpy(regs + 1, &jprobe_saved_stack, in longjmp_break_handler()