arm: spl: Use separate fault handlers instead of a single common one

It may be necessary to set breakpoints etc. on a specific fault handler in SPL.
Add a Kconfig option to separate the different handlers into their own individual infinite loops.

Signed-off-by: Csókás Bence <csokas.bence@prolan.hu>
This commit is contained in:
Csókás Bence
2023-12-19 14:33:18 +01:00
committed by Tom Rini
parent 6e75ae1a39
commit 29f390bbd5
2 changed files with 27 additions and 0 deletions

View File

@@ -79,6 +79,15 @@ config SPL_SYS_NO_VECTOR_TABLE
depends on SPL
bool
config SPL_USE_SEPARATE_FAULT_HANDLERS
bool "Use separate fault handlers instead of a single common one"
depends on !SPL_SYS_NO_VECTOR_TABLE && !ARM64 && !CPU_V7M
help
Instead of a common fault handler, generate a separate one for
undefined_instruction, software_interrupt, prefetch_abort etc.
This is for debugging purposes, when you want to set breakpoints
on them separately.
config LINUX_KERNEL_IMAGE_HEADER
depends on ARM64
bool

View File

@@ -138,11 +138,29 @@ _fiq: .word fiq
#if !CONFIG_IS_ENABLED(SYS_NO_VECTOR_TABLE)
.align 5
undefined_instruction:
#if CONFIG_IS_ENABLED(USE_SEPARATE_FAULT_HANDLERS)
b undefined_instruction
#endif
software_interrupt:
#if CONFIG_IS_ENABLED(USE_SEPARATE_FAULT_HANDLERS)
b software_interrupt
#endif
prefetch_abort:
#if CONFIG_IS_ENABLED(USE_SEPARATE_FAULT_HANDLERS)
b prefetch_abort
#endif
data_abort:
#if CONFIG_IS_ENABLED(USE_SEPARATE_FAULT_HANDLERS)
b data_abort
#endif
not_used:
#if CONFIG_IS_ENABLED(USE_SEPARATE_FAULT_HANDLERS)
b not_used
#endif
irq:
#if CONFIG_IS_ENABLED(USE_SEPARATE_FAULT_HANDLERS)
b irq
#endif
fiq:
1:
b 1b /* hang and never return */