diff options
author | Andi Kleen <ak@linux.intel.com> | 2013-11-12 18:08:36 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-12 22:09:12 -0500 |
commit | 83460ec8dcac14142e7860a01fa59c267ac4657c (patch) | |
tree | 6bd63a842820b67150d74267dc07372be339f5c3 /include/linux/syscalls.h | |
parent | 54886a7153353ea2bf21ebfc1b8e030e71d151d7 (diff) |
syscalls.h: use gcc alias instead of assembler aliases for syscalls
Use standard gcc __attribute__((alias(foo))) to define the syscall aliases
instead of custom assembler macros.
This is far cleaner, and also fixes my LTO kernel build.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: Al Viro <viro@ZenIV.linux.org.uk>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/syscalls.h')
-rw-r--r-- | include/linux/syscalls.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 7fac04e7ff6e..c27f846f6b71 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
@@ -184,7 +184,8 @@ extern struct trace_event_functions exit_syscall_print_funcs; | |||
184 | 184 | ||
185 | #define __PROTECT(...) asmlinkage_protect(__VA_ARGS__) | 185 | #define __PROTECT(...) asmlinkage_protect(__VA_ARGS__) |
186 | #define __SYSCALL_DEFINEx(x, name, ...) \ | 186 | #define __SYSCALL_DEFINEx(x, name, ...) \ |
187 | asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ | 187 | asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ |
188 | __attribute__((alias(__stringify(SyS##name)))); \ | ||
188 | static inline long SYSC##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ | 189 | static inline long SYSC##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ |
189 | asmlinkage long SyS##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ | 190 | asmlinkage long SyS##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ |
190 | asmlinkage long SyS##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ | 191 | asmlinkage long SyS##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ |
@@ -194,7 +195,6 @@ extern struct trace_event_functions exit_syscall_print_funcs; | |||
194 | __PROTECT(x, ret,__MAP(x,__SC_ARGS,__VA_ARGS__)); \ | 195 | __PROTECT(x, ret,__MAP(x,__SC_ARGS,__VA_ARGS__)); \ |
195 | return ret; \ | 196 | return ret; \ |
196 | } \ | 197 | } \ |
197 | SYSCALL_ALIAS(sys##name, SyS##name); \ | ||
198 | static inline long SYSC##name(__MAP(x,__SC_DECL,__VA_ARGS__)) | 198 | static inline long SYSC##name(__MAP(x,__SC_DECL,__VA_ARGS__)) |
199 | 199 | ||
200 | asmlinkage long sys_time(time_t __user *tloc); | 200 | asmlinkage long sys_time(time_t __user *tloc); |