Commit | Line | Data |
---|---|---|
caab277b | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
10b663ae CM |
2 | /* |
3 | * Based on arch/arm/include/asm/exception.h | |
4 | * | |
5 | * Copyright (C) 2012 ARM Ltd. | |
10b663ae CM |
6 | */ |
7 | #ifndef __ASM_EXCEPTION_H | |
8 | #define __ASM_EXCEPTION_H | |
9 | ||
68ddbf09 | 10 | #include <asm/esr.h> |
b6e43c0e | 11 | #include <asm/kprobes.h> |
e540e0a7 | 12 | #include <asm/ptrace.h> |
68ddbf09 | 13 | |
be7635e7 | 14 | #include <linux/interrupt.h> |
9a5ad7d0 | 15 | |
9a5ad7d0 JL |
16 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER |
17 | #define __exception_irq_entry __irq_entry | |
18 | #else | |
b6e43c0e | 19 | #define __exception_irq_entry __kprobes |
9a5ad7d0 | 20 | #endif |
10b663ae | 21 | |
68ddbf09 JM |
22 | static inline u32 disr_to_esr(u64 disr) |
23 | { | |
24 | unsigned int esr = ESR_ELx_EC_SERROR << ESR_ELx_EC_SHIFT; | |
25 | ||
26 | if ((disr & DISR_EL1_IDS) == 0) | |
27 | esr |= (disr & DISR_EL1_ESR_MASK); | |
28 | else | |
29 | esr |= (disr & ESR_ELx_ISS_MASK); | |
30 | ||
31 | return esr; | |
32 | } | |
33 | ||
2671828c | 34 | asmlinkage void enter_from_user_mode(void); |
afa7c0e5 | 35 | void do_mem_abort(unsigned long addr, unsigned int esr, struct pt_regs *regs); |
afa7c0e5 | 36 | void do_undefinstr(struct pt_regs *regs); |
e540e0a7 | 37 | asmlinkage void bad_mode(struct pt_regs *regs, int reason, unsigned int esr); |
afa7c0e5 JM |
38 | void do_debug_exception(unsigned long addr_if_watchpoint, unsigned int esr, |
39 | struct pt_regs *regs); | |
40 | void do_fpsimd_acc(unsigned int esr, struct pt_regs *regs); | |
41 | void do_sve_acc(unsigned int esr, struct pt_regs *regs); | |
42 | void do_fpsimd_exc(unsigned int esr, struct pt_regs *regs); | |
43 | void do_sysinstr(unsigned int esr, struct pt_regs *regs); | |
44 | void do_sp_pc_abort(unsigned long addr, unsigned int esr, struct pt_regs *regs); | |
45 | void bad_el0_sync(struct pt_regs *regs, int reason, unsigned int esr); | |
46 | void do_cp15instr(unsigned int esr, struct pt_regs *regs); | |
7a2c0944 MR |
47 | void do_el0_svc(struct pt_regs *regs); |
48 | void do_el0_svc_compat(struct pt_regs *regs); | |
10b663ae | 49 | #endif /* __ASM_EXCEPTION_H */ |