diff options
author | Harvey Harrison <harvey.harrison@gmail.com> | 2008-01-30 13:33:25 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-30 13:33:25 +0100 |
commit | a5ff677c2fb10567d1e750fb9e4417d95081071b (patch) | |
tree | db7be4151a8aefcb4078843046f44a11df2e0746 /arch | |
parent | 625d6cffcac1c96faa18d629f1271d63af0e05f2 (diff) |
x86: make printk_address available on X86_32
Small fomatting fixes to 64-bit as well, trailing whitespace
and extra semicolon, also move the ifdefs for CONFIG_KALLSYMS
into the function itself.
Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/traps_32.c | 28 | ||||
-rw-r--r-- | arch/x86/kernel/traps_64.c | 11 |
2 files changed, 32 insertions, 7 deletions
diff --git a/arch/x86/kernel/traps_32.c b/arch/x86/kernel/traps_32.c index 270cfd48316..8534cb53ff6 100644 --- a/arch/x86/kernel/traps_32.c +++ b/arch/x86/kernel/traps_32.c @@ -102,6 +102,34 @@ asmlinkage void machine_check(void); int kstack_depth_to_print = 24; static unsigned int code_bytes = 64; +void printk_address(unsigned long address, int reliable) +{ +#ifdef CONFIG_KALLSYMS + unsigned long offset = 0, symsize; + const char *symname; + char *modname; + char *delim = ":"; + char namebuf[128]; + char reliab[4] = ""; + + symname = kallsyms_lookup(address, &symsize, &offset, + &modname, namebuf); + if (!symname) { + printk(" [<%08lx>]\n", address); + return; + } + if (!reliable) + strcpy(reliab, "? "); + + if (!modname) + modname = delim = ""; + printk(" [<%08lx>] %s%s%s%s%s+0x%lx/0x%lx\n", + address, reliab, delim, modname, delim, symname, offset, symsize); +#else + printk(" [<%08lx>]\n", address); +#endif +} + static inline int valid_stack_ptr(struct thread_info *tinfo, void *p, unsigned size) { return p > (void *)tinfo && diff --git a/arch/x86/kernel/traps_64.c b/arch/x86/kernel/traps_64.c index 4aa4520f949..4ea727869de 100644 --- a/arch/x86/kernel/traps_64.c +++ b/arch/x86/kernel/traps_64.c @@ -100,15 +100,15 @@ static inline void preempt_conditional_cli(struct pt_regs *regs) int kstack_depth_to_print = 12; -#ifdef CONFIG_KALLSYMS void printk_address(unsigned long address, int reliable) { +#ifdef CONFIG_KALLSYMS unsigned long offset = 0, symsize; const char *symname; char *modname; char *delim = ":"; char namebuf[128]; - char reliab[4] = "";; + char reliab[4] = ""; symname = kallsyms_lookup(address, &symsize, &offset, &modname, namebuf); @@ -120,16 +120,13 @@ void printk_address(unsigned long address, int reliable) strcpy(reliab, "? "); if (!modname) - modname = delim = ""; + modname = delim = ""; printk(" [<%016lx>] %s%s%s%s%s+0x%lx/0x%lx\n", address, reliab, delim, modname, delim, symname, offset, symsize); -} #else -void printk_address(unsigned long address, int reliable) -{ printk(" [<%016lx>]\n", address); -} #endif +} static unsigned long *in_exception_stack(unsigned cpu, unsigned long stack, unsigned *usedp, char **idp) |