xref: /openbmc/linux/arch/x86/entry/syscall_32.c (revision 00398a0018d1334fedabfeaabd0fa563121de612)
1*00398a00SIngo Molnar /* System call table for i386. */
2*00398a00SIngo Molnar 
3*00398a00SIngo Molnar #include <linux/linkage.h>
4*00398a00SIngo Molnar #include <linux/sys.h>
5*00398a00SIngo Molnar #include <linux/cache.h>
6*00398a00SIngo Molnar #include <asm/asm-offsets.h>
7*00398a00SIngo Molnar 
8*00398a00SIngo Molnar #ifdef CONFIG_IA32_EMULATION
9*00398a00SIngo Molnar #define SYM(sym, compat) compat
10*00398a00SIngo Molnar #else
11*00398a00SIngo Molnar #define SYM(sym, compat) sym
12*00398a00SIngo Molnar #define ia32_sys_call_table sys_call_table
13*00398a00SIngo Molnar #define __NR_ia32_syscall_max __NR_syscall_max
14*00398a00SIngo Molnar #endif
15*00398a00SIngo Molnar 
16*00398a00SIngo Molnar #define __SYSCALL_I386(nr, sym, compat) extern asmlinkage void SYM(sym, compat)(void) ;
17*00398a00SIngo Molnar #include <asm/syscalls_32.h>
18*00398a00SIngo Molnar #undef __SYSCALL_I386
19*00398a00SIngo Molnar 
20*00398a00SIngo Molnar #define __SYSCALL_I386(nr, sym, compat) [nr] = SYM(sym, compat),
21*00398a00SIngo Molnar 
22*00398a00SIngo Molnar typedef asmlinkage void (*sys_call_ptr_t)(void);
23*00398a00SIngo Molnar 
24*00398a00SIngo Molnar extern asmlinkage void sys_ni_syscall(void);
25*00398a00SIngo Molnar 
26*00398a00SIngo Molnar __visible const sys_call_ptr_t ia32_sys_call_table[__NR_ia32_syscall_max+1] = {
27*00398a00SIngo Molnar 	/*
28*00398a00SIngo Molnar 	 * Smells like a compiler bug -- it doesn't work
29*00398a00SIngo Molnar 	 * when the & below is removed.
30*00398a00SIngo Molnar 	 */
31*00398a00SIngo Molnar 	[0 ... __NR_ia32_syscall_max] = &sys_ni_syscall,
32*00398a00SIngo Molnar #include <asm/syscalls_32.h>
33*00398a00SIngo Molnar };
34