Lines Matching refs:regs

234 static void set_current_kprobe(struct kprobe *p, struct pt_regs *regs,  in set_current_kprobe()  argument
238 kcb->kprobe_saved_SR = kcb->kprobe_old_SR = (regs->cp0_status & ST0_IE); in set_current_kprobe()
239 kcb->kprobe_saved_epc = regs->cp0_epc; in set_current_kprobe()
255 static int evaluate_branch_instruction(struct kprobe *p, struct pt_regs *regs, in evaluate_branch_instruction() argument
262 epc = regs->cp0_epc; in evaluate_branch_instruction()
271 ret = __compute_return_epc_for_insn(regs, insn); in evaluate_branch_instruction()
278 kcb->target_epc = regs->cp0_epc; in evaluate_branch_instruction()
289 static void prepare_singlestep(struct kprobe *p, struct pt_regs *regs, in prepare_singlestep() argument
294 regs->cp0_status &= ~ST0_IE; in prepare_singlestep()
299 regs->cp0_epc = (unsigned long)p->addr; in prepare_singlestep()
301 ret = evaluate_branch_instruction(p, regs, kcb); in prepare_singlestep()
307 regs->cp0_epc = (unsigned long)&p->ainsn.insn[0]; in prepare_singlestep()
323 struct pt_regs *regs, in resume_execution() argument
327 regs->cp0_epc = kcb->target_epc; in resume_execution()
330 regs->cp0_epc = orig_epc + 4; in resume_execution()
334 static int __kprobes kprobe_handler(struct pt_regs *regs) in kprobe_handler() argument
341 addr = (kprobe_opcode_t *) regs->cp0_epc; in kprobe_handler()
356 regs->cp0_status &= ~ST0_IE; in kprobe_handler()
357 regs->cp0_status |= kcb->kprobe_saved_SR; in kprobe_handler()
368 set_current_kprobe(p, regs, kcb); in kprobe_handler()
370 prepare_singlestep(p, regs, kcb); in kprobe_handler()
373 resume_execution(p, regs, kcb); in kprobe_handler()
389 if (p->break_handler && p->break_handler(p, regs)) in kprobe_handler()
411 set_current_kprobe(p, regs, kcb); in kprobe_handler()
414 if (p->pre_handler && p->pre_handler(p, regs)) { in kprobe_handler()
420 prepare_singlestep(p, regs, kcb); in kprobe_handler()
424 p->post_handler(p, regs, 0); in kprobe_handler()
425 resume_execution(p, regs, kcb); in kprobe_handler()
438 static inline int post_kprobe_handler(struct pt_regs *regs) in post_kprobe_handler() argument
448 cur->post_handler(cur, regs, 0); in post_kprobe_handler()
451 resume_execution(cur, regs, kcb); in post_kprobe_handler()
453 regs->cp0_status |= kcb->kprobe_saved_SR; in post_kprobe_handler()
467 static inline int kprobe_fault_handler(struct pt_regs *regs, int trapnr) in kprobe_fault_handler() argument
472 if (cur->fault_handler && cur->fault_handler(cur, regs, trapnr)) in kprobe_fault_handler()
476 resume_execution(cur, regs, kcb); in kprobe_fault_handler()
477 regs->cp0_status |= kcb->kprobe_old_SR; in kprobe_fault_handler()
497 if (kprobe_handler(args->regs)) in kprobe_exceptions_notify()
501 if (post_kprobe_handler(args->regs)) in kprobe_exceptions_notify()
510 && kprobe_fault_handler(args->regs, args->trapnr)) in kprobe_exceptions_notify()
520 int __kprobes setjmp_pre_handler(struct kprobe *p, struct pt_regs *regs) in setjmp_pre_handler() argument
525 kcb->jprobe_saved_regs = *regs; in setjmp_pre_handler()
526 kcb->jprobe_saved_sp = regs->regs[29]; in setjmp_pre_handler()
531 regs->cp0_epc = (unsigned long)(jp->entry); in setjmp_pre_handler()
549 int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs) in longjmp_break_handler() argument
553 if (regs->cp0_epc >= (unsigned long)jprobe_return && in longjmp_break_handler()
554 regs->cp0_epc <= (unsigned long)jprobe_return_end) { in longjmp_break_handler()
555 *regs = kcb->jprobe_saved_regs; in longjmp_break_handler()
588 struct pt_regs *regs) in arch_prepare_kretprobe() argument
590 ri->ret_addr = (kprobe_opcode_t *) regs->regs[31]; in arch_prepare_kretprobe()
593 regs->regs[31] = (unsigned long)kretprobe_trampoline; in arch_prepare_kretprobe()
600 struct pt_regs *regs) in trampoline_probe_handler() argument
630 ri->rp->handler(ri, regs); in trampoline_probe_handler()
645 instruction_pointer(regs) = orig_ret_address; in trampoline_probe_handler()