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.pan...@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

Reply via email to