Merge tag 'platform-drivers-x86-v6.9-3' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-block.git] / arch / x86 / entry / syscall_32.c
CommitLineData
b2441318 1// SPDX-License-Identifier: GPL-2.0
303395ac
PA
2/* System call table for i386. */
3
4#include <linux/linkage.h>
5#include <linux/sys.h>
6#include <linux/cache.h>
25c619e5 7#include <linux/syscalls.h>
034042cc 8#include <asm/syscall.h>
303395ac 9
6218d0f6
MY
10#ifdef CONFIG_IA32_EMULATION
11#define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr, compat)
12#else
13#define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr, native)
14#endif
15
16#define __SYSCALL(nr, sym) extern long __ia32_##sym(const struct pt_regs *);
ebeb8c82 17
303395ac 18#include <asm/syscalls_32.h>
6218d0f6 19#undef __SYSCALL
303395ac 20
1e3ad783
LT
21/*
22 * The sys_call_table[] is no longer used for system calls, but
23 * kernel/trace/trace_syscalls.c still wants to know the system
24 * call address.
25 */
26#ifdef CONFIG_X86_32
44fe4895 27#define __SYSCALL(nr, sym) __ia32_##sym,
1e3ad783 28const sys_call_ptr_t sys_call_table[] = {
303395ac
PA
29#include <asm/syscalls_32.h>
30};
1e3ad783
LT
31#undef __SYSCALL
32#endif
33
34#define __SYSCALL(nr, sym) case nr: return __ia32_##sym(regs);
35
36long ia32_sys_call(const struct pt_regs *regs, unsigned int nr)
37{
38 switch (nr) {
39 #include <asm/syscalls_32.h>
40 default: return __ia32_sys_ni_syscall(regs);
41 }
42};