microblaze: Show return address from exception
authorMichal Simek <michal.simek@xilinx.com>
Mon, 26 Jan 2015 13:32:23 +0000 (14:32 +0100)
committerMichal Simek <michal.simek@xilinx.com>
Mon, 9 Feb 2015 14:09:56 +0000 (15:09 +0100)
Show also return address from exception which should
suggest where the problem is.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
arch/microblaze/cpu/exception.c
arch/microblaze/include/asm/asm.h

index 227842f..4572933 100644 (file)
@@ -18,6 +18,8 @@ void _hw_exception_handler (void)
        /* loading excetpion state register ESR */
        MFS (state, resr);
        printf ("Hardware exception at 0x%x address\n", address);
+       R17(address);
+       printf("Return address from exception 0x%x\n", address);
        switch (state & 0x1f) { /* mask on exception cause */
        case 0x1:
                puts ("Unaligned data access exception\n");
index c1c3b03..11f3dd0 100644 (file)
 #define R14(val) \
        __asm__ __volatile__ ("addi %0, r14, 0":"=r" (val));
 
+/* get return address from interrupt */
+#define R17(val) \
+       __asm__ __volatile__ ("addi %0, r17, 0" : "=r" (val));
+
 #define NOP    __asm__ __volatile__ ("nop");
 
 /* use machine status registe USE_MSR_REG */