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);
137 show_signal_msg(struct pt_regs *regs, int sig, int code,
149 (void *)regs->tpc, (void *)regs->u_regs[UREG_I7],
150 (void *)regs->u_regs[UREG_FP], code);
152 print_vma_addr(KERN_CONT " in ", regs->tpc);
157 static void do_fault_siginfo(int code, int sig, struct pt_regs *regs,
164 addr = regs->tpc;
171 addr = compute_effective_address(regs, insn, 0);
177 show_signal_msg(regs, sig, code, addr, current);
182 static unsigned int get_fault_insn(struct pt_regs *regs, unsigned int insn)
185 if (!regs->tpc || (regs->tpc & 0x3))
187 if (regs->tstate & TSTATE_PRIV) {
188 insn = *(unsigned int *) regs->tpc;
190 insn = get_user_insn(regs->tpc);
196 static void __kprobes do_kernel_fault(struct pt_regs *regs, int si_code,
202 if ((!insn) && (regs->tstate & TSTATE_PRIV))
213 asi = (regs->tstate >> 24);
218 handle_ldf_stq(insn, regs);
224 handle_ld_nf(insn, regs);
231 if (regs->tstate & TSTATE_PRIV) {
234 entry = search_exception_tables(regs->tpc);
236 regs->tpc = entry->fixup;
237 regs->tnpc = regs->tpc + 4;
244 do_fault_siginfo(si_code, SIGSEGV, regs, address, insn, fault_code);
249 unhandled_fault (address, current, regs);
252 static void noinline __kprobes bogus_32bit_fault_tpc(struct pt_regs *regs)
260 regs->tpc);
261 show_regs(regs);
264 asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
277 if (kprobe_page_fault(regs, 0))
288 if (!(regs->tstate & TSTATE_PRIV)) {
289 if (unlikely((regs->tpc >> 32) != 0)) {
290 bogus_32bit_fault_tpc(regs);
298 if (regs->tstate & TSTATE_PRIV) {
299 unsigned long tpc = regs->tpc;
306 bad_kernel_pc(regs, address);
319 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
322 if ((regs->tstate & TSTATE_PRIV) &&
323 !search_exception_tables(regs->tpc)) {
324 insn = get_fault_insn(regs, insn);
350 insn = get_fault_insn(regs, 0);
374 insn = get_fault_insn(regs, insn);
379 asi = (regs->tstate >> 24);
399 WARN(address != regs->tpc,
400 "address (%lx) != regs->tpc (%lx)\n", address, regs->tpc);
401 WARN_ON(regs->tstate & TSTATE_PRIV);
425 fault = handle_mm_fault(vma, address, flags, regs);
427 if (fault_signal_pending(fault, regs))
469 hugetlb_setup(regs);
482 insn = get_fault_insn(regs, insn);
486 do_kernel_fault(regs, si_code, fault_code, insn, address);
494 insn = get_fault_insn(regs, insn);
496 if (!(regs->tstate & TSTATE_PRIV)) {
503 insn = get_fault_insn(regs, 0);
507 insn = get_fault_insn(regs, insn);
514 do_fault_siginfo(BUS_ADRERR, SIGBUS, regs, address, insn, fault_code);
517 if (regs->tstate & TSTATE_PRIV)