]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
x86/syscall/x32: Move x32 syscall table
authorBrian Gerst <brgerst@gmail.com>
Fri, 14 Mar 2025 15:12:17 +0000 (11:12 -0400)
committerIngo Molnar <mingo@kernel.org>
Wed, 19 Mar 2025 10:19:15 +0000 (11:19 +0100)
Since commit:

  2e958a8a510d ("x86/entry/x32: Rename __x32_compat_sys_* to __x64_compat_sys_*")

the ABI prefix for x32 syscalls is the same as native 64-bit
syscalls.  Move the x32 syscall table to syscall_64.c

No functional changes.

Signed-off-by: Brian Gerst <brgerst@gmail.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Sohil Mehta <sohil.mehta@intel.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lore.kernel.org/r/20250314151220.862768-5-brgerst@gmail.com
arch/x86/entry/Makefile
arch/x86/entry/syscall_64.c
arch/x86/entry/syscall_x32.c [deleted file]

index 5fd28abfd5a01e77bf7cedbc734c1b42541814a1..e870f8aa936c46d39b919301a9eb6e0e960750e9 100644 (file)
@@ -27,4 +27,3 @@ CFLAGS_REMOVE_entry_fred.o    += -pg $(CC_FLAGS_FTRACE)
 obj-$(CONFIG_X86_FRED)         += entry_64_fred.o entry_fred.o
 
 obj-$(CONFIG_IA32_EMULATION)   += entry_64_compat.o syscall_32.o
-obj-$(CONFIG_X86_X32_ABI)      += syscall_x32.o
index e0c62d5a397c30eb9ccde40461f22fe9b7428deb..a05f7be8a0e2f4e2e7167ff88f66711000e65cfb 100644 (file)
@@ -12,6 +12,9 @@
 #define __SYSCALL(nr, sym) extern long __x64_##sym(const struct pt_regs *);
 #define __SYSCALL_NORETURN(nr, sym) extern long __noreturn __x64_##sym(const struct pt_regs *);
 #include <asm/syscalls_64.h>
+#ifdef CONFIG_X86_X32_ABI
+#include <asm/syscalls_x32.h>
+#endif
 #undef  __SYSCALL
 
 #undef  __SYSCALL_NORETURN
@@ -37,6 +40,16 @@ long x64_sys_call(const struct pt_regs *regs, unsigned int nr)
        }
 };
 
+#ifdef CONFIG_X86_X32_ABI
+long x32_sys_call(const struct pt_regs *regs, unsigned int nr)
+{
+       switch (nr) {
+       #include <asm/syscalls_x32.h>
+       default: return __x64_sys_ni_syscall(regs);
+       }
+};
+#endif
+
 static __always_inline bool do_syscall_x64(struct pt_regs *regs, int nr)
 {
        /*
diff --git a/arch/x86/entry/syscall_x32.c b/arch/x86/entry/syscall_x32.c
deleted file mode 100644 (file)
index fb77908..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/* System call table for x32 ABI. */
-
-#include <linux/linkage.h>
-#include <linux/sys.h>
-#include <linux/cache.h>
-#include <linux/syscalls.h>
-#include <asm/syscall.h>
-
-#define __SYSCALL(nr, sym) extern long __x64_##sym(const struct pt_regs *);
-#define __SYSCALL_NORETURN(nr, sym) extern long __noreturn __x64_##sym(const struct pt_regs *);
-#include <asm/syscalls_x32.h>
-#undef  __SYSCALL
-
-#undef  __SYSCALL_NORETURN
-#define __SYSCALL_NORETURN __SYSCALL
-
-#define __SYSCALL(nr, sym) case nr: return __x64_##sym(regs);
-long x32_sys_call(const struct pt_regs *regs, unsigned int nr)
-{
-       switch (nr) {
-       #include <asm/syscalls_x32.h>
-       default: return __x64_sys_ni_syscall(regs);
-       }
-};