mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 14:12:06 +00:00
consolidate cond_syscall and SYSCALL_ALIAS declarations
take them to asm/linkage.h, with default in linux/linkage.h Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
4a0fd5bf0f
commit
e1b5bb6d12
@ -1,6 +1,8 @@
|
||||
#ifndef __ASM_LINKAGE_H
|
||||
#define __ASM_LINKAGE_H
|
||||
|
||||
/* Nothing to see here... */
|
||||
#define cond_syscall(x) asm(".weak\t" #x "\n" #x " = sys_ni_syscall")
|
||||
#define SYSCALL_ALIAS(alias, name) \
|
||||
asm ( #alias " = " #name "\n\t.globl " #alias)
|
||||
|
||||
#endif
|
||||
|
@ -18,16 +18,4 @@
|
||||
#define __ARCH_WANT_SYS_VFORK
|
||||
#define __ARCH_WANT_SYS_CLONE
|
||||
|
||||
/* "Conditional" syscalls. What we want is
|
||||
|
||||
__attribute__((weak,alias("sys_ni_syscall")))
|
||||
|
||||
but that raises the problem of what type to give the symbol. If we use
|
||||
a prototype, it'll conflict with the definition given in this file and
|
||||
others. If we use __typeof, we discover that not all symbols actually
|
||||
have declarations. If we use no prototype, then we get warnings from
|
||||
-Wstrict-prototypes. Ho hum. */
|
||||
|
||||
#define cond_syscall(x) asm(".weak\t" #x "\n" #x " = sys_ni_syscall")
|
||||
|
||||
#endif /* _ALPHA_UNISTD_H */
|
||||
|
@ -43,14 +43,6 @@
|
||||
#define __ARCH_WANT_SYS_VFORK
|
||||
#define __ARCH_WANT_SYS_CLONE
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
||||
* but it doesn't work on all toolchains, so we just do it by hand
|
||||
*/
|
||||
#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
|
||||
|
||||
/*
|
||||
* Unimplemented (or alternatively implemented) syscalls
|
||||
*/
|
||||
|
@ -41,12 +41,4 @@
|
||||
#define __ARCH_WANT_SYS_VFORK
|
||||
#define __ARCH_WANT_SYS_CLONE
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
||||
* but it doesn't work on all toolchains, so we just do it by hand
|
||||
*/
|
||||
#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall");
|
||||
|
||||
#endif /* __ASM_AVR32_UNISTD_H */
|
||||
|
@ -20,12 +20,4 @@
|
||||
#define __ARCH_WANT_SYS_NICE
|
||||
#define __ARCH_WANT_SYS_VFORK
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
||||
* but it doesn't work on all toolchains, so we just do it by hand
|
||||
*/
|
||||
#define cond_syscall(x) asm(".weak\t_" #x "\n\t.set\t_" #x ",_sys_ni_syscall");
|
||||
|
||||
#endif /* __ASM_BFIN_UNISTD_H */
|
||||
|
@ -34,12 +34,4 @@
|
||||
#define __ARCH_WANT_SYS_VFORK
|
||||
#define __ARCH_WANT_SYS_CLONE
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
||||
* but it doesn't work on all toolchains, so we just do it by hand
|
||||
*/
|
||||
#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
|
||||
|
||||
#endif /* _ASM_CRIS_UNISTD_H_ */
|
||||
|
@ -31,14 +31,4 @@
|
||||
#define __ARCH_WANT_SYS_VFORK
|
||||
#define __ARCH_WANT_SYS_CLONE
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
||||
* but it doesn't work on all toolchains, so we just do it by hand
|
||||
*/
|
||||
#ifndef cond_syscall
|
||||
#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
|
||||
#endif
|
||||
|
||||
#endif /* _ASM_UNISTD_H_ */
|
||||
|
@ -2,7 +2,5 @@
|
||||
#define _H8300_LINKAGE_H
|
||||
|
||||
#undef SYMBOL_NAME_LABEL
|
||||
#undef SYMBOL_NAME
|
||||
#define SYMBOL_NAME_LABEL(_name_) _##_name_##:
|
||||
#define SYMBOL_NAME(_name_) _##_name_
|
||||
#endif
|
||||
|
@ -33,11 +33,4 @@
|
||||
#define __ARCH_WANT_SYS_VFORK
|
||||
#define __ARCH_WANT_SYS_CLONE
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*/
|
||||
#define cond_syscall(name) \
|
||||
asm (".weak\t_" #name "\n" \
|
||||
".set\t_" #name ",_sys_ni_syscall");
|
||||
|
||||
#endif /* _ASM_H8300_UNISTD_H_ */
|
||||
|
@ -11,4 +11,8 @@
|
||||
|
||||
#endif
|
||||
|
||||
#define cond_syscall(x) asm(".weak\t" #x "#\n" #x "#\t=\tsys_ni_syscall#")
|
||||
#define SYSCALL_ALIAS(alias, name) \
|
||||
asm ( #alias "# = " #name "#\n\t.globl " #alias "#")
|
||||
|
||||
#endif
|
||||
|
@ -46,15 +46,5 @@ asmlinkage unsigned long sys_mmap2(
|
||||
struct pt_regs;
|
||||
asmlinkage long sys_ia64_pipe(void);
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* Note, this macro can only be used in the file which defines sys_ni_syscall, i.e., in
|
||||
* kernel/sys_ni.c. This version causes warnings because the declaration isn't a
|
||||
* proper prototype, but we can't use __typeof__ either, because not all cond_syscall()
|
||||
* declarations have prototypes at the moment.
|
||||
*/
|
||||
#define cond_syscall(x) asmlinkage long x (void) __attribute__((weak,alias("sys_ni_syscall")))
|
||||
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
#endif /* _ASM_IA64_UNISTD_H */
|
||||
|
@ -48,14 +48,4 @@
|
||||
#define __IGNORE_getresgid
|
||||
#define __IGNORE_chown
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
||||
* but it doesn't work on all toolchains, so we just do it by hand
|
||||
*/
|
||||
#ifndef cond_syscall
|
||||
#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
|
||||
#endif
|
||||
|
||||
#endif /* _ASM_M32R_UNISTD_H */
|
||||
|
@ -32,12 +32,4 @@
|
||||
#define __ARCH_WANT_SYS_FORK
|
||||
#define __ARCH_WANT_SYS_VFORK
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
||||
* but it doesn't work on all toolchains, so we just do it by hand
|
||||
*/
|
||||
#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
|
||||
|
||||
#endif /* _ASM_M68K_UNISTD_H_ */
|
||||
|
@ -37,13 +37,5 @@
|
||||
#define __ARCH_WANT_SYS_VFORK
|
||||
#define __ARCH_WANT_SYS_FORK
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
||||
* but it doesn't work on all toolchains, so we just do it by hand
|
||||
*/
|
||||
#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall");
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* _ASM_MICROBLAZE_UNISTD_H */
|
||||
|
@ -6,5 +6,8 @@
|
||||
#endif
|
||||
|
||||
#define __weak __attribute__((weak))
|
||||
#define cond_syscall(x) asm(".weak\t" #x "\n" #x "\t=\tsys_ni_syscall")
|
||||
#define SYSCALL_ALIAS(alias, name) \
|
||||
asm ( #alias " = " #name "\n\t.globl " #alias)
|
||||
|
||||
#endif
|
||||
|
@ -63,12 +63,4 @@
|
||||
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
||||
* but it doesn't work on all toolchains, so we just do it by hand
|
||||
*/
|
||||
#define cond_syscall(x) asm(".weak\t" #x "\n" #x "\t=\tsys_ni_syscall")
|
||||
|
||||
#endif /* _ASM_UNISTD_H */
|
||||
|
@ -45,14 +45,4 @@
|
||||
#define __ARCH_WANT_SYS_VFORK
|
||||
#define __ARCH_WANT_SYS_CLONE
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
||||
* but it doesn't work on all toolchains, so we just do it by hand
|
||||
*/
|
||||
#ifndef cond_syscall
|
||||
#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall");
|
||||
#endif
|
||||
|
||||
#endif /* _ASM_UNISTD_H */
|
||||
|
@ -170,12 +170,4 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \
|
||||
|
||||
#undef STR
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
||||
* but it doesn't work on all toolchains, so we just do it by hand
|
||||
*/
|
||||
#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
|
||||
|
||||
#endif /* _ASM_PARISC_UNISTD_H_ */
|
||||
|
13
arch/powerpc/include/asm/linkage.h
Normal file
13
arch/powerpc/include/asm/linkage.h
Normal file
@ -0,0 +1,13 @@
|
||||
#ifndef _ASM_POWERPC_LINKAGE_H
|
||||
#define _ASM_POWERPC_LINKAGE_H
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
#define cond_syscall(x) \
|
||||
asm ("\t.weak " #x "\n\t.set " #x ", sys_ni_syscall\n" \
|
||||
"\t.weak ." #x "\n\t.set ." #x ", .sys_ni_syscall\n")
|
||||
#define SYSCALL_ALIAS(alias, name) \
|
||||
asm ("\t.globl " #alias "\n\t.set " #alias ", " #name "\n" \
|
||||
"\t.globl ." #alias "\n\t.set ." #alias ", ." #name)
|
||||
#endif
|
||||
|
||||
#endif /* _ASM_POWERPC_LINKAGE_H */
|
@ -56,11 +56,5 @@
|
||||
#define __ARCH_WANT_SYS_VFORK
|
||||
#define __ARCH_WANT_SYS_CLONE
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*/
|
||||
#define cond_syscall(x) \
|
||||
asmlinkage long x (void) __attribute__((weak,alias("sys_ni_syscall")))
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* _ASM_POWERPC_UNISTD_H_ */
|
||||
|
@ -1,6 +0,0 @@
|
||||
#ifndef _ASM_POWERPC_LINKAGE_H
|
||||
#define _ASM_POWERPC_LINKAGE_H
|
||||
|
||||
/* Nothing to see here... */
|
||||
|
||||
#endif /* _ASM_POWERPC_LINKAGE_H */
|
@ -54,12 +54,4 @@
|
||||
#define __ARCH_WANT_SYS_VFORK
|
||||
#define __ARCH_WANT_SYS_CLONE
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
||||
* but it doesn't work on all toolchains, so we just do it by hand
|
||||
*/
|
||||
#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
|
||||
|
||||
#endif /* _ASM_S390_UNISTD_H_ */
|
||||
|
@ -30,12 +30,4 @@
|
||||
# define __ARCH_WANT_SYS_VFORK
|
||||
# define __ARCH_WANT_SYS_CLONE
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
||||
* but it doesn't work on all toolchains, so we just do it by hand
|
||||
*/
|
||||
# define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
|
||||
|
||||
#include <uapi/asm/unistd.h>
|
||||
|
@ -45,12 +45,4 @@
|
||||
#define __ARCH_WANT_COMPAT_SYS_SENDFILE
|
||||
#endif
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
||||
* but it doesn't work on all toolchains, so we just do it by hand
|
||||
*/
|
||||
#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
|
||||
|
||||
#endif /* _SPARC_UNISTD_H */
|
||||
|
@ -50,12 +50,4 @@
|
||||
# define __ARCH_WANT_SYS_VFORK
|
||||
# define __ARCH_WANT_SYS_CLONE
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
||||
* but it doesn't work on all toolchains, so we just do it by hand
|
||||
*/
|
||||
# define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
|
||||
|
||||
#endif /* _ASM_X86_UNISTD_H */
|
||||
|
@ -4,14 +4,6 @@
|
||||
#define __ARCH_WANT_SYS_CLONE
|
||||
#include <uapi/asm/unistd.h>
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
||||
* but it doesn't work on all toolchains, so we just do it by hand
|
||||
*/
|
||||
#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall");
|
||||
|
||||
#define __ARCH_WANT_STAT64
|
||||
#define __ARCH_WANT_SYS_UTIME
|
||||
#define __ARCH_WANT_SYS_LLSEEK
|
||||
|
@ -9,20 +9,3 @@
|
||||
#define __ARCH_WANT_STAT64
|
||||
#define __ARCH_WANT_SYS_LLSEEK
|
||||
#endif
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
||||
* but it doesn't work on all toolchains, so we just do it by hand
|
||||
*/
|
||||
#ifndef cond_syscall
|
||||
#ifdef CONFIG_SYMBOL_PREFIX
|
||||
#define __SYMBOL_PREFIX CONFIG_SYMBOL_PREFIX
|
||||
#else
|
||||
#define __SYMBOL_PREFIX
|
||||
#endif
|
||||
#define cond_syscall(x) asm(".weak\t" __SYMBOL_PREFIX #x "\n\t" \
|
||||
".set\t" __SYMBOL_PREFIX #x "," \
|
||||
__SYMBOL_PREFIX "sys_ni_syscall")
|
||||
#endif
|
||||
|
@ -2,6 +2,7 @@
|
||||
#define _LINUX_LINKAGE_H
|
||||
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/stringify.h>
|
||||
#include <asm/linkage.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
@ -14,6 +15,26 @@
|
||||
#define asmlinkage CPP_ASMLINKAGE
|
||||
#endif
|
||||
|
||||
#ifndef SYMBOL_NAME
|
||||
#ifdef CONFIG_SYMBOL_PREFIX
|
||||
#define SYMBOL_NAME(x) CONFIG_SYMBOL_PREFIX ## x
|
||||
#else
|
||||
#define SYMBOL_NAME(x) x
|
||||
#endif
|
||||
#endif
|
||||
#define __SYMBOL_NAME(x) __stringify(SYMBOL_NAME(x))
|
||||
|
||||
#ifndef cond_syscall
|
||||
#define cond_syscall(x) asm(".weak\t" __SYMBOL_NAME(x) \
|
||||
"\n\t.set\t" __SYMBOL_NAME(x) "," __SYMBOL_NAME(sys_ni_syscall));
|
||||
#endif
|
||||
|
||||
#ifndef SYSCALL_ALIAS
|
||||
#define SYSCALL_ALIAS(alias, name) \
|
||||
asm ("\t.globl " __SYMBOL_NAME(alias) \
|
||||
"\n\t.set\t" __SYMBOL_NAME(alias) "," __SYMBOL_NAME(name))
|
||||
#endif
|
||||
|
||||
#define __page_aligned_data __section(.data..page_aligned) __aligned(PAGE_SIZE)
|
||||
#define __page_aligned_bss __section(.bss..page_aligned) __aligned(PAGE_SIZE)
|
||||
|
||||
|
@ -183,20 +183,6 @@ extern struct trace_event_functions exit_syscall_print_funcs;
|
||||
#define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
|
||||
#define SYSCALL_DEFINE6(name, ...) SYSCALL_DEFINEx(6, _##name, __VA_ARGS__)
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
#define SYSCALL_ALIAS(alias, name) \
|
||||
asm ("\t.globl " #alias "\n\t.set " #alias ", " #name "\n" \
|
||||
"\t.globl ." #alias "\n\t.set ." #alias ", ." #name)
|
||||
#else
|
||||
#if defined(CONFIG_ALPHA) || defined(CONFIG_MIPS)
|
||||
#define SYSCALL_ALIAS(alias, name) \
|
||||
asm ( #alias " = " #name "\n\t.globl " #alias)
|
||||
#else
|
||||
#define SYSCALL_ALIAS(alias, name) \
|
||||
asm ("\t.globl " #alias "\n\t.set " #alias ", " #name)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_FTRACE_SYSCALLS
|
||||
#define SYSCALL_DEFINEx(x, sname, ...) \
|
||||
static const char *types_##sname[] = { \
|
||||
|
Loading…
Reference in New Issue
Block a user