diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2006-07-22 01:12:09 -0700 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-07-24 22:33:58 -0700 |
commit | eb398d1044e0c1c19c2f5041acdb29ddb5bbc9f8 (patch) | |
tree | d493c8298bd5204d4295761edd38746d191bd0e2 /arch/sparc64/mm | |
parent | b4e54de8d34afe7fcf08bfe91070d9dfeae6ed27 (diff) | |
download | linux-eb398d1044e0c1c19c2f5041acdb29ddb5bbc9f8.tar.gz linux-eb398d1044e0c1c19c2f5041acdb29ddb5bbc9f8.tar.bz2 linux-eb398d1044e0c1c19c2f5041acdb29ddb5bbc9f8.zip |
[SPARC64]: Explicitly print return PC when the kernel fault PC is bogus.
That way we'll have at least some debugging info even if
the stack dump explodes.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/mm')
-rw-r--r-- | arch/sparc64/mm/fault.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/sparc64/mm/fault.c b/arch/sparc64/mm/fault.c index 1605967cce91..55ae802dc0ad 100644 --- a/arch/sparc64/mm/fault.c +++ b/arch/sparc64/mm/fault.c @@ -19,6 +19,7 @@ #include <linux/init.h> #include <linux/interrupt.h> #include <linux/kprobes.h> +#include <linux/kallsyms.h> #include <asm/page.h> #include <asm/pgtable.h> @@ -132,6 +133,8 @@ static void bad_kernel_pc(struct pt_regs *regs, unsigned long vaddr) printk(KERN_CRIT "OOPS: Bogus kernel PC [%016lx] in fault handler\n", regs->tpc); + printk(KERN_CRIT "OOPS: RPC [%016lx]\n", regs->u_regs[15]); + print_symbol("RPC: <%s>\n", regs->u_regs[15]); printk(KERN_CRIT "OOPS: Fault was to vaddr[%lx]\n", vaddr); __asm__("mov %%sp, %0" : "=r" (ksp)); show_stack(current, ksp); |