summaryrefslogtreecommitdiffstats
path: root/arch/arm64/kernel/entry.S
diff options
context:
space:
mode:
authorMark Rutland <mark.rutland@arm.com>2021-06-07 10:46:07 +0100
committerWill Deacon <will@kernel.org>2021-06-07 11:35:54 +0100
commitbb8e93a287a5f5f10fe7a9d8f612f6105c9622ef (patch)
tree9ccae9d6cae082fe12bcd4bb6a68068a3033de11 /arch/arm64/kernel/entry.S
parentf7c706f0391d7894d1ae2d28cb2d5446f5ec59ad (diff)
downloadlinux-bb8e93a287a5f5f10fe7a9d8f612f6105c9622ef.tar.bz2
arm64: entry: convert SError handlers to C
For various reasons we'd like to convert the bulk of arm64's exception triage logic to C. As a step towards that, this patch converts the EL1 and EL0 SError triage logic to C. Separate C functions are added for the native and compat cases so that in subsequent patches we can handle native/compat differences in C. There should be no functional change as a result of this patch. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Acked-by: Marc Zyngier <maz@kernel.org> Reviewed-by: Joey Gouly <joey.gouly@arm.com> Cc: James Morse <james.morse@arm.com> Cc: Will Deacon <will@kernel.org> Link: https://lore.kernel.org/r/20210607094624.34689-4-mark.rutland@arm.com Signed-off-by: Will Deacon <will@kernel.org>
Diffstat (limited to 'arch/arm64/kernel/entry.S')
-rw-r--r--arch/arm64/kernel/entry.S16
1 files changed, 5 insertions, 11 deletions
diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
index 6b2f6f5c5bb8..656f3129bfef 100644
--- a/arch/arm64/kernel/entry.S
+++ b/arch/arm64/kernel/entry.S
@@ -757,7 +757,9 @@ SYM_CODE_END(el0_fiq_compat)
SYM_CODE_START_LOCAL_NOALIGN(el0_error_compat)
kernel_entry 0, 32
- b el0_error_naked
+ mov x0, sp
+ bl el0_error_compat_handler
+ b ret_to_user
SYM_CODE_END(el0_error_compat)
#endif
@@ -778,23 +780,15 @@ SYM_CODE_END(el0_fiq)
SYM_CODE_START_LOCAL(el1_error)
kernel_entry 1
- mrs x1, esr_el1
- enable_dbg
mov x0, sp
- bl do_serror
+ bl el1_error_handler
kernel_exit 1
SYM_CODE_END(el1_error)
SYM_CODE_START_LOCAL(el0_error)
kernel_entry 0
-el0_error_naked:
- mrs x25, esr_el1
- user_exit_irqoff
- enable_dbg
mov x0, sp
- mov x1, x25
- bl do_serror
- enable_daif
+ bl el0_error_handler
b ret_to_user
SYM_CODE_END(el0_error)