Lines Matching refs:regs
42 struct pt_regs *regs)
58 die_if_kernel("Oops", regs);
61 static void __kprobes bad_kernel_pc(struct pt_regs *regs, unsigned long vaddr)
64 regs->tpc);
65 printk(KERN_CRIT "OOPS: RPC [%016lx]\n", regs->u_regs[15]);
66 printk("OOPS: RPC <%pS>\n", (void *) regs->u_regs[15]);
69 unhandled_fault(regs->tpc, current, regs);
140 show_signal_msg(struct pt_regs *regs, int sig, int code,
152 (void *)regs->tpc, (void *)regs->u_regs[UREG_I7],
153 (void *)regs->u_regs[UREG_FP], code);
155 print_vma_addr(KERN_CONT " in ", regs->tpc);
160 static void do_fault_siginfo(int code, int sig, struct pt_regs *regs,
167 addr = regs->tpc;
174 addr = compute_effective_address(regs, insn, 0);
180 show_signal_msg(regs, sig, code, addr, current);
185 static unsigned int get_fault_insn(struct pt_regs *regs, unsigned int insn)
188 if (!regs->tpc || (regs->tpc & 0x3))
190 if (regs->tstate & TSTATE_PRIV) {
191 insn = *(unsigned int *) regs->tpc;
193 insn = get_user_insn(regs->tpc);
199 static void __kprobes do_kernel_fault(struct pt_regs *regs, int si_code,
205 if ((!insn) && (regs->tstate & TSTATE_PRIV))
216 asi = (regs->tstate >> 24);
221 handle_ldf_stq(insn, regs);
227 handle_ld_nf(insn, regs);
234 if (regs->tstate & TSTATE_PRIV) {
237 entry = search_exception_tables(regs->tpc);
239 regs->tpc = entry->fixup;
240 regs->tnpc = regs->tpc + 4;
247 do_fault_siginfo(si_code, SIGSEGV, regs, address, insn, fault_code);
252 unhandled_fault (address, current, regs);
255 static void noinline __kprobes bogus_32bit_fault_tpc(struct pt_regs *regs)
263 regs->tpc);
264 show_regs(regs);
267 asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
280 if (kprobe_page_fault(regs, 0))
291 if (!(regs->tstate & TSTATE_PRIV)) {
292 if (unlikely((regs->tpc >> 32) != 0)) {
293 bogus_32bit_fault_tpc(regs);
301 if (regs->tstate & TSTATE_PRIV) {
302 unsigned long tpc = regs->tpc;
309 bad_kernel_pc(regs, address);
322 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
325 if ((regs->tstate & TSTATE_PRIV) &&
326 !search_exception_tables(regs->tpc)) {
327 insn = get_fault_insn(regs, insn);
353 insn = get_fault_insn(regs, 0);
377 insn = get_fault_insn(regs, insn);
382 asi = (regs->tstate >> 24);
403 WARN(address != regs->tpc,
404 "address (%lx) != regs->tpc (%lx)\n", address, regs->tpc);
405 WARN_ON(regs->tstate & TSTATE_PRIV);
429 fault = handle_mm_fault(vma, address, flags, regs);
431 if (fault_signal_pending(fault, regs)) {
432 if (regs->tstate & TSTATE_PRIV) {
433 insn = get_fault_insn(regs, insn);
481 hugetlb_setup(regs);
496 insn = get_fault_insn(regs, insn);
499 do_kernel_fault(regs, si_code, fault_code, insn, address);
507 insn = get_fault_insn(regs, insn);
509 if (!(regs->tstate & TSTATE_PRIV)) {
516 insn = get_fault_insn(regs, 0);
520 insn = get_fault_insn(regs, insn);
527 do_fault_siginfo(BUS_ADRERR, SIGBUS, regs, address, insn, fault_code);
530 if (regs->tstate & TSTATE_PRIV)