x86/syscalls: Split the x32 syscalls into their own table
[sfrench/cifs-2.6.git] / arch / x86 / kernel / asm-offsets_64.c
index d3d075226c0aa39761e9f4a33ae05cec321d36d7..70e97727a26ab83a801c69daf2391527d3d4f51c 100644 (file)
@@ -6,13 +6,28 @@
 #include <asm/ia32.h>
 
 #define __SYSCALL_64(nr, sym, qual) [nr] = 1,
+#define __SYSCALL_X32(nr, sym, qual)
 static char syscalls_64[] = {
 #include <asm/syscalls_64.h>
 };
+#undef __SYSCALL_64
+#undef __SYSCALL_X32
+
+#ifdef CONFIG_X86_X32_ABI
+#define __SYSCALL_64(nr, sym, qual)
+#define __SYSCALL_X32(nr, sym, qual) [nr] = 1,
+static char syscalls_x32[] = {
+#include <asm/syscalls_64.h>
+};
+#undef __SYSCALL_64
+#undef __SYSCALL_X32
+#endif
+
 #define __SYSCALL_I386(nr, sym, qual) [nr] = 1,
 static char syscalls_ia32[] = {
 #include <asm/syscalls_32.h>
 };
+#undef __SYSCALL_I386
 
 #if defined(CONFIG_KVM_GUEST) && defined(CONFIG_PARAVIRT_SPINLOCKS)
 #include <asm/kvm_para.h>
@@ -80,6 +95,11 @@ int main(void)
        DEFINE(__NR_syscall_max, sizeof(syscalls_64) - 1);
        DEFINE(NR_syscalls, sizeof(syscalls_64));
 
+#ifdef CONFIG_X86_X32_ABI
+       DEFINE(__NR_syscall_x32_max, sizeof(syscalls_x32) - 1);
+       DEFINE(X32_NR_syscalls, sizeof(syscalls_x32));
+#endif
+
        DEFINE(__NR_syscall_compat_max, sizeof(syscalls_ia32) - 1);
        DEFINE(IA32_NR_syscalls, sizeof(syscalls_ia32));