xref: /linux/arch/x86/um/sys_call_table_32.c (revision b485342bd79af363c77ef1a421c4a0aef2de9812)
145db1c61SH. Peter Anvin /*
245db1c61SH. Peter Anvin  * System call table for UML/i386, copied from arch/x86/kernel/syscall_*.c
345db1c61SH. Peter Anvin  * with some changes for UML.
445db1c61SH. Peter Anvin  */
545db1c61SH. Peter Anvin 
645db1c61SH. Peter Anvin #include <linux/linkage.h>
745db1c61SH. Peter Anvin #include <linux/sys.h>
845db1c61SH. Peter Anvin #include <linux/cache.h>
945db1c61SH. Peter Anvin #include <generated/user_constants.h>
1045db1c61SH. Peter Anvin 
1145db1c61SH. Peter Anvin #define __NO_STUBS
1245db1c61SH. Peter Anvin 
1345db1c61SH. Peter Anvin /*
1445db1c61SH. Peter Anvin  * Below you can see, in terms of #define's, the differences between the x86-64
1545db1c61SH. Peter Anvin  * and the UML syscall table.
1645db1c61SH. Peter Anvin  */
1745db1c61SH. Peter Anvin 
1845db1c61SH. Peter Anvin /* Not going to be implemented by UML, since we have no hardware. */
1947db9e7cSH. Peter Anvin #define sys_iopl sys_ni_syscall
2045db1c61SH. Peter Anvin #define sys_ioperm sys_ni_syscall
2145db1c61SH. Peter Anvin 
2245db1c61SH. Peter Anvin #define sys_vm86old sys_ni_syscall
2345db1c61SH. Peter Anvin #define sys_vm86 sys_ni_syscall
2445db1c61SH. Peter Anvin 
2545db1c61SH. Peter Anvin #define old_mmap sys_old_mmap
2645db1c61SH. Peter Anvin 
2745db1c61SH. Peter Anvin #define __SYSCALL_I386(nr, sym, compat) extern asmlinkage void sym(void) ;
2845db1c61SH. Peter Anvin #include <asm/syscalls_32.h>
2945db1c61SH. Peter Anvin 
3045db1c61SH. Peter Anvin #undef __SYSCALL_I386
3145db1c61SH. Peter Anvin #define __SYSCALL_I386(nr, sym, compat) [ nr ] = sym,
3245db1c61SH. Peter Anvin 
339271b0b4SMartin Pelikan typedef asmlinkage void (*sys_call_ptr_t)(void);
3445db1c61SH. Peter Anvin 
359271b0b4SMartin Pelikan extern asmlinkage void sys_ni_syscall(void);
3645db1c61SH. Peter Anvin 
37*b485342bSDaniel Borkmann const sys_call_ptr_t sys_call_table[] ____cacheline_aligned = {
3845db1c61SH. Peter Anvin 	/*
3945db1c61SH. Peter Anvin 	 * Smells like a compiler bug -- it doesn't work
4045db1c61SH. Peter Anvin 	 * when the & below is removed.
4145db1c61SH. Peter Anvin 	 */
4245db1c61SH. Peter Anvin 	[0 ... __NR_syscall_max] = &sys_ni_syscall,
4345db1c61SH. Peter Anvin #include <asm/syscalls_32.h>
4445db1c61SH. Peter Anvin };
4545db1c61SH. Peter Anvin 
4645db1c61SH. Peter Anvin int syscall_table_size = sizeof(sys_call_table);
47