diff options
Diffstat (limited to 'arch/mips/kernel/traps.c')
| -rw-r--r-- | arch/mips/kernel/traps.c | 18 | 
1 files changed, 9 insertions, 9 deletions
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index 4e00f9bc23e..d612c6dcb74 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c @@ -352,9 +352,10 @@ void show_registers(const struct pt_regs *regs)  static DEFINE_SPINLOCK(die_lock); -void __noreturn die(const char * str, const struct pt_regs * regs) +void __noreturn die(const char * str, struct pt_regs * regs)  {  	static int die_counter; +	int sig = SIGSEGV;  #ifdef CONFIG_MIPS_MT_SMTC  	unsigned long dvpret = dvpe();  #endif /* CONFIG_MIPS_MT_SMTC */ @@ -365,6 +366,10 @@ void __noreturn die(const char * str, const struct pt_regs * regs)  #ifdef CONFIG_MIPS_MT_SMTC  	mips_mt_regdump(dvpret);  #endif /* CONFIG_MIPS_MT_SMTC */ + +	if (notify_die(DIE_OOPS, str, regs, 0, current->thread.trap_no, SIGSEGV) == NOTIFY_STOP) +		sig = 0; +  	printk("%s[#%d]:\n", str, ++die_counter);  	show_registers(regs);  	add_taint(TAINT_DIE); @@ -379,7 +384,7 @@ void __noreturn die(const char * str, const struct pt_regs * regs)  		panic("Fatal exception");  	} -	do_exit(SIGSEGV); +	do_exit(sig);  }  extern struct exception_table_entry __start___dbe_table[]; @@ -1557,12 +1562,7 @@ static char panic_null_cerr[] __cpuinitdata =  void __cpuinit set_uncached_handler(unsigned long offset, void *addr,  	unsigned long size)  { -#ifdef CONFIG_32BIT -	unsigned long uncached_ebase = KSEG1ADDR(ebase); -#endif -#ifdef CONFIG_64BIT -	unsigned long uncached_ebase = TO_UNCAC(ebase); -#endif +	unsigned long uncached_ebase = CKSEG1ADDR(ebase);  	if (!addr)  		panic(panic_null_cerr); @@ -1599,7 +1599,7 @@ void __init trap_init(void)  		ebase = (unsigned long)  			__alloc_bootmem(size, 1 << fls(size), 0);  	} else { -		ebase = CAC_BASE; +		ebase = CKSEG0;  		if (cpu_has_mips_r2)  			ebase += (read_c0_ebase() & 0x3ffff000);  	}  |