[PATCH v2] arm: spl: Use separate fault handlers instead of a single common one
Csókás Bence
csokas.bence at prolan.hu
Tue Dec 19 14:33:18 CET 2023
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 at prolan.hu>
---
Notes:
Changes in v2:
* Change `depends`: add `&& !ARM64 && !CPU_V7M`
* Remove `default n`
arch/arm/Kconfig | 9 +++++++++
arch/arm/lib/vectors.S | 18 ++++++++++++++++++
2 files changed, 27 insertions(+)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 328e2ddc33..a6ddbad30c 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -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
diff --git a/arch/arm/lib/vectors.S b/arch/arm/lib/vectors.S
index 7cf7d1636f..a14bca6fb8 100644
--- a/arch/arm/lib/vectors.S
+++ b/arch/arm/lib/vectors.S
@@ -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 */
--
2.25.1
More information about the U-Boot
mailing list