Lines Matching refs:regs

50 static inline int notify_page_fault(struct pt_regs *regs)  in notify_page_fault()  argument
55 if (!user_mode(regs)) { in notify_page_fault()
57 if (kprobe_running() && kprobe_fault_handler(regs, 11)) in notify_page_fault()
65 static inline int notify_page_fault(struct pt_regs *regs) in notify_page_fault() argument
75 static int store_updates_sp(struct pt_regs *regs) in store_updates_sp() argument
79 if (get_user(inst, (unsigned int __user *)regs->nip)) in store_updates_sp()
116 static int do_sigbus(struct pt_regs *regs, unsigned long address, in do_sigbus() argument
124 if (!user_mode(regs)) in do_sigbus()
149 static int mm_fault_error(struct pt_regs *regs, unsigned long addr, int fault) in mm_fault_error() argument
164 if (user_mode(regs)) in mm_fault_error()
181 if (!user_mode(regs)) in mm_fault_error()
188 return do_sigbus(regs, addr, fault); in mm_fault_error()
208 int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address, in do_page_fault() argument
217 int trap = TRAP(regs); in do_page_fault()
244 rc = acop_handle_fault(regs, address, error_code); in do_page_fault()
250 if (notify_page_fault(regs)) in do_page_fault()
253 if (unlikely(debugger_fault_handler(regs))) in do_page_fault()
257 if (!user_mode(regs) && (address >= TASK_SIZE)) { in do_page_fault()
266 do_break(regs, address, error_code); in do_page_fault()
272 if (!arch_irq_disabled_regs(regs)) in do_page_fault()
276 if (!user_mode(regs)) { in do_page_fault()
285 regs->nip, regs->msr); in do_page_fault()
286 die("Weird page fault", regs, SIGSEGV); in do_page_fault()
289 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); in do_page_fault()
296 if (user_mode(regs)) in do_page_fault()
297 store_update_sp = store_updates_sp(regs); in do_page_fault()
299 if (user_mode(regs)) in do_page_fault()
318 if (!user_mode(regs) && !search_exception_tables(regs->nip)) in do_page_fault()
351 struct pt_regs *uregs = current->thread.regs; in do_page_fault()
435 rc = mm_fault_error(regs, address, fault); in do_page_fault()
451 regs, address); in do_page_fault()
466 regs, address); in do_page_fault()
485 if (user_mode(regs)) { in do_page_fault()
486 _exception(SIGSEGV, regs, code, address); in do_page_fault()
508 void bad_page_fault(struct pt_regs *regs, unsigned long address, int sig) in bad_page_fault() argument
513 if ((entry = search_exception_tables(regs->nip)) != NULL) { in bad_page_fault()
514 regs->nip = entry->fixup; in bad_page_fault()
520 switch (regs->trap) { in bad_page_fault()
524 "data at address 0x%08lx\n", regs->dar); in bad_page_fault()
537 regs->nip); in bad_page_fault()
542 die("Kernel access of bad area", regs, sig); in bad_page_fault()