microblaze: Show return address from exception

Show also return address from exception which should
suggest where the problem is.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
master
Michal Simek 10 years ago
parent cd8574c0a7
commit 1c424d2697
  1. 2
      arch/microblaze/cpu/exception.c
  2. 4
      arch/microblaze/include/asm/asm.h

@ -18,6 +18,8 @@ void _hw_exception_handler (void)
/* loading excetpion state register ESR */ /* loading excetpion state register ESR */
MFS (state, resr); MFS (state, resr);
printf ("Hardware exception at 0x%x address\n", address); 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 */ switch (state & 0x1f) { /* mask on exception cause */
case 0x1: case 0x1:
puts ("Unaligned data access exception\n"); puts ("Unaligned data access exception\n");

@ -43,6 +43,10 @@
#define R14(val) \ #define R14(val) \
__asm__ __volatile__ ("addi %0, r14, 0":"=r" (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"); #define NOP __asm__ __volatile__ ("nop");
/* use machine status registe USE_MSR_REG */ /* use machine status registe USE_MSR_REG */

Loading…
Cancel
Save