Lines Matching refs:regs
27 static void vmalloc_fault(struct pt_regs *regs, unsigned int address)
75 bad_page_fault(regs, address, SIGKILL);
88 void do_page_fault(struct pt_regs *regs)
92 unsigned int exccause = regs->exccause;
93 unsigned int address = regs->excvaddr;
105 if (address >= TASK_SIZE && !user_mode(regs)) {
106 vmalloc_fault(regs, address);
114 bad_page_fault(regs, address, SIGSEGV);
125 address, exccause, regs->pc,
128 if (user_mode(regs))
131 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
134 vma = lock_mm_and_find_vma(mm, address, regs);
159 fault = handle_mm_fault(vma, address, flags, regs);
161 if (fault_signal_pending(fault, regs)) {
162 if (!user_mode(regs))
163 bad_page_fault(regs, address, SIGKILL);
201 if (user_mode(regs)) {
205 bad_page_fault(regs, address, SIGSEGV);
214 if (!user_mode(regs))
215 bad_page_fault(regs, address, SIGKILL);
229 if (!user_mode(regs))
230 bad_page_fault(regs, address, SIGBUS);
236 bad_page_fault(struct pt_regs *regs, unsigned long address, int sig)
242 if ((entry = search_exception_tables(regs->pc)) != NULL) {
244 current->comm, regs->pc, entry->fixup);
245 regs->pc = entry->fixup;
254 address, regs->pc, regs->areg[0]);
255 die("Oops", regs, sig);