Commit cd8fb8df authored by Robin Getz's avatar Robin Getz Committed by Bryan Wu

Blackfin arch: Print out doublefault addresses, so debug can occur

Signed-off-by: default avatarRobin Getz <rgetz@blackfin.uclinux.org>
Signed-off-by: default avatarBryan Wu <cooloney@kernel.org>
parent ee32664d
...@@ -52,6 +52,7 @@ EXPORT_SYMBOL(mtd_size); ...@@ -52,6 +52,7 @@ EXPORT_SYMBOL(mtd_size);
#endif #endif
char __initdata command_line[COMMAND_LINE_SIZE]; char __initdata command_line[COMMAND_LINE_SIZE];
unsigned int __initdata *__retx;
/* boot memmap, for parsing "memmap=" */ /* boot memmap, for parsing "memmap=" */
#define BFIN_MEMMAP_MAX 128 /* number of entries in bfin_memmap */ #define BFIN_MEMMAP_MAX 128 /* number of entries in bfin_memmap */
...@@ -785,7 +786,11 @@ void __init setup_arch(char **cmdline_p) ...@@ -785,7 +786,11 @@ void __init setup_arch(char **cmdline_p)
bfin_write_SWRST(DOUBLE_FAULT); bfin_write_SWRST(DOUBLE_FAULT);
if (_bfin_swrst & RESET_DOUBLE) if (_bfin_swrst & RESET_DOUBLE)
printk(KERN_INFO "Recovering from Double Fault event\n"); /*
* don't decode the address, since you don't know if this
* kernel's symbol map is the same as the crashing kernel
*/
printk(KERN_INFO "Recovering from Double Fault event at %p\n", __retx);
else if (_bfin_swrst & RESET_WDOG) else if (_bfin_swrst & RESET_WDOG)
printk(KERN_INFO "Recovering from Watchdog event\n"); printk(KERN_INFO "Recovering from Watchdog event\n");
else if (_bfin_swrst & RESET_SOFTWARE) else if (_bfin_swrst & RESET_SOFTWARE)
......
...@@ -90,6 +90,12 @@ ENTRY(__start) ...@@ -90,6 +90,12 @@ ENTRY(__start)
[p0] = R0; [p0] = R0;
SSYNC; SSYNC;
/* Save RETX, in case of doublefault */
p0.l = ___retx;
p0.h = ___retx;
R0 = RETX;
[P0] = R0;
/* Let each Blackfin family do its own thing */ /* Let each Blackfin family do its own thing */
call _mach_early_start; call _mach_early_start;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment