2008-02-05 09:31:20 +03:00
/*
2011-12-06 04:08:49 +04:00
* System call table for UML / x86 - 64 , copied from arch / x86 / kernel / syscall_ * . c
2008-02-05 09:31:20 +03:00
* with some changes for UML .
*/
2005-05-01 19:58:55 +04:00
# include <linux/linkage.h>
# include <linux/sys.h>
# include <linux/cache.h>
2011-12-06 04:08:49 +04:00
# include <generated/user_constants.h>
2005-05-01 19:58:55 +04:00
# define __NO_STUBS
2008-02-05 09:31:20 +03:00
/*
* Below you can see , in terms of # define ' s , the differences between the x86 - 64
* and the UML syscall table .
*/
2005-05-01 19:58:55 +04:00
/* Not going to be implemented by UML, since we have no hardware. */
# define stub_iopl sys_ni_syscall
# define sys_ioperm sys_ni_syscall
2008-02-05 09:31:20 +03:00
/*
* The UML TLS problem . Note that x86_64 does not implement this , so the below
* is needed only for the ia32 compatibility .
*/
2005-05-01 19:58:55 +04:00
/* On UML we call it this way ("old" means it's not mmap2) */
# define sys_mmap old_mmap
# define stub_clone sys_clone
# define stub_fork sys_fork
# define stub_vfork sys_vfork
# define stub_execve sys_execve
# define stub_rt_sigreturn sys_rt_sigreturn
2012-02-15 02:18:50 +04:00
# define __SYSCALL_COMMON(nr, sym, compat) __SYSCALL_64(nr, sym, compat)
# define __SYSCALL_X32(nr, sym, compat) /* Not supported */
2011-12-06 04:08:49 +04:00
# define __SYSCALL_64(nr, sym, compat) extern asmlinkage void sym(void) ;
# include <asm/syscalls_64.h>
2005-05-01 19:58:55 +04:00
2011-12-06 04:08:49 +04:00
# undef __SYSCALL_64
# define __SYSCALL_64(nr, sym, compat) [ nr ] = sym,
2005-05-01 19:58:55 +04:00
typedef void ( * sys_call_ptr_t ) ( void ) ;
extern void sys_ni_syscall ( void ) ;
2011-12-06 10:48:49 +04:00
const sys_call_ptr_t sys_call_table [ ] __cacheline_aligned = {
2011-12-06 04:08:49 +04:00
/*
* Smells like a compiler bug - - it doesn ' t work
* when the & below is removed .
*/
[ 0 . . . __NR_syscall_max ] = & sys_ni_syscall ,
# include <asm/syscalls_64.h>
2005-05-01 19:58:55 +04:00
} ;
2008-02-05 09:31:29 +03:00
int syscall_table_size = sizeof ( sys_call_table ) ;