diff options
author | David S. Miller <davem@davemloft.net> | 2008-07-18 01:11:32 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-07-18 01:11:32 -0400 |
commit | 4fe3ebec122f23a095cc1d17557c175caaa55ca1 (patch) | |
tree | 034197d736e08b076cb849d2cac1b1e974d38cbc /arch | |
parent | f538f3df4f92f34f5d8bc024d54c12387541cdee (diff) |
sparc: Use new '%pS' infrastructure to print symbols.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sparc/kernel/process.c | 11 | ||||
-rw-r--r-- | arch/sparc/kernel/traps.c | 7 | ||||
-rw-r--r-- | arch/sparc64/kernel/process.c | 26 | ||||
-rw-r--r-- | arch/sparc64/kernel/traps.c | 37 | ||||
-rw-r--r-- | arch/sparc64/kernel/unaligned.c | 7 | ||||
-rw-r--r-- | arch/sparc64/mm/fault.c | 5 |
6 files changed, 37 insertions, 56 deletions
diff --git a/arch/sparc/kernel/process.c b/arch/sparc/kernel/process.c index e18a5da025d3..4bb430940a61 100644 --- a/arch/sparc/kernel/process.c +++ b/arch/sparc/kernel/process.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* linux/arch/sparc/kernel/process.c | 1 | /* linux/arch/sparc/kernel/process.c |
2 | * | 2 | * |
3 | * Copyright (C) 1995 David S. Miller (davem@davemloft.net) | 3 | * Copyright (C) 1995, 2008 David S. Miller (davem@davemloft.net) |
4 | * Copyright (C) 1996 Eddie C. Dost (ecd@skynet.be) | 4 | * Copyright (C) 1996 Eddie C. Dost (ecd@skynet.be) |
5 | */ | 5 | */ |
6 | 6 | ||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/module.h> | 14 | #include <linux/module.h> |
15 | #include <linux/sched.h> | 15 | #include <linux/sched.h> |
16 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
17 | #include <linux/kallsyms.h> | ||
18 | #include <linux/mm.h> | 17 | #include <linux/mm.h> |
19 | #include <linux/stddef.h> | 18 | #include <linux/stddef.h> |
20 | #include <linux/ptrace.h> | 19 | #include <linux/ptrace.h> |
@@ -198,7 +197,7 @@ void __show_backtrace(unsigned long fp) | |||
198 | rw->ins[4], rw->ins[5], | 197 | rw->ins[4], rw->ins[5], |
199 | rw->ins[6], | 198 | rw->ins[6], |
200 | rw->ins[7]); | 199 | rw->ins[7]); |
201 | print_symbol("%s\n", rw->ins[7]); | 200 | printk("%pS\n", (void *) rw->ins[7]); |
202 | rw = (struct reg_window *) rw->ins[6]; | 201 | rw = (struct reg_window *) rw->ins[6]; |
203 | } | 202 | } |
204 | spin_unlock_irqrestore(&sparc_backtrace_lock, flags); | 203 | spin_unlock_irqrestore(&sparc_backtrace_lock, flags); |
@@ -265,14 +264,14 @@ void show_regs(struct pt_regs *r) | |||
265 | 264 | ||
266 | printk("PSR: %08lx PC: %08lx NPC: %08lx Y: %08lx %s\n", | 265 | printk("PSR: %08lx PC: %08lx NPC: %08lx Y: %08lx %s\n", |
267 | r->psr, r->pc, r->npc, r->y, print_tainted()); | 266 | r->psr, r->pc, r->npc, r->y, print_tainted()); |
268 | print_symbol("PC: <%s>\n", r->pc); | 267 | printk("PC: <%pS>\n", (void *) r->pc); |
269 | printk("%%G: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n", | 268 | printk("%%G: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n", |
270 | r->u_regs[0], r->u_regs[1], r->u_regs[2], r->u_regs[3], | 269 | r->u_regs[0], r->u_regs[1], r->u_regs[2], r->u_regs[3], |
271 | r->u_regs[4], r->u_regs[5], r->u_regs[6], r->u_regs[7]); | 270 | r->u_regs[4], r->u_regs[5], r->u_regs[6], r->u_regs[7]); |
272 | printk("%%O: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n", | 271 | printk("%%O: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n", |
273 | r->u_regs[8], r->u_regs[9], r->u_regs[10], r->u_regs[11], | 272 | r->u_regs[8], r->u_regs[9], r->u_regs[10], r->u_regs[11], |
274 | r->u_regs[12], r->u_regs[13], r->u_regs[14], r->u_regs[15]); | 273 | r->u_regs[12], r->u_regs[13], r->u_regs[14], r->u_regs[15]); |
275 | print_symbol("RPC: <%s>\n", r->u_regs[15]); | 274 | printk("RPC: <%pS>\n", (void *) r->u_regs[15]); |
276 | 275 | ||
277 | printk("%%L: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n", | 276 | printk("%%L: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n", |
278 | rw->locals[0], rw->locals[1], rw->locals[2], rw->locals[3], | 277 | rw->locals[0], rw->locals[1], rw->locals[2], rw->locals[3], |
@@ -307,7 +306,7 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp) | |||
307 | rw = (struct reg_window *) fp; | 306 | rw = (struct reg_window *) fp; |
308 | pc = rw->ins[7]; | 307 | pc = rw->ins[7]; |
309 | printk("[%08lx : ", pc); | 308 | printk("[%08lx : ", pc); |
310 | print_symbol("%s ] ", pc); | 309 | printk("%pS ] ", (void *) pc); |
311 | fp = rw->ins[6]; | 310 | fp = rw->ins[6]; |
312 | } while (++count < 16); | 311 | } while (++count < 16); |
313 | printk("\n"); | 312 | printk("\n"); |
diff --git a/arch/sparc/kernel/traps.c b/arch/sparc/kernel/traps.c index ac8ee6ab1337..5d45d5fd8c99 100644 --- a/arch/sparc/kernel/traps.c +++ b/arch/sparc/kernel/traps.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * arch/sparc/kernel/traps.c | 2 | * arch/sparc/kernel/traps.c |
3 | * | 3 | * |
4 | * Copyright 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright 1995, 2008 David S. Miller (davem@davemloft.net) |
5 | * Copyright 2000 Jakub Jelinek (jakub@redhat.com) | 5 | * Copyright 2000 Jakub Jelinek (jakub@redhat.com) |
6 | */ | 6 | */ |
7 | 7 | ||
@@ -11,7 +11,6 @@ | |||
11 | 11 | ||
12 | #include <linux/sched.h> /* for jiffies */ | 12 | #include <linux/sched.h> /* for jiffies */ |
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/kallsyms.h> | ||
15 | #include <linux/signal.h> | 14 | #include <linux/signal.h> |
16 | #include <linux/smp.h> | 15 | #include <linux/smp.h> |
17 | #include <linux/smp_lock.h> | 16 | #include <linux/smp_lock.h> |
@@ -116,8 +115,8 @@ void die_if_kernel(char *str, struct pt_regs *regs) | |||
116 | count++ < 30 && | 115 | count++ < 30 && |
117 | (((unsigned long) rw) >= PAGE_OFFSET) && | 116 | (((unsigned long) rw) >= PAGE_OFFSET) && |
118 | !(((unsigned long) rw) & 0x7)) { | 117 | !(((unsigned long) rw) & 0x7)) { |
119 | printk("Caller[%08lx]", rw->ins[7]); | 118 | printk("Caller[%08lx]: %pS\n", rw->ins[7], |
120 | print_symbol(": %s\n", rw->ins[7]); | 119 | (void *) rw->ins[7]); |
121 | rw = (struct reg_window *)rw->ins[6]; | 120 | rw = (struct reg_window *)rw->ins[6]; |
122 | } | 121 | } |
123 | } | 122 | } |
diff --git a/arch/sparc64/kernel/process.c b/arch/sparc64/kernel/process.c index 2084f81a76e1..c1f1ff29e979 100644 --- a/arch/sparc64/kernel/process.c +++ b/arch/sparc64/kernel/process.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/module.h> | 15 | #include <linux/module.h> |
16 | #include <linux/sched.h> | 16 | #include <linux/sched.h> |
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | #include <linux/kallsyms.h> | ||
19 | #include <linux/mm.h> | 18 | #include <linux/mm.h> |
20 | #include <linux/fs.h> | 19 | #include <linux/fs.h> |
21 | #include <linux/smp.h> | 20 | #include <linux/smp.h> |
@@ -211,7 +210,7 @@ static void show_regwindow(struct pt_regs *regs) | |||
211 | printk("i4: %016lx i5: %016lx i6: %016lx i7: %016lx\n", | 210 | printk("i4: %016lx i5: %016lx i6: %016lx i7: %016lx\n", |
212 | rwk->ins[4], rwk->ins[5], rwk->ins[6], rwk->ins[7]); | 211 | rwk->ins[4], rwk->ins[5], rwk->ins[6], rwk->ins[7]); |
213 | if (regs->tstate & TSTATE_PRIV) | 212 | if (regs->tstate & TSTATE_PRIV) |
214 | print_symbol("I7: <%s>\n", rwk->ins[7]); | 213 | printk("I7: <%pS>\n", (void *) rwk->ins[7]); |
215 | } | 214 | } |
216 | 215 | ||
217 | #ifdef CONFIG_SMP | 216 | #ifdef CONFIG_SMP |
@@ -232,7 +231,7 @@ void __show_regs(struct pt_regs * regs) | |||
232 | #endif | 231 | #endif |
233 | printk("TSTATE: %016lx TPC: %016lx TNPC: %016lx Y: %08x %s\n", regs->tstate, | 232 | printk("TSTATE: %016lx TPC: %016lx TNPC: %016lx Y: %08x %s\n", regs->tstate, |
234 | regs->tpc, regs->tnpc, regs->y, print_tainted()); | 233 | regs->tpc, regs->tnpc, regs->y, print_tainted()); |
235 | print_symbol("TPC: <%s>\n", regs->tpc); | 234 | printk("TPC: <%pS>\n", (void *) regs->tpc); |
236 | printk("g0: %016lx g1: %016lx g2: %016lx g3: %016lx\n", | 235 | printk("g0: %016lx g1: %016lx g2: %016lx g3: %016lx\n", |
237 | regs->u_regs[0], regs->u_regs[1], regs->u_regs[2], | 236 | regs->u_regs[0], regs->u_regs[1], regs->u_regs[2], |
238 | regs->u_regs[3]); | 237 | regs->u_regs[3]); |
@@ -245,7 +244,7 @@ void __show_regs(struct pt_regs * regs) | |||
245 | printk("o4: %016lx o5: %016lx sp: %016lx ret_pc: %016lx\n", | 244 | printk("o4: %016lx o5: %016lx sp: %016lx ret_pc: %016lx\n", |
246 | regs->u_regs[12], regs->u_regs[13], regs->u_regs[14], | 245 | regs->u_regs[12], regs->u_regs[13], regs->u_regs[14], |
247 | regs->u_regs[15]); | 246 | regs->u_regs[15]); |
248 | print_symbol("RPC: <%s>\n", regs->u_regs[15]); | 247 | printk("RPC: <%pS>\n", (void *) regs->u_regs[15]); |
249 | show_regwindow(regs); | 248 | show_regwindow(regs); |
250 | #ifdef CONFIG_SMP | 249 | #ifdef CONFIG_SMP |
251 | spin_unlock(®dump_lock); | 250 | spin_unlock(®dump_lock); |
@@ -346,9 +345,6 @@ static void sysrq_handle_globreg(int key, struct tty_struct *tty) | |||
346 | { | 345 | { |
347 | struct thread_info *tp = current_thread_info(); | 346 | struct thread_info *tp = current_thread_info(); |
348 | struct pt_regs *regs = get_irq_regs(); | 347 | struct pt_regs *regs = get_irq_regs(); |
349 | #ifdef CONFIG_KALLSYMS | ||
350 | char buffer[KSYM_SYMBOL_LEN]; | ||
351 | #endif | ||
352 | unsigned long flags; | 348 | unsigned long flags; |
353 | int this_cpu, cpu; | 349 | int this_cpu, cpu; |
354 | 350 | ||
@@ -377,17 +373,13 @@ static void sysrq_handle_globreg(int key, struct tty_struct *tty) | |||
377 | gp->tstate, gp->tpc, gp->tnpc, | 373 | gp->tstate, gp->tpc, gp->tnpc, |
378 | ((tp && tp->task) ? tp->task->comm : "NULL"), | 374 | ((tp && tp->task) ? tp->task->comm : "NULL"), |
379 | ((tp && tp->task) ? tp->task->pid : -1)); | 375 | ((tp && tp->task) ? tp->task->pid : -1)); |
380 | #ifdef CONFIG_KALLSYMS | 376 | |
381 | if (gp->tstate & TSTATE_PRIV) { | 377 | if (gp->tstate & TSTATE_PRIV) { |
382 | sprint_symbol(buffer, gp->tpc); | 378 | printk(" TPC[%pS] O7[%pS] I7[%pS]\n", |
383 | printk(" TPC[%s] ", buffer); | 379 | (void *) gp->tpc, |
384 | sprint_symbol(buffer, gp->o7); | 380 | (void *) gp->o7, |
385 | printk("O7[%s] ", buffer); | 381 | (void *) gp->i7); |
386 | sprint_symbol(buffer, gp->i7); | 382 | } else { |
387 | printk("I7[%s]\n", buffer); | ||
388 | } else | ||
389 | #endif | ||
390 | { | ||
391 | printk(" TPC[%lx] O7[%lx] I7[%lx]\n", | 383 | printk(" TPC[%lx] O7[%lx] I7[%lx]\n", |
392 | gp->tpc, gp->o7, gp->i7); | 384 | gp->tpc, gp->o7, gp->i7); |
393 | } | 385 | } |
diff --git a/arch/sparc64/kernel/traps.c b/arch/sparc64/kernel/traps.c index 369749262653..0aa819c29dbc 100644 --- a/arch/sparc64/kernel/traps.c +++ b/arch/sparc64/kernel/traps.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* arch/sparc64/kernel/traps.c | 1 | /* arch/sparc64/kernel/traps.c |
2 | * | 2 | * |
3 | * Copyright (C) 1995,1997 David S. Miller (davem@davemloft.net) | 3 | * Copyright (C) 1995,1997,2008 David S. Miller (davem@davemloft.net) |
4 | * Copyright (C) 1997,1999,2000 Jakub Jelinek (jakub@redhat.com) | 4 | * Copyright (C) 1997,1999,2000 Jakub Jelinek (jakub@redhat.com) |
5 | */ | 5 | */ |
6 | 6 | ||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | #include <linux/sched.h> | 12 | #include <linux/sched.h> |
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/kallsyms.h> | ||
15 | #include <linux/signal.h> | 14 | #include <linux/signal.h> |
16 | #include <linux/smp.h> | 15 | #include <linux/smp.h> |
17 | #include <linux/mm.h> | 16 | #include <linux/mm.h> |
@@ -74,7 +73,7 @@ static void dump_tl1_traplog(struct tl1_traplog *p) | |||
74 | i + 1, | 73 | i + 1, |
75 | p->trapstack[i].tstate, p->trapstack[i].tpc, | 74 | p->trapstack[i].tstate, p->trapstack[i].tpc, |
76 | p->trapstack[i].tnpc, p->trapstack[i].tt); | 75 | p->trapstack[i].tnpc, p->trapstack[i].tt); |
77 | print_symbol("TRAPLOG: TPC<%s>\n", p->trapstack[i].tpc); | 76 | printk("TRAPLOG: TPC<%pS>\n", (void *) p->trapstack[i].tpc); |
78 | } | 77 | } |
79 | } | 78 | } |
80 | 79 | ||
@@ -1081,7 +1080,7 @@ static void cheetah_log_errors(struct pt_regs *regs, struct cheetah_err_info *in | |||
1081 | regs->tpc, regs->tnpc, regs->u_regs[UREG_I7], regs->tstate); | 1080 | regs->tpc, regs->tnpc, regs->u_regs[UREG_I7], regs->tstate); |
1082 | printk("%s" "ERROR(%d): ", | 1081 | printk("%s" "ERROR(%d): ", |
1083 | (recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id()); | 1082 | (recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id()); |
1084 | print_symbol("TPC<%s>\n", regs->tpc); | 1083 | printk("TPC<%pS>\n", (void *) regs->tpc); |
1085 | printk("%s" "ERROR(%d): M_SYND(%lx), E_SYND(%lx)%s%s\n", | 1084 | printk("%s" "ERROR(%d): M_SYND(%lx), E_SYND(%lx)%s%s\n", |
1086 | (recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id(), | 1085 | (recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id(), |
1087 | (afsr & CHAFSR_M_SYNDROME) >> CHAFSR_M_SYNDROME_SHIFT, | 1086 | (afsr & CHAFSR_M_SYNDROME) >> CHAFSR_M_SYNDROME_SHIFT, |
@@ -1689,7 +1688,7 @@ void cheetah_plus_parity_error(int type, struct pt_regs *regs) | |||
1689 | smp_processor_id(), | 1688 | smp_processor_id(), |
1690 | (type & 0x1) ? 'I' : 'D', | 1689 | (type & 0x1) ? 'I' : 'D', |
1691 | regs->tpc); | 1690 | regs->tpc); |
1692 | print_symbol(KERN_EMERG "TPC<%s>\n", regs->tpc); | 1691 | printk(KERN_EMERG "TPC<%pS>\n", (void *) regs->tpc); |
1693 | panic("Irrecoverable Cheetah+ parity error."); | 1692 | panic("Irrecoverable Cheetah+ parity error."); |
1694 | } | 1693 | } |
1695 | 1694 | ||
@@ -1697,7 +1696,7 @@ void cheetah_plus_parity_error(int type, struct pt_regs *regs) | |||
1697 | smp_processor_id(), | 1696 | smp_processor_id(), |
1698 | (type & 0x1) ? 'I' : 'D', | 1697 | (type & 0x1) ? 'I' : 'D', |
1699 | regs->tpc); | 1698 | regs->tpc); |
1700 | print_symbol(KERN_WARNING "TPC<%s>\n", regs->tpc); | 1699 | printk(KERN_WARNING "TPC<%pS>\n", (void *) regs->tpc); |
1701 | } | 1700 | } |
1702 | 1701 | ||
1703 | struct sun4v_error_entry { | 1702 | struct sun4v_error_entry { |
@@ -1904,9 +1903,10 @@ void sun4v_itlb_error_report(struct pt_regs *regs, int tl) | |||
1904 | 1903 | ||
1905 | printk(KERN_EMERG "SUN4V-ITLB: Error at TPC[%lx], tl %d\n", | 1904 | printk(KERN_EMERG "SUN4V-ITLB: Error at TPC[%lx], tl %d\n", |
1906 | regs->tpc, tl); | 1905 | regs->tpc, tl); |
1907 | print_symbol(KERN_EMERG "SUN4V-ITLB: TPC<%s>\n", regs->tpc); | 1906 | printk(KERN_EMERG "SUN4V-ITLB: TPC<%pS>\n", (void *) regs->tpc); |
1908 | printk(KERN_EMERG "SUN4V-ITLB: O7[%lx]\n", regs->u_regs[UREG_I7]); | 1907 | printk(KERN_EMERG "SUN4V-ITLB: O7[%lx]\n", regs->u_regs[UREG_I7]); |
1909 | print_symbol(KERN_EMERG "SUN4V-ITLB: O7<%s>\n", regs->u_regs[UREG_I7]); | 1908 | printk(KERN_EMERG "SUN4V-ITLB: O7<%pS>\n", |
1909 | (void *) regs->u_regs[UREG_I7]); | ||
1910 | printk(KERN_EMERG "SUN4V-ITLB: vaddr[%lx] ctx[%lx] " | 1910 | printk(KERN_EMERG "SUN4V-ITLB: vaddr[%lx] ctx[%lx] " |
1911 | "pte[%lx] error[%lx]\n", | 1911 | "pte[%lx] error[%lx]\n", |
1912 | sun4v_err_itlb_vaddr, sun4v_err_itlb_ctx, | 1912 | sun4v_err_itlb_vaddr, sun4v_err_itlb_ctx, |
@@ -1927,9 +1927,10 @@ void sun4v_dtlb_error_report(struct pt_regs *regs, int tl) | |||
1927 | 1927 | ||
1928 | printk(KERN_EMERG "SUN4V-DTLB: Error at TPC[%lx], tl %d\n", | 1928 | printk(KERN_EMERG "SUN4V-DTLB: Error at TPC[%lx], tl %d\n", |
1929 | regs->tpc, tl); | 1929 | regs->tpc, tl); |
1930 | print_symbol(KERN_EMERG "SUN4V-DTLB: TPC<%s>\n", regs->tpc); | 1930 | printk(KERN_EMERG "SUN4V-DTLB: TPC<%pS>\n", (void *) regs->tpc); |
1931 | printk(KERN_EMERG "SUN4V-DTLB: O7[%lx]\n", regs->u_regs[UREG_I7]); | 1931 | printk(KERN_EMERG "SUN4V-DTLB: O7[%lx]\n", regs->u_regs[UREG_I7]); |
1932 | print_symbol(KERN_EMERG "SUN4V-DTLB: O7<%s>\n", regs->u_regs[UREG_I7]); | 1932 | printk(KERN_EMERG "SUN4V-DTLB: O7<%pS>\n", |
1933 | (void *) regs->u_regs[UREG_I7]); | ||
1933 | printk(KERN_EMERG "SUN4V-DTLB: vaddr[%lx] ctx[%lx] " | 1934 | printk(KERN_EMERG "SUN4V-DTLB: vaddr[%lx] ctx[%lx] " |
1934 | "pte[%lx] error[%lx]\n", | 1935 | "pte[%lx] error[%lx]\n", |
1935 | sun4v_err_dtlb_vaddr, sun4v_err_dtlb_ctx, | 1936 | sun4v_err_dtlb_vaddr, sun4v_err_dtlb_ctx, |
@@ -2111,10 +2112,7 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp) | |||
2111 | fp = ksp + STACK_BIAS; | 2112 | fp = ksp + STACK_BIAS; |
2112 | thread_base = (unsigned long) tp; | 2113 | thread_base = (unsigned long) tp; |
2113 | 2114 | ||
2114 | printk("Call Trace:"); | 2115 | printk("Call Trace:\n"); |
2115 | #ifdef CONFIG_KALLSYMS | ||
2116 | printk("\n"); | ||
2117 | #endif | ||
2118 | do { | 2116 | do { |
2119 | struct sparc_stackf *sf; | 2117 | struct sparc_stackf *sf; |
2120 | struct pt_regs *regs; | 2118 | struct pt_regs *regs; |
@@ -2137,12 +2135,8 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp) | |||
2137 | fp = (unsigned long)sf->fp + STACK_BIAS; | 2135 | fp = (unsigned long)sf->fp + STACK_BIAS; |
2138 | } | 2136 | } |
2139 | 2137 | ||
2140 | printk(" [%016lx] ", pc); | 2138 | printk(" [%016lx] %pS\n", pc, (void *) pc); |
2141 | print_symbol("%s\n", pc); | ||
2142 | } while (++count < 16); | 2139 | } while (++count < 16); |
2143 | #ifndef CONFIG_KALLSYMS | ||
2144 | printk("\n"); | ||
2145 | #endif | ||
2146 | } | 2140 | } |
2147 | 2141 | ||
2148 | void dump_stack(void) | 2142 | void dump_stack(void) |
@@ -2211,9 +2205,8 @@ void die_if_kernel(char *str, struct pt_regs *regs) | |||
2211 | while (rw && | 2205 | while (rw && |
2212 | count++ < 30&& | 2206 | count++ < 30&& |
2213 | is_kernel_stack(current, rw)) { | 2207 | is_kernel_stack(current, rw)) { |
2214 | printk("Caller[%016lx]", rw->ins[7]); | 2208 | printk("Caller[%016lx]: %pS\n", rw->ins[7], |
2215 | print_symbol(": %s", rw->ins[7]); | 2209 | (void *) rw->ins[7]); |
2216 | printk("\n"); | ||
2217 | 2210 | ||
2218 | rw = kernel_stack_up(rw); | 2211 | rw = kernel_stack_up(rw); |
2219 | } | 2212 | } |
diff --git a/arch/sparc64/kernel/unaligned.c b/arch/sparc64/kernel/unaligned.c index afa7fc4f5193..203ddfad9f27 100644 --- a/arch/sparc64/kernel/unaligned.c +++ b/arch/sparc64/kernel/unaligned.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * unaligned.c: Unaligned load/store trap handling with special | 2 | * unaligned.c: Unaligned load/store trap handling with special |
3 | * cases for the kernel to do them more quickly. | 3 | * cases for the kernel to do them more quickly. |
4 | * | 4 | * |
5 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) | 5 | * Copyright (C) 1996,2008 David S. Miller (davem@davemloft.net) |
6 | * Copyright (C) 1996,1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) | 6 | * Copyright (C) 1996,1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) |
7 | */ | 7 | */ |
8 | 8 | ||
@@ -20,7 +20,6 @@ | |||
20 | #include <asm/uaccess.h> | 20 | #include <asm/uaccess.h> |
21 | #include <linux/smp.h> | 21 | #include <linux/smp.h> |
22 | #include <linux/bitops.h> | 22 | #include <linux/bitops.h> |
23 | #include <linux/kallsyms.h> | ||
24 | #include <asm/fpumacro.h> | 23 | #include <asm/fpumacro.h> |
25 | 24 | ||
26 | /* #define DEBUG_MNA */ | 25 | /* #define DEBUG_MNA */ |
@@ -289,8 +288,8 @@ static void log_unaligned(struct pt_regs *regs) | |||
289 | if (count < 5) { | 288 | if (count < 5) { |
290 | last_time = jiffies; | 289 | last_time = jiffies; |
291 | count++; | 290 | count++; |
292 | printk("Kernel unaligned access at TPC[%lx] ", regs->tpc); | 291 | printk("Kernel unaligned access at TPC[%lx] %pS\n", |
293 | print_symbol("%s\n", regs->tpc); | 292 | regs->tpc, (void *) regs->tpc); |
294 | } | 293 | } |
295 | } | 294 | } |
296 | 295 | ||
diff --git a/arch/sparc64/mm/fault.c b/arch/sparc64/mm/fault.c index 236f4d228d2b..ea7d7ae76bc2 100644 --- a/arch/sparc64/mm/fault.c +++ b/arch/sparc64/mm/fault.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * arch/sparc64/mm/fault.c: Page fault handlers for the 64-bit Sparc. | 2 | * arch/sparc64/mm/fault.c: Page fault handlers for the 64-bit Sparc. |
3 | * | 3 | * |
4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1996, 2008 David S. Miller (davem@davemloft.net) |
5 | * Copyright (C) 1997, 1999 Jakub Jelinek (jj@ultra.linux.cz) | 5 | * Copyright (C) 1997, 1999 Jakub Jelinek (jj@ultra.linux.cz) |
6 | */ | 6 | */ |
7 | 7 | ||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/interrupt.h> | 19 | #include <linux/interrupt.h> |
20 | #include <linux/kprobes.h> | 20 | #include <linux/kprobes.h> |
21 | #include <linux/kallsyms.h> | ||
22 | #include <linux/kdebug.h> | 21 | #include <linux/kdebug.h> |
23 | 22 | ||
24 | #include <asm/page.h> | 23 | #include <asm/page.h> |
@@ -115,7 +114,7 @@ static void bad_kernel_pc(struct pt_regs *regs, unsigned long vaddr) | |||
115 | printk(KERN_CRIT "OOPS: Bogus kernel PC [%016lx] in fault handler\n", | 114 | printk(KERN_CRIT "OOPS: Bogus kernel PC [%016lx] in fault handler\n", |
116 | regs->tpc); | 115 | regs->tpc); |
117 | printk(KERN_CRIT "OOPS: RPC [%016lx]\n", regs->u_regs[15]); | 116 | printk(KERN_CRIT "OOPS: RPC [%016lx]\n", regs->u_regs[15]); |
118 | print_symbol("RPC: <%s>\n", regs->u_regs[15]); | 117 | printk("OOPS: RPC <%pS>\n", (void *) regs->u_regs[15]); |
119 | printk(KERN_CRIT "OOPS: Fault was to vaddr[%lx]\n", vaddr); | 118 | printk(KERN_CRIT "OOPS: Fault was to vaddr[%lx]\n", vaddr); |
120 | dump_stack(); | 119 | dump_stack(); |
121 | unhandled_fault(regs->tpc, current, regs); | 120 | unhandled_fault(regs->tpc, current, regs); |