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
					
				
			
		
					 29 changed files with 44 additions and 209 deletions
				
			
		|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Al Viro
				Al Viro