x86/entry/64: Add __SYSCALL_COMMON()
Add a __SYSCALL_COMMON() macro to the syscall table, which simplifies syscalltbl.sh. Signed-off-by: Brian Gerst <brgerst@gmail.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lkml.kernel.org/r/20200313195144.164260-12-brgerst@gmail.com
This commit is contained in:
		
							parent
							
								
									b5592e5c0d
								
							
						
					
					
						commit
						8210efcb15
					
				| @ -9,6 +9,7 @@ | ||||
| #include <asm/syscall.h> | ||||
| 
 | ||||
| #define __SYSCALL_X32(nr, sym) | ||||
| #define __SYSCALL_COMMON(nr, sym) __SYSCALL_64(nr, sym) | ||||
| 
 | ||||
| #define __SYSCALL_64(nr, sym) extern asmlinkage long sym(const struct pt_regs *); | ||||
| #include <asm/syscalls_64.h> | ||||
|  | ||||
| @ -11,10 +11,13 @@ | ||||
| #define __SYSCALL_64(nr, sym) | ||||
| 
 | ||||
| #define __SYSCALL_X32(nr, sym) extern asmlinkage long sym(const struct pt_regs *); | ||||
| #define __SYSCALL_COMMON(nr, sym) extern asmlinkage long sym(const struct pt_regs *); | ||||
| #include <asm/syscalls_64.h> | ||||
| #undef __SYSCALL_X32 | ||||
| #undef __SYSCALL_COMMON | ||||
| 
 | ||||
| #define __SYSCALL_X32(nr, sym) [nr] = sym, | ||||
| #define __SYSCALL_COMMON(nr, sym) [nr] = sym, | ||||
| 
 | ||||
| asmlinkage const sys_call_ptr_t x32_sys_call_table[__NR_x32_syscall_max+1] = { | ||||
| 	/*
 | ||||
|  | ||||
| @ -25,7 +25,7 @@ emit() { | ||||
|     fi | ||||
| 
 | ||||
|     # For CONFIG_UML, we need to strip the __x64_sys prefix | ||||
|     if [ "$abi" = "64" -a "${entry}" != "${entry#__x64_sys}" ]; then | ||||
|     if [ "${entry}" != "${entry#__x64_sys}" ]; then | ||||
| 	    umlentry="sys${entry#__x64_sys}" | ||||
|     fi | ||||
| 
 | ||||
| @ -53,24 +53,6 @@ emit() { | ||||
| grep '^[0-9]' "$in" | sort -n | ( | ||||
|     while read nr abi name entry compat; do | ||||
| 	abi=`echo "$abi" | tr '[a-z]' '[A-Z]'` | ||||
| 	if [ "$abi" = "COMMON" -o "$abi" = "64" ]; then | ||||
| 	    emit 64 "$nr" "$entry" "$compat" | ||||
| 	    if [ "$abi" = "COMMON" ]; then | ||||
| 		# COMMON means that this syscall exists in the same form for | ||||
| 		# 64-bit and X32. | ||||
| 		echo "#ifdef CONFIG_X86_X32_ABI" | ||||
| 		emit X32 "$nr" "$entry" "$compat" | ||||
| 		echo "#endif" | ||||
| 	    fi | ||||
| 	elif [ "$abi" = "X32" ]; then | ||||
| 	    echo "#ifdef CONFIG_X86_X32_ABI" | ||||
| 	    emit X32 "$nr" "$entry" "$compat" | ||||
| 	    echo "#endif" | ||||
| 	elif [ "$abi" = "I386" ]; then | ||||
| 	    emit "$abi" "$nr" "$entry" "$compat" | ||||
| 	else | ||||
| 	    echo "Unknown abi $abi" >&2 | ||||
| 	    exit 1 | ||||
| 	fi | ||||
| 	emit "$abi" "$nr" "$entry" "$compat" | ||||
|     done | ||||
| ) > "$out" | ||||
|  | ||||
| @ -36,6 +36,9 @@ | ||||
| #define stub_execveat sys_execveat | ||||
| #define stub_rt_sigreturn sys_rt_sigreturn | ||||
| 
 | ||||
| #define __SYSCALL_X32(nr, sym) | ||||
| #define __SYSCALL_COMMON(nr, sym) __SYSCALL_64(nr, sym) | ||||
| 
 | ||||
| #define __SYSCALL_64(nr, sym) extern asmlinkage long sym(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long) ; | ||||
| #include <asm/syscalls_64.h> | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user