100398a00SIngo Molnar /* System call table for i386. */ 200398a00SIngo Molnar 300398a00SIngo Molnar #include <linux/linkage.h> 400398a00SIngo Molnar #include <linux/sys.h> 500398a00SIngo Molnar #include <linux/cache.h> 600398a00SIngo Molnar #include <asm/asm-offsets.h> 700398a00SIngo Molnar 800398a00SIngo Molnar #ifdef CONFIG_IA32_EMULATION 900398a00SIngo Molnar #define SYM(sym, compat) compat 1000398a00SIngo Molnar #else 1100398a00SIngo Molnar #define SYM(sym, compat) sym 1200398a00SIngo Molnar #define ia32_sys_call_table sys_call_table 13*bace7117SIngo Molnar #define __NR_syscall_compat_max __NR_syscall_max 1400398a00SIngo Molnar #endif 1500398a00SIngo Molnar 1600398a00SIngo Molnar #define __SYSCALL_I386(nr, sym, compat) extern asmlinkage void SYM(sym, compat)(void) ; 1700398a00SIngo Molnar #include <asm/syscalls_32.h> 1800398a00SIngo Molnar #undef __SYSCALL_I386 1900398a00SIngo Molnar 2000398a00SIngo Molnar #define __SYSCALL_I386(nr, sym, compat) [nr] = SYM(sym, compat), 2100398a00SIngo Molnar 2200398a00SIngo Molnar typedef asmlinkage void (*sys_call_ptr_t)(void); 2300398a00SIngo Molnar 2400398a00SIngo Molnar extern asmlinkage void sys_ni_syscall(void); 2500398a00SIngo Molnar 26*bace7117SIngo Molnar __visible const sys_call_ptr_t ia32_sys_call_table[__NR_syscall_compat_max+1] = { 2700398a00SIngo Molnar /* 2800398a00SIngo Molnar * Smells like a compiler bug -- it doesn't work 2900398a00SIngo Molnar * when the & below is removed. 3000398a00SIngo Molnar */ 31*bace7117SIngo Molnar [0 ... __NR_syscall_compat_max] = &sys_ni_syscall, 3200398a00SIngo Molnar #include <asm/syscalls_32.h> 3300398a00SIngo Molnar }; 34