diff options
| author | Olaf Hering <olh@suse.de> | 2004-11-07 04:11:09 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-11-07 04:11:09 -0800 |
| commit | 7602d24973c896f3d5070d96e8c19377d6e25c36 (patch) | |
| tree | 7c80a8a13b97e1f11b249829eac32bec43928a9f /include/linux | |
| parent | 38b7c3b242e7664a1b5ffde439b4375c6770ba76 (diff) | |
[PATCH] fix initcall_debug on ppc64/ia64
ia64 and ppc64 have function descriptors. Booting with initcall_debug will
print the descriptor address, not the address and name of the actual
function. Another indirection is required.
Tested on ppc, ppc64 and ia64.
Signed-off-by: Olaf Hering <olh@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/kallsyms.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/include/linux/kallsyms.h b/include/linux/kallsyms.h index 1a5dce8f9346..9bbd04092365 100644 --- a/include/linux/kallsyms.h +++ b/include/linux/kallsyms.h @@ -47,6 +47,16 @@ __attribute__((format(printf,1,2))); static inline void __check_printsym_format(const char *fmt, ...) { } +/* ia64 and ppc64 use function descriptors, which contain the real address */ +#if defined(CONFIG_IA64) || defined(CONFIG_PPC64) +#define print_fn_descriptor_symbol(fmt, addr) \ +do { \ + unsigned long *__faddr = (unsigned long*) addr; \ + print_symbol(fmt, __faddr[0]); \ +} while (0) +#else +#define print_fn_descriptor_symbol(fmt, addr) print_symbol(fmt, addr) +#endif #define print_symbol(fmt, addr) \ do { \ |
