Lines Matching refs:regs
43 * Check whether the instruction at regs->pc is a store using
46 static int store_updates_sp(struct pt_regs *regs)
50 if (get_user(inst, (unsigned int __user *)regs->pc))
67 void bad_page_fault(struct pt_regs *regs, unsigned long address, int sig)
72 fixup = search_exception_tables(regs->pc);
74 regs->pc = fixup->fixup;
79 die("kernel access of bad area", regs, sig);
86 void do_page_fault(struct pt_regs *regs, unsigned long address,
96 regs->ear = address;
97 regs->esr = error_code;
100 if (unlikely(kernel_mode(regs) && (address >= TASK_SIZE))) {
102 _exception(SIGSEGV, regs, code, address);
110 if (kernel_mode(regs))
118 regs->r15, regs->msr);
119 die("Weird page fault", regs, SIGSEGV);
122 if (user_mode(regs))
125 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
143 if (kernel_mode(regs) && !search_exception_tables(regs->pc))
174 /* get user regs even if this fault is in kernel mode */
175 struct pt_regs *uregs = current->thread.regs;
192 && (kernel_mode(regs) || !store_updates_sp(regs)))
221 fault = handle_mm_fault(vma, address, flags, regs);
223 if (fault_signal_pending(fault, regs)) {
224 if (!user_mode(regs))
225 bad_page_fault(regs, address, SIGBUS);
272 if (user_mode(regs)) {
273 _exception(SIGSEGV, regs, code, address);
277 bad_page_fault(regs, address, SIGSEGV);
286 if (!user_mode(regs))
287 bad_page_fault(regs, address, SIGKILL);
294 if (user_mode(regs)) {
298 bad_page_fault(regs, address, SIGBUS);