aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-generic
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2013-03-15 00:34:17 -0400
committerRusty Russell <rusty@rustcorp.com.au>2013-03-15 00:39:43 -0400
commitb92021b09df70c1609e3547f3d6128dd560be97f (patch)
tree0203752a738c71718f5141b84f5143d1dc8b431d /include/asm-generic
parent4febd95a8a85dd38b1a71fcf9726e19c7fd20039 (diff)
CONFIG_SYMBOL_PREFIX: cleanup.
We have CONFIG_SYMBOL_PREFIX, which three archs define to the string "_". But Al Viro broke this in "consolidate cond_syscall and SYSCALL_ALIAS declarations" (in linux-next), and he's not the first to do so. Using CONFIG_SYMBOL_PREFIX is awkward, since we usually just want to prefix it so something. So various places define helpers which are defined to nothing if CONFIG_SYMBOL_PREFIX isn't set: 1) include/asm-generic/unistd.h defines __SYMBOL_PREFIX. 2) include/asm-generic/vmlinux.lds.h defines VMLINUX_SYMBOL(sym) 3) include/linux/export.h defines MODULE_SYMBOL_PREFIX. 4) include/linux/kernel.h defines SYMBOL_PREFIX (which differs from #7) 5) kernel/modsign_certificate.S defines ASM_SYMBOL(sym) 6) scripts/modpost.c defines MODULE_SYMBOL_PREFIX 7) scripts/Makefile.lib defines SYMBOL_PREFIX on the commandline if CONFIG_SYMBOL_PREFIX is set, so that we have a non-string version for pasting. (arch/h8300/include/asm/linkage.h defines SYMBOL_NAME(), too). Let's solve this properly: 1) No more generic prefix, just CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX. 2) Make linux/export.h usable from asm. 3) Define VMLINUX_SYMBOL() and VMLINUX_SYMBOL_STR(). 4) Make everyone use them. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Reviewed-by: James Hogan <james.hogan@imgtec.com> Tested-by: James Hogan <james.hogan@imgtec.com> (metag)
Diffstat (limited to 'include/asm-generic')
-rw-r--r--include/asm-generic/unistd.h12
-rw-r--r--include/asm-generic/vmlinux.lds.h8
2 files changed, 5 insertions, 15 deletions
diff --git a/include/asm-generic/unistd.h b/include/asm-generic/unistd.h
index 4077b5d9ff81..15c0598e1109 100644
--- a/include/asm-generic/unistd.h
+++ b/include/asm-generic/unistd.h
@@ -1,4 +1,5 @@
1#include <uapi/asm-generic/unistd.h> 1#include <uapi/asm-generic/unistd.h>
2#include <linux/export.h>
2 3
3/* 4/*
4 * These are required system calls, we should 5 * These are required system calls, we should
@@ -17,12 +18,7 @@
17 * but it doesn't work on all toolchains, so we just do it by hand 18 * but it doesn't work on all toolchains, so we just do it by hand
18 */ 19 */
19#ifndef cond_syscall 20#ifndef cond_syscall
20#ifdef CONFIG_SYMBOL_PREFIX 21#define cond_syscall(x) asm(".weak\t" VMLINUX_SYMBOL_STR(x) "\n\t" \
21#define __SYMBOL_PREFIX CONFIG_SYMBOL_PREFIX 22 ".set\t" VMLINUX_SYMBOL_STR(x) "," \
22#else 23 VMLINUX_SYMBOL_STR(sys_ni_syscall))
23#define __SYMBOL_PREFIX
24#endif
25#define cond_syscall(x) asm(".weak\t" __SYMBOL_PREFIX #x "\n\t" \
26 ".set\t" __SYMBOL_PREFIX #x "," \
27 __SYMBOL_PREFIX "sys_ni_syscall")
28#endif 24#endif
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index afa12c7a025c..eb58d2d7d971 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -52,13 +52,7 @@
52#define LOAD_OFFSET 0 52#define LOAD_OFFSET 0
53#endif 53#endif
54 54
55#ifndef SYMBOL_PREFIX 55#include <linux/export.h>
56#define VMLINUX_SYMBOL(sym) sym
57#else
58#define PASTE2(x,y) x##y
59#define PASTE(x,y) PASTE2(x,y)
60#define VMLINUX_SYMBOL(sym) PASTE(SYMBOL_PREFIX, sym)
61#endif
62 56
63/* Align . to a 8 byte boundary equals to maximum function alignment. */ 57/* Align . to a 8 byte boundary equals to maximum function alignment. */
64#define ALIGN_FUNCTION() . = ALIGN(8) 58#define ALIGN_FUNCTION() . = ALIGN(8)