1 | // SPDX-License-Identifier: GPL-2.0 |
2 | /* System call table for i386. */ |
3 | |
4 | #include <linux/linkage.h> |
5 | #include <linux/sys.h> |
6 | #include <linux/cache.h> |
7 | #include <linux/syscalls.h> |
8 | #include <asm/syscall.h> |
9 | |
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 *); |
17 | |
18 | #include <asm/syscalls_32.h> |
19 | #undef __SYSCALL |
20 | |
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 |
27 | #define __SYSCALL(nr, sym) __ia32_##sym, |
28 | const sys_call_ptr_t sys_call_table[] = { |
29 | #include <asm/syscalls_32.h> |
30 | }; |
31 | #undef __SYSCALL |
32 | #endif |
33 | |
34 | #define __SYSCALL(nr, sym) case nr: return __ia32_##sym(regs); |
35 | |
36 | long 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 | }; |
43 | |