[PATCH 7/7] microblaze: exception: drop user exception support
Ovidiu Panait
ovidiu.panait at windriver.com
Sun Feb 13 09:09:25 CET 2022
A user exception is triggered by inserting a bralid/brki jump to
"C_BASE_VECTORS+0x8" in the software flow. Because u-boot microblaze code
does not deal with MMU-related features such as user-mode/privileged-mode
separation, there are no code sequences that call into the user exception
handler.
It seems there is no real usecase for having user exception support in
u-boot, so drop the code that installs the nop handler.
Signed-off-by: Ovidiu Panait <ovidiu.panait at windriver.com>
---
arch/microblaze/cpu/exception.c | 8 -----
arch/microblaze/cpu/start.S | 40 ++-----------------------
board/xilinx/microblaze-generic/Kconfig | 9 ------
3 files changed, 3 insertions(+), 54 deletions(-)
diff --git a/arch/microblaze/cpu/exception.c b/arch/microblaze/cpu/exception.c
index d3640d3903..1f7c44d1f3 100644
--- a/arch/microblaze/cpu/exception.c
+++ b/arch/microblaze/cpu/exception.c
@@ -63,11 +63,3 @@ void _hw_exception_handler (void)
printf("Return address from exception 0x%x\n", address);
hang();
}
-
-#if CONFIG_IS_ENABLED(XILINX_MICROBLAZE0_USR_EXCEP)
-void _exception_handler (void)
-{
- puts("User vector_exception\n");
- hang();
-}
-#endif
diff --git a/arch/microblaze/cpu/start.S b/arch/microblaze/cpu/start.S
index 645f7cb038..0ea0b78da9 100644
--- a/arch/microblaze/cpu/start.S
+++ b/arch/microblaze/cpu/start.S
@@ -97,9 +97,9 @@ clear_bss:
* r5 - relocation offset (zero when setting up vectors before
* relocation, and gd->reloc_off when setting up vectors after
* relocation)
- * - the relocation offset is added to the _exception_handler,
- * _interrupt_handler and _hw_exception_handler symbols to reflect the
- * post-relocation memory addresses
+ * - the relocation offset is added to the _interrupt_handler and
+ * _hw_exception_handler symbols to reflect the post-relocation memory
+ * addresses
*
* Reserve registers:
* r10: Stores little/big endian offset for vectors
@@ -149,40 +149,6 @@ __setup_exceptions:
rsubi r8, r10, 0x6
sh r6, r4, r8
-#if CONFIG_IS_ENABLED(XILINX_MICROBLAZE0_USR_EXCEP)
- /* user_vector_exception */
- swi r2, r4, 0x8 /* user vector exception - imm opcode */
- swi r3, r4, 0xC /* user vector exception - brai opcode */
-
- addik r6, r5, _exception_handler
- sw r6, r1, r0
- /*
- * BIG ENDIAN memory map for user exception
- * 0x8: 0xB000XXXX
- * 0xC: 0xB808XXXX
- *
- * then it is necessary to count address for storing the most significant
- * 16bits from _exception_handler address and copy it to
- * 0xa address. Big endian use offset in r10=0 that's why is it just
- * 0xa address. The same is done for the least significant 16 bits
- * for 0xe address.
- *
- * LITTLE ENDIAN memory map for user exception
- * 0x8: 0xXXXX00B0
- * 0xC: 0xXXXX08B8
- *
- * Offset is for little endian setup to 0x2. rsubi instruction decrease
- * address value to ensure that points to proper place which is
- * 0x8 for the most significant 16 bits and
- * 0xC for the least significant 16 bits
- */
- lhu r7, r1, r10
- rsubi r8, r10, 0xa
- sh r7, r4, r8
- rsubi r8, r10, 0xe
- sh r6, r4, r8
-#endif
-
/* interrupt_handler */
swi r2, r4, 0x10 /* interrupt - imm opcode */
swi r3, r4, 0x14 /* interrupt - brai opcode */
diff --git a/board/xilinx/microblaze-generic/Kconfig b/board/xilinx/microblaze-generic/Kconfig
index 117b476f3f..a0af2e9abd 100644
--- a/board/xilinx/microblaze-generic/Kconfig
+++ b/board/xilinx/microblaze-generic/Kconfig
@@ -38,15 +38,6 @@ config XILINX_MICROBLAZE0_HW_VER
string "Core version number"
default "7.10.d"
-config XILINX_MICROBLAZE0_USR_EXCEP
- bool "MicroBlaze user exception support"
- default y
- help
- Enable this option in order to install the user exception handler
- (_exception_handler routine from arch/microblaze/cpu/exception.c) in
- the exception vector table. The user exception vector is located at
- C_BASE_VECTORS + 0x8 address.
-
config XILINX_MICROBLAZE0_DELAY_SLOT_EXCEP
bool "MicroBlaze delay slot exception support"
default y
--
2.25.1
More information about the U-Boot
mailing list