1 | // SPDX-License-Identifier: GPL-2.0 |
2 | /* |
3 | * System call table for UML/i386, copied from arch/x86/kernel/syscall_*.c |
4 | * with some changes for UML. |
5 | */ |
6 | |
7 | #include <linux/linkage.h> |
8 | #include <linux/sys.h> |
9 | #include <linux/cache.h> |
10 | #include <asm/syscall.h> |
11 | |
12 | /* |
13 | * Below you can see, in terms of #define's, the differences between the x86-64 |
14 | * and the UML syscall table. |
15 | */ |
16 | |
17 | /* Not going to be implemented by UML, since we have no hardware. */ |
18 | #define sys_iopl sys_ni_syscall |
19 | #define sys_ioperm sys_ni_syscall |
20 | |
21 | #define sys_vm86old sys_ni_syscall |
22 | #define sys_vm86 sys_ni_syscall |
23 | |
24 | #define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr, native) |
25 | |
26 | #define __SYSCALL(nr, sym) extern asmlinkage long sym(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long); |
27 | #include <asm/syscalls_32.h> |
28 | |
29 | #undef __SYSCALL |
30 | #define __SYSCALL(nr, sym) sym, |
31 | |
32 | extern asmlinkage long sys_ni_syscall(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long); |
33 | |
34 | const sys_call_ptr_t sys_call_table[] ____cacheline_aligned = { |
35 | #include <asm/syscalls_32.h> |
36 | }; |
37 | |
38 | int syscall_table_size = sizeof(sys_call_table); |
39 | |