2008-02-04 22:31:20 -08:00
/*
2011-12-05 16:08:49 -08:00
* System call table for UML / x86 - 64 , copied from arch / x86 / kernel / syscall_ * . c
2008-02-04 22:31:20 -08:00
* with some changes for UML .
*/
2005-05-01 08:58:55 -07:00
# include <linux/linkage.h>
# include <linux/sys.h>
# include <linux/cache.h>
2011-12-05 16:08:49 -08:00
# include <generated/user_constants.h>
2015-10-05 17:48:06 -07:00
# include <asm/syscall.h>
2005-05-01 08:58:55 -07:00
# define __NO_STUBS
2008-02-04 22:31:20 -08:00
/*
* Below you can see , in terms of # define ' s , the differences between the x86 - 64
* and the UML syscall table .
*/
2005-05-01 08:58:55 -07:00
/* Not going to be implemented by UML, since we have no hardware. */
2015-03-10 11:45:06 +01:00
# define sys_iopl sys_ni_syscall
2005-05-01 08:58:55 -07:00
# define sys_ioperm sys_ni_syscall
2008-02-04 22:31:20 -08: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 08:58:55 -07: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
2014-12-12 16:57:33 -08:00
# define stub_execveat sys_execveat
2005-05-01 08:58:55 -07:00
# define stub_rt_sigreturn sys_rt_sigreturn
2016-01-28 15:11:24 -08:00
# define __SYSCALL_64(nr, sym, qual) extern asmlinkage long sym(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long) ;
2011-12-05 16:08:49 -08:00
# include <asm/syscalls_64.h>
2005-05-01 08:58:55 -07:00
2011-12-05 16:08:49 -08:00
# undef __SYSCALL_64
2016-01-28 15:11:24 -08:00
# define __SYSCALL_64(nr, sym, qual) [ nr ] = sym,
2005-05-01 08:58:55 -07:00
2015-10-05 17:48:07 -07:00
extern asmlinkage long sys_ni_syscall ( unsigned long , unsigned long , unsigned long , unsigned long , unsigned long , unsigned long ) ;
2005-05-01 08:58:55 -07:00
2015-01-03 13:11:10 +01:00
const sys_call_ptr_t sys_call_table [ ] ____cacheline_aligned = {
2011-12-05 16:08:49 -08: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 08:58:55 -07:00
} ;
2008-02-04 22:31:29 -08:00
int syscall_table_size = sizeof ( sys_call_table ) ;