Commit 67d53ea5 authored by Andi Kleen's avatar Andi Kleen Committed by Linus Torvalds

[PATCH] x86_64: Eliminate IA32_NR_syscalls define

Or rather compute it based on the table length automatically.

This also has the intended side effect of not warning for new system calls
anymore.
Signed-off-by: default avatarAndi Kleen <ak@suse.de>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent bbd3aff8
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
#include <asm/vsyscall32.h> #include <asm/vsyscall32.h>
#include <linux/linkage.h> #include <linux/linkage.h>
#define IA32_NR_syscalls ((ia32_syscall_end - ia32_sys_call_table)/8)
.macro IA32_ARG_FIXUP noebp=0 .macro IA32_ARG_FIXUP noebp=0
movl %edi,%r8d movl %edi,%r8d
.if \noebp .if \noebp
...@@ -109,8 +111,8 @@ ENTRY(ia32_sysenter_target) ...@@ -109,8 +111,8 @@ ENTRY(ia32_sysenter_target)
CFI_REMEMBER_STATE CFI_REMEMBER_STATE
jnz sysenter_tracesys jnz sysenter_tracesys
sysenter_do_call: sysenter_do_call:
cmpl $(IA32_NR_syscalls),%eax cmpl $(IA32_NR_syscalls-1),%eax
jae ia32_badsys ja ia32_badsys
IA32_ARG_FIXUP 1 IA32_ARG_FIXUP 1
call *ia32_sys_call_table(,%rax,8) call *ia32_sys_call_table(,%rax,8)
movq %rax,RAX-ARGOFFSET(%rsp) movq %rax,RAX-ARGOFFSET(%rsp)
...@@ -210,8 +212,8 @@ ENTRY(ia32_cstar_target) ...@@ -210,8 +212,8 @@ ENTRY(ia32_cstar_target)
CFI_REMEMBER_STATE CFI_REMEMBER_STATE
jnz cstar_tracesys jnz cstar_tracesys
cstar_do_call: cstar_do_call:
cmpl $IA32_NR_syscalls,%eax cmpl $IA32_NR_syscalls-1,%eax
jae ia32_badsys ja ia32_badsys
IA32_ARG_FIXUP 1 IA32_ARG_FIXUP 1
call *ia32_sys_call_table(,%rax,8) call *ia32_sys_call_table(,%rax,8)
movq %rax,RAX-ARGOFFSET(%rsp) movq %rax,RAX-ARGOFFSET(%rsp)
...@@ -296,8 +298,8 @@ ENTRY(ia32_syscall) ...@@ -296,8 +298,8 @@ ENTRY(ia32_syscall)
testl $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP),threadinfo_flags(%r10) testl $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP),threadinfo_flags(%r10)
jnz ia32_tracesys jnz ia32_tracesys
ia32_do_syscall: ia32_do_syscall:
cmpl $(IA32_NR_syscalls),%eax cmpl $(IA32_NR_syscalls-1),%eax
jae ia32_badsys ja ia32_badsys
IA32_ARG_FIXUP IA32_ARG_FIXUP
call *ia32_sys_call_table(,%rax,8) # xxx: rip relative call *ia32_sys_call_table(,%rax,8) # xxx: rip relative
ia32_sysret: ia32_sysret:
...@@ -691,6 +693,3 @@ ia32_sys_call_table: ...@@ -691,6 +693,3 @@ ia32_sys_call_table:
.quad compat_sys_set_robust_list .quad compat_sys_set_robust_list
.quad compat_sys_get_robust_list .quad compat_sys_get_robust_list
ia32_syscall_end: ia32_syscall_end:
.rept IA32_NR_syscalls-(ia32_syscall_end-ia32_sys_call_table)/8
.quad ni_syscall
.endr
...@@ -317,6 +317,4 @@ ...@@ -317,6 +317,4 @@
#define __NR_ia32_ppoll 309 #define __NR_ia32_ppoll 309
#define __NR_ia32_unshare 310 #define __NR_ia32_unshare 310
#define IA32_NR_syscalls 311 /* must be > than biggest syscall! */
#endif /* _ASM_X86_64_IA32_UNISTD_H_ */ #endif /* _ASM_X86_64_IA32_UNISTD_H_ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment