diff options
author | wdenk <wdenk> | 2002-11-19 11:04:11 +0000 |
---|---|---|
committer | wdenk <wdenk> | 2002-11-19 11:04:11 +0000 |
commit | c7de829c796978e519984df2f1c8cfcf921a39a4 (patch) | |
tree | 43e42aa9a09f5265783c1622a5cea080471ef50e /cpu/74xx_7xx/traps.c | |
parent | 2262cfeef91458b01a1bfe3812ccbbfdf8b82807 (diff) | |
download | u-boot-c7de829c796978e519984df2f1c8cfcf921a39a4.tar.gz u-boot-c7de829c796978e519984df2f1c8cfcf921a39a4.tar.xz u-boot-c7de829c796978e519984df2f1c8cfcf921a39a4.zip |
* Patch by Thomas Frieden, 13 Nov 2002:
Add code for AmigaOne board
(preliminary merge to U-Boot, still WIP)
* Patch by Jon Diekema, 12 Nov 2002:
- Adding URL for IEEE OUI lookup
- Making the autoboot #defines dependent on CONFIG_AUTOBOOT_KEYED
being defined.
- In the CONFIG_EXTRA_ENV_SETTINGS #define, the root-on-initrd and
root-on-nfs macros are designed to switch how the default boot
method gets defined.
Diffstat (limited to 'cpu/74xx_7xx/traps.c')
-rw-r--r-- | cpu/74xx_7xx/traps.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/cpu/74xx_7xx/traps.c b/cpu/74xx_7xx/traps.c index 26db097402..6e94601ccc 100644 --- a/cpu/74xx_7xx/traps.c +++ b/cpu/74xx_7xx/traps.c @@ -45,7 +45,11 @@ extern unsigned long search_exception_table(unsigned long); /* THIS NEEDS CHANGING to use the board info structure. */ +#ifdef CONFIG_AMIGAONEG3SE +#define END_OF_MEM (gd->bd->bi_memstart + gd->bd->bi_memsize) +#else #define END_OF_MEM 0x02000000 +#endif /* * Trap & Exception support @@ -54,6 +58,9 @@ extern unsigned long search_exception_table(unsigned long); void print_backtrace(unsigned long *sp) { +#ifdef CONFIG_AMIGAONEG3SE + DECLARE_GLOBAL_DATA_PTR; +#endif int cnt = 0; unsigned long i; @@ -171,11 +178,25 @@ AlignmentException(struct pt_regs *regs) void ProgramCheckException(struct pt_regs *regs) { + unsigned char *p = regs ? (unsigned char *)(regs->nip) : NULL; + int i, j; + #if (CONFIG_COMMANDS & CFG_CMD_KGDB) if (debugger_exception_handler && (*debugger_exception_handler)(regs)) return; #endif show_regs(regs); + + p = (unsigned char *) ((unsigned long)p & 0xFFFFFFE0); + p -= 32; + for (i = 0; i < 256; i+=16) { + printf("%08x: ", (unsigned int)p+i); + for (j = 0; j < 16; j++) { + printf("%02x ", p[i+j]); + } + printf("\n"); + } + print_backtrace((unsigned long *)regs->gpr[1]); panic("Program Check Exception"); } |