|
@@ -1,6 +1,6 @@
|
|
/* arch/sparc64/kernel/traps.c
|
|
/* arch/sparc64/kernel/traps.c
|
|
*
|
|
*
|
|
- * Copyright (C) 1995,1997 David S. Miller (davem@davemloft.net)
|
|
|
|
|
|
+ * Copyright (C) 1995,1997,2008 David S. Miller (davem@davemloft.net)
|
|
* Copyright (C) 1997,1999,2000 Jakub Jelinek (jakub@redhat.com)
|
|
* Copyright (C) 1997,1999,2000 Jakub Jelinek (jakub@redhat.com)
|
|
*/
|
|
*/
|
|
|
|
|
|
@@ -11,7 +11,6 @@
|
|
#include <linux/module.h>
|
|
#include <linux/module.h>
|
|
#include <linux/sched.h>
|
|
#include <linux/sched.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/kernel.h>
|
|
-#include <linux/kallsyms.h>
|
|
|
|
#include <linux/signal.h>
|
|
#include <linux/signal.h>
|
|
#include <linux/smp.h>
|
|
#include <linux/smp.h>
|
|
#include <linux/mm.h>
|
|
#include <linux/mm.h>
|
|
@@ -74,7 +73,7 @@ static void dump_tl1_traplog(struct tl1_traplog *p)
|
|
i + 1,
|
|
i + 1,
|
|
p->trapstack[i].tstate, p->trapstack[i].tpc,
|
|
p->trapstack[i].tstate, p->trapstack[i].tpc,
|
|
p->trapstack[i].tnpc, p->trapstack[i].tt);
|
|
p->trapstack[i].tnpc, p->trapstack[i].tt);
|
|
- print_symbol("TRAPLOG: TPC<%s>\n", p->trapstack[i].tpc);
|
|
|
|
|
|
+ printk("TRAPLOG: TPC<%pS>\n", (void *) p->trapstack[i].tpc);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1081,7 +1080,7 @@ static void cheetah_log_errors(struct pt_regs *regs, struct cheetah_err_info *in
|
|
regs->tpc, regs->tnpc, regs->u_regs[UREG_I7], regs->tstate);
|
|
regs->tpc, regs->tnpc, regs->u_regs[UREG_I7], regs->tstate);
|
|
printk("%s" "ERROR(%d): ",
|
|
printk("%s" "ERROR(%d): ",
|
|
(recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id());
|
|
(recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id());
|
|
- print_symbol("TPC<%s>\n", regs->tpc);
|
|
|
|
|
|
+ printk("TPC<%pS>\n", (void *) regs->tpc);
|
|
printk("%s" "ERROR(%d): M_SYND(%lx), E_SYND(%lx)%s%s\n",
|
|
printk("%s" "ERROR(%d): M_SYND(%lx), E_SYND(%lx)%s%s\n",
|
|
(recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id(),
|
|
(recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id(),
|
|
(afsr & CHAFSR_M_SYNDROME) >> CHAFSR_M_SYNDROME_SHIFT,
|
|
(afsr & CHAFSR_M_SYNDROME) >> CHAFSR_M_SYNDROME_SHIFT,
|
|
@@ -1689,7 +1688,7 @@ void cheetah_plus_parity_error(int type, struct pt_regs *regs)
|
|
smp_processor_id(),
|
|
smp_processor_id(),
|
|
(type & 0x1) ? 'I' : 'D',
|
|
(type & 0x1) ? 'I' : 'D',
|
|
regs->tpc);
|
|
regs->tpc);
|
|
- print_symbol(KERN_EMERG "TPC<%s>\n", regs->tpc);
|
|
|
|
|
|
+ printk(KERN_EMERG "TPC<%pS>\n", (void *) regs->tpc);
|
|
panic("Irrecoverable Cheetah+ parity error.");
|
|
panic("Irrecoverable Cheetah+ parity error.");
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1697,7 +1696,7 @@ void cheetah_plus_parity_error(int type, struct pt_regs *regs)
|
|
smp_processor_id(),
|
|
smp_processor_id(),
|
|
(type & 0x1) ? 'I' : 'D',
|
|
(type & 0x1) ? 'I' : 'D',
|
|
regs->tpc);
|
|
regs->tpc);
|
|
- print_symbol(KERN_WARNING "TPC<%s>\n", regs->tpc);
|
|
|
|
|
|
+ printk(KERN_WARNING "TPC<%pS>\n", (void *) regs->tpc);
|
|
}
|
|
}
|
|
|
|
|
|
struct sun4v_error_entry {
|
|
struct sun4v_error_entry {
|
|
@@ -1904,9 +1903,10 @@ void sun4v_itlb_error_report(struct pt_regs *regs, int tl)
|
|
|
|
|
|
printk(KERN_EMERG "SUN4V-ITLB: Error at TPC[%lx], tl %d\n",
|
|
printk(KERN_EMERG "SUN4V-ITLB: Error at TPC[%lx], tl %d\n",
|
|
regs->tpc, tl);
|
|
regs->tpc, tl);
|
|
- print_symbol(KERN_EMERG "SUN4V-ITLB: TPC<%s>\n", regs->tpc);
|
|
|
|
|
|
+ printk(KERN_EMERG "SUN4V-ITLB: TPC<%pS>\n", (void *) regs->tpc);
|
|
printk(KERN_EMERG "SUN4V-ITLB: O7[%lx]\n", regs->u_regs[UREG_I7]);
|
|
printk(KERN_EMERG "SUN4V-ITLB: O7[%lx]\n", regs->u_regs[UREG_I7]);
|
|
- print_symbol(KERN_EMERG "SUN4V-ITLB: O7<%s>\n", regs->u_regs[UREG_I7]);
|
|
|
|
|
|
+ printk(KERN_EMERG "SUN4V-ITLB: O7<%pS>\n",
|
|
|
|
+ (void *) regs->u_regs[UREG_I7]);
|
|
printk(KERN_EMERG "SUN4V-ITLB: vaddr[%lx] ctx[%lx] "
|
|
printk(KERN_EMERG "SUN4V-ITLB: vaddr[%lx] ctx[%lx] "
|
|
"pte[%lx] error[%lx]\n",
|
|
"pte[%lx] error[%lx]\n",
|
|
sun4v_err_itlb_vaddr, sun4v_err_itlb_ctx,
|
|
sun4v_err_itlb_vaddr, sun4v_err_itlb_ctx,
|
|
@@ -1927,9 +1927,10 @@ void sun4v_dtlb_error_report(struct pt_regs *regs, int tl)
|
|
|
|
|
|
printk(KERN_EMERG "SUN4V-DTLB: Error at TPC[%lx], tl %d\n",
|
|
printk(KERN_EMERG "SUN4V-DTLB: Error at TPC[%lx], tl %d\n",
|
|
regs->tpc, tl);
|
|
regs->tpc, tl);
|
|
- print_symbol(KERN_EMERG "SUN4V-DTLB: TPC<%s>\n", regs->tpc);
|
|
|
|
|
|
+ printk(KERN_EMERG "SUN4V-DTLB: TPC<%pS>\n", (void *) regs->tpc);
|
|
printk(KERN_EMERG "SUN4V-DTLB: O7[%lx]\n", regs->u_regs[UREG_I7]);
|
|
printk(KERN_EMERG "SUN4V-DTLB: O7[%lx]\n", regs->u_regs[UREG_I7]);
|
|
- print_symbol(KERN_EMERG "SUN4V-DTLB: O7<%s>\n", regs->u_regs[UREG_I7]);
|
|
|
|
|
|
+ printk(KERN_EMERG "SUN4V-DTLB: O7<%pS>\n",
|
|
|
|
+ (void *) regs->u_regs[UREG_I7]);
|
|
printk(KERN_EMERG "SUN4V-DTLB: vaddr[%lx] ctx[%lx] "
|
|
printk(KERN_EMERG "SUN4V-DTLB: vaddr[%lx] ctx[%lx] "
|
|
"pte[%lx] error[%lx]\n",
|
|
"pte[%lx] error[%lx]\n",
|
|
sun4v_err_dtlb_vaddr, sun4v_err_dtlb_ctx,
|
|
sun4v_err_dtlb_vaddr, sun4v_err_dtlb_ctx,
|
|
@@ -2111,10 +2112,7 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp)
|
|
fp = ksp + STACK_BIAS;
|
|
fp = ksp + STACK_BIAS;
|
|
thread_base = (unsigned long) tp;
|
|
thread_base = (unsigned long) tp;
|
|
|
|
|
|
- printk("Call Trace:");
|
|
|
|
-#ifdef CONFIG_KALLSYMS
|
|
|
|
- printk("\n");
|
|
|
|
-#endif
|
|
|
|
|
|
+ printk("Call Trace:\n");
|
|
do {
|
|
do {
|
|
struct sparc_stackf *sf;
|
|
struct sparc_stackf *sf;
|
|
struct pt_regs *regs;
|
|
struct pt_regs *regs;
|
|
@@ -2137,12 +2135,8 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp)
|
|
fp = (unsigned long)sf->fp + STACK_BIAS;
|
|
fp = (unsigned long)sf->fp + STACK_BIAS;
|
|
}
|
|
}
|
|
|
|
|
|
- printk(" [%016lx] ", pc);
|
|
|
|
- print_symbol("%s\n", pc);
|
|
|
|
|
|
+ printk(" [%016lx] %pS\n", pc, (void *) pc);
|
|
} while (++count < 16);
|
|
} while (++count < 16);
|
|
-#ifndef CONFIG_KALLSYMS
|
|
|
|
- printk("\n");
|
|
|
|
-#endif
|
|
|
|
}
|
|
}
|
|
|
|
|
|
void dump_stack(void)
|
|
void dump_stack(void)
|
|
@@ -2211,9 +2205,8 @@ void die_if_kernel(char *str, struct pt_regs *regs)
|
|
while (rw &&
|
|
while (rw &&
|
|
count++ < 30&&
|
|
count++ < 30&&
|
|
is_kernel_stack(current, rw)) {
|
|
is_kernel_stack(current, rw)) {
|
|
- printk("Caller[%016lx]", rw->ins[7]);
|
|
|
|
- print_symbol(": %s", rw->ins[7]);
|
|
|
|
- printk("\n");
|
|
|
|
|
|
+ printk("Caller[%016lx]: %pS\n", rw->ins[7],
|
|
|
|
+ (void *) rw->ins[7]);
|
|
|
|
|
|
rw = kernel_stack_up(rw);
|
|
rw = kernel_stack_up(rw);
|
|
}
|
|
}
|