xref: /linux/arch/x86/um/sys_call_table_32.c (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
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 extern asmlinkage long sys_ni_syscall(unsigned long, unsigned long,
13 				      unsigned long, unsigned long,
14 				      unsigned long, unsigned long);
15 
16 /*
17  * Below you can see, in terms of #define's, the differences between the x86-64
18  * and the UML syscall table.
19  */
20 
21 /* Not going to be implemented by UML, since we have no hardware. */
22 #define sys_iopl sys_ni_syscall
23 #define sys_ioperm sys_ni_syscall
24 
25 #define sys_vm86old sys_ni_syscall
26 #define sys_vm86 sys_ni_syscall
27 
28 #define __SYSCALL_WITH_COMPAT(nr, native, compat)	__SYSCALL(nr, native)
29 #define __SYSCALL_NORETURN __SYSCALL
30 
31 #define __SYSCALL(nr, sym) extern asmlinkage long sym(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long);
32 #include <asm/syscalls_32.h>
33 #undef  __SYSCALL
34 
35 #define __SYSCALL(nr, sym) sym,
36 const sys_call_ptr_t sys_call_table[] ____cacheline_aligned = {
37 #include <asm/syscalls_32.h>
38 };
39 
40 int syscall_table_size = sizeof(sys_call_table);
41