avr32: use generic gd->start_addr_sp

Before avr32 had an extra storage for stack end to have a nice stack printout
on exception. Remove this extra storage and use generic gd->start_addr_sp
instead.

Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
master
Andreas Bießmann 9 years ago
parent 186678600a
commit 4db896236c
  1. 6
      arch/avr32/cpu/exception.c
  2. 1
      arch/avr32/include/asm/global_data.h
  3. 2
      arch/avr32/lib/board.c

@ -96,11 +96,11 @@ void do_unknown_exception(unsigned int ecr, struct pt_regs *regs)
printf("CPU Mode: %s\n", cpu_modes[mode]);
/* Avoid exception loops */
if (regs->sp < (gd->arch.stack_end - CONFIG_STACKSIZE)
|| regs->sp >= gd->arch.stack_end)
if (regs->sp < (gd->start_addr_sp - CONFIG_STACKSIZE) ||
regs->sp >= gd->start_addr_sp)
printf("\nStack pointer seems bogus, won't do stack dump\n");
else
dump_mem("\nStack: ", regs->sp, gd->arch.stack_end);
dump_mem("\nStack: ", regs->sp, gd->start_addr_sp);
panic("Unhandled exception\n");
}

@ -8,7 +8,6 @@
/* Architecture-specific global data */
struct arch_global_data {
unsigned long stack_end; /* highest stack address */
unsigned long cpu_hz; /* cpu core clock frequency */
};

@ -157,7 +157,7 @@ void board_init_f(ulong board_type)
/* And finally, a new, bigger stack. */
new_sp = (unsigned long *)addr;
gd->arch.stack_end = addr;
gd->start_addr_sp = addr;
*(--new_sp) = 0;
*(--new_sp) = 0;

Loading…
Cancel
Save