• Home
  • Raw
  • Download

Lines Matching refs:esr

45 	int	(*fn)(unsigned long addr, unsigned int esr,
54 static inline const struct fault_info *esr_to_fault_info(unsigned int esr) in esr_to_fault_info() argument
56 return fault_info + (esr & 63); in esr_to_fault_info()
60 static inline int notify_page_fault(struct pt_regs *regs, unsigned int esr) in notify_page_fault() argument
67 if (kprobe_running() && kprobe_fault_handler(regs, esr)) in notify_page_fault()
75 static inline int notify_page_fault(struct pt_regs *regs, unsigned int esr) in notify_page_fault() argument
171 static bool is_el1_instruction_abort(unsigned int esr) in is_el1_instruction_abort() argument
173 return ESR_ELx_EC(esr) == ESR_ELx_EC_IABT_CUR; in is_el1_instruction_abort()
180 unsigned int esr, struct pt_regs *regs) in __do_kernel_fault() argument
186 if (!is_el1_instruction_abort(esr) && fixup_exception(regs)) in __do_kernel_fault()
198 die("Oops", regs, esr); in __do_kernel_fault()
208 unsigned int esr, unsigned int sig, int code, in __do_user_fault() argument
215 inf = esr_to_fault_info(esr); in __do_user_fault()
218 addr, esr); in __do_user_fault()
224 tsk->thread.fault_code = esr; in __do_user_fault()
232 static void do_bad_area(unsigned long addr, unsigned int esr, struct pt_regs *regs) in do_bad_area() argument
243 inf = esr_to_fault_info(esr); in do_bad_area()
244 __do_user_fault(tsk, addr, esr, inf->sig, inf->code, regs); in do_bad_area()
246 __do_kernel_fault(mm, addr, esr, regs); in do_bad_area()
289 static inline bool is_permission_fault(unsigned int esr, struct pt_regs *regs) in is_permission_fault() argument
291 unsigned int ec = ESR_ELx_EC(esr); in is_permission_fault()
292 unsigned int fsc_type = esr & ESR_ELx_FSC_TYPE; in is_permission_fault()
304 static bool is_el0_instruction_abort(unsigned int esr) in is_el0_instruction_abort() argument
306 return ESR_ELx_EC(esr) == ESR_ELx_EC_IABT_LOW; in is_el0_instruction_abort()
309 static int __kprobes do_page_fault(unsigned long addr, unsigned int esr, in do_page_fault() argument
318 if (notify_page_fault(regs, esr)) in do_page_fault()
334 if (is_el0_instruction_abort(esr)) { in do_page_fault()
336 } else if ((esr & ESR_ELx_WNR) && !(esr & ESR_ELx_CM)) { in do_page_fault()
341 if (addr < TASK_SIZE && is_permission_fault(esr, regs)) { in do_page_fault()
344 die("Accessing user space memory with fs=KERNEL_DS", regs, esr); in do_page_fault()
346 if (is_el1_instruction_abort(esr)) in do_page_fault()
347 die("Attempting to execute userspace memory", regs, esr); in do_page_fault()
350 die("Accessing user space memory outside uaccess.h routines", regs, esr); in do_page_fault()
459 __do_user_fault(tsk, addr, esr, sig, code, regs); in do_page_fault()
463 __do_kernel_fault(mm, addr, esr, regs); in do_page_fault()
485 unsigned int esr, in do_translation_fault() argument
489 return do_page_fault(addr, esr, regs); in do_translation_fault()
491 do_bad_area(addr, esr, regs); in do_translation_fault()
495 static int do_alignment_fault(unsigned long addr, unsigned int esr, in do_alignment_fault() argument
498 do_bad_area(addr, esr, regs); in do_alignment_fault()
505 static int do_bad(unsigned long addr, unsigned int esr, struct pt_regs *regs) in do_bad() argument
580 asmlinkage void __exception do_mem_abort(unsigned long addr, unsigned int esr, in do_mem_abort() argument
583 const struct fault_info *inf = esr_to_fault_info(esr); in do_mem_abort()
586 if (!inf->fn(addr, esr, regs)) in do_mem_abort()
590 inf->name, esr, addr); in do_mem_abort()
596 arm64_notify_die("", regs, &info, esr); in do_mem_abort()
606 unsigned int esr, in do_el0_ia_bp_hardening() argument
618 do_mem_abort(addr, esr, regs); in do_el0_ia_bp_hardening()
626 unsigned int esr, in do_sp_pc_abort() argument
641 esr_get_class_string(esr), (void *)regs->pc, in do_sp_pc_abort()
648 arm64_notify_die("Oops - SP/PC alignment exception", regs, &info, esr); in do_sp_pc_abort()
651 int __init early_brk64(unsigned long addr, unsigned int esr,
683 unsigned int esr, in do_debug_exception() argument
686 const struct fault_info *inf = debug_fault_info + DBG_ESR_EVT(esr); in do_debug_exception()
700 if (!inf->fn(addr, esr, regs)) { in do_debug_exception()
704 inf->name, esr, addr); in do_debug_exception()