|
@@ -54,8 +54,7 @@ EXPORT_SYMBOL(mtd_size);
|
|
|
#endif
|
|
|
|
|
|
char __initdata command_line[COMMAND_LINE_SIZE];
|
|
|
-void __initdata *init_retx, *init_saved_retx, *init_saved_seqstat,
|
|
|
- *init_saved_icplb_fault_addr, *init_saved_dcplb_fault_addr;
|
|
|
+struct blackfin_initial_pda __initdata initial_pda;
|
|
|
|
|
|
/* boot memmap, for parsing "memmap=" */
|
|
|
#define BFIN_MEMMAP_MAX 128 /* number of entries in bfin_memmap */
|
|
@@ -957,13 +956,16 @@ void __init setup_arch(char **cmdline_p)
|
|
|
printk(KERN_EMERG "Recovering from DOUBLE FAULT event\n");
|
|
|
#ifdef CONFIG_DEBUG_DOUBLEFAULT
|
|
|
/* We assume the crashing kernel, and the current symbol table match */
|
|
|
- printk(KERN_EMERG " While handling exception (EXCAUSE = 0x%x) at %pF\n",
|
|
|
- (int)init_saved_seqstat & SEQSTAT_EXCAUSE, init_saved_retx);
|
|
|
- printk(KERN_NOTICE " DCPLB_FAULT_ADDR: %pF\n", init_saved_dcplb_fault_addr);
|
|
|
- printk(KERN_NOTICE " ICPLB_FAULT_ADDR: %pF\n", init_saved_icplb_fault_addr);
|
|
|
+ printk(KERN_EMERG " While handling exception (EXCAUSE = %#x) at %pF\n",
|
|
|
+ initial_pda.seqstat_doublefault & SEQSTAT_EXCAUSE,
|
|
|
+ initial_pda.retx_doublefault);
|
|
|
+ printk(KERN_NOTICE " DCPLB_FAULT_ADDR: %pF\n",
|
|
|
+ initial_pda.dcplb_doublefault_addr);
|
|
|
+ printk(KERN_NOTICE " ICPLB_FAULT_ADDR: %pF\n",
|
|
|
+ initial_pda.icplb_doublefault_addr);
|
|
|
#endif
|
|
|
printk(KERN_NOTICE " The instruction at %pF caused a double exception\n",
|
|
|
- init_retx);
|
|
|
+ initial_pda.retx);
|
|
|
} else if (_bfin_swrst & RESET_WDOG)
|
|
|
printk(KERN_INFO "Recovering from Watchdog event\n");
|
|
|
else if (_bfin_swrst & RESET_SOFTWARE)
|