aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/entry/syscall_64.c
diff options
context:
space:
mode:
authorBrian Gerst <brgerst@gmail.com>2025-03-14 11:12:17 -0400
committerIngo Molnar <mingo@kernel.org>2025-03-19 11:19:15 +0100
commit21832247f2df4f636b0f2ae6939819e8dd2ed35f (patch)
tree61259a0feaaee1b5d293080b6bdec13ba17f5dee /arch/x86/entry/syscall_64.c
parentx86/syscall/64: Move 64-bit syscall dispatch code (diff)
downloadlinux-21832247f2df4f636b0f2ae6939819e8dd2ed35f.tar.gz
linux-21832247f2df4f636b0f2ae6939819e8dd2ed35f.zip
x86/syscall/x32: Move x32 syscall table
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
Diffstat (limited to 'arch/x86/entry/syscall_64.c')
-rw-r--r--arch/x86/entry/syscall_64.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/x86/entry/syscall_64.c b/arch/x86/entry/syscall_64.c
index e0c62d5a397c..a05f7be8a0e2 100644
--- a/arch/x86/entry/syscall_64.c
+++ b/arch/x86/entry/syscall_64.c
@@ -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)
{
/*