Lines Matching refs:regs
92 static void __kprobes set_current_kprobe(struct kprobe *p, struct pt_regs *regs, in set_current_kprobe() argument
96 kcb->kprobe_orig_tnpc = regs->tnpc; in set_current_kprobe()
97 kcb->kprobe_orig_tstate_pil = (regs->tstate & TSTATE_PIL); in set_current_kprobe()
100 static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs, in prepare_singlestep() argument
103 regs->tstate |= TSTATE_PIL; in prepare_singlestep()
107 regs->tpc = (unsigned long) p->addr; in prepare_singlestep()
108 regs->tnpc = kcb->kprobe_orig_tnpc; in prepare_singlestep()
110 regs->tpc = (unsigned long) &p->ainsn.insn[0]; in prepare_singlestep()
111 regs->tnpc = (unsigned long) &p->ainsn.insn[1]; in prepare_singlestep()
115 static int __kprobes kprobe_handler(struct pt_regs *regs) in kprobe_handler() argument
118 void *addr = (void *) regs->tpc; in kprobe_handler()
133 regs->tstate = ((regs->tstate & ~TSTATE_PIL) | in kprobe_handler()
144 set_current_kprobe(p, regs, kcb); in kprobe_handler()
147 prepare_singlestep(p, regs, kcb); in kprobe_handler()
159 if (p->break_handler && p->break_handler(p, regs)) in kprobe_handler()
181 set_current_kprobe(p, regs, kcb); in kprobe_handler()
183 if (p->pre_handler && p->pre_handler(p, regs)) in kprobe_handler()
187 prepare_singlestep(p, regs, kcb); in kprobe_handler()
205 struct pt_regs *regs) in relbranch_fixup() argument
210 if (regs->tnpc == regs->tpc + 0x4UL) in relbranch_fixup()
227 return (real_pc + (regs->tnpc - ainsn_addr)); in relbranch_fixup()
233 return regs->tnpc; in relbranch_fixup()
239 static void __kprobes retpc_fixup(struct pt_regs *regs, u32 insn, in retpc_fixup() argument
246 slot = ®s->u_regs[UREG_I7]; in retpc_fixup()
254 slot = ®s->u_regs[rd]; in retpc_fixup()
261 (regs->u_regs[UREG_FP] + STACK_BIAS); in retpc_fixup()
281 struct pt_regs *regs, struct kprobe_ctlblk *kcb) in resume_execution() argument
285 regs->tnpc = relbranch_fixup(insn, p, regs); in resume_execution()
288 regs->tpc = kcb->kprobe_orig_tnpc; in resume_execution()
290 retpc_fixup(regs, insn, (unsigned long) p->addr); in resume_execution()
292 regs->tstate = ((regs->tstate & ~TSTATE_PIL) | in resume_execution()
296 static int __kprobes post_kprobe_handler(struct pt_regs *regs) in post_kprobe_handler() argument
306 cur->post_handler(cur, regs, 0); in post_kprobe_handler()
309 resume_execution(cur, regs, kcb); in post_kprobe_handler()
323 int __kprobes kprobe_fault_handler(struct pt_regs *regs, int trapnr) in kprobe_fault_handler() argument
339 regs->tpc = (unsigned long)cur->addr; in kprobe_fault_handler()
340 regs->tnpc = kcb->kprobe_orig_tnpc; in kprobe_fault_handler()
341 regs->tstate = ((regs->tstate & ~TSTATE_PIL) | in kprobe_fault_handler()
365 if (cur->fault_handler && cur->fault_handler(cur, regs, trapnr)) in kprobe_fault_handler()
373 entry = search_exception_tables(regs->tpc); in kprobe_fault_handler()
375 regs->tpc = entry->fixup; in kprobe_fault_handler()
376 regs->tnpc = regs->tpc + 4; in kprobe_fault_handler()
401 if (args->regs && user_mode(args->regs)) in kprobe_exceptions_notify()
406 if (kprobe_handler(args->regs)) in kprobe_exceptions_notify()
410 if (post_kprobe_handler(args->regs)) in kprobe_exceptions_notify()
420 struct pt_regs *regs) in kprobe_trap() argument
426 if (user_mode(regs)) { in kprobe_trap()
428 bad_trap(regs, trap_level); in kprobe_trap()
437 regs, 0, trap_level, SIGTRAP) != NOTIFY_STOP) in kprobe_trap()
438 bad_trap(regs, trap_level); in kprobe_trap()
444 int __kprobes setjmp_pre_handler(struct kprobe *p, struct pt_regs *regs) in setjmp_pre_handler() argument
449 memcpy(&(kcb->jprobe_saved_regs), regs, sizeof(*regs)); in setjmp_pre_handler()
451 regs->tpc = (unsigned long) jp->entry; in setjmp_pre_handler()
452 regs->tnpc = ((unsigned long) jp->entry) + 0x4UL; in setjmp_pre_handler()
453 regs->tstate |= TSTATE_PIL; in setjmp_pre_handler()
477 int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs) in longjmp_break_handler() argument
479 u32 *addr = (u32 *) regs->tpc; in longjmp_break_handler()
483 memcpy(regs, &(kcb->jprobe_saved_regs), sizeof(*regs)); in longjmp_break_handler()
503 struct pt_regs *regs) in arch_prepare_kretprobe() argument
505 ri->ret_addr = (kprobe_opcode_t *)(regs->u_regs[UREG_RETPC] + 8); in arch_prepare_kretprobe()
508 regs->u_regs[UREG_RETPC] = in arch_prepare_kretprobe()
516 struct pt_regs *regs) in trampoline_probe_handler() argument
546 ri->rp->handler(ri, regs); in trampoline_probe_handler()
561 regs->tpc = orig_ret_address; in trampoline_probe_handler()
562 regs->tnpc = orig_ret_address + 4; in trampoline_probe_handler()