You've already forked linux-rockchip
mirror of
https://github.com/armbian/linux-rockchip.git
synced 2026-01-06 11:08:10 -08:00
x86: Generate system call tables and unistd_*.h from tables
Generate system call tables and unistd_*.h automatically from the tables in arch/x86/syscalls. All other information, like NR_syscalls, is auto-generated, some of which is in asm-offsets_*.c. This allows us to keep all the system call information in one place, and allows for kernel space and user space to see different information; this is currently used for the ia32 system call numbers when building the 64-bit kernel, but will be used by the x32 ABI in the near future. This also removes some gratuitious differences between i386, x86-64 and ia32; in particular, now all system call tables are generated with the same mechanism. Cc: H. J. Lu <hjl.tools@gmail.com> Cc: Sam Ravnborg <sam@ravnborg.org> Cc: Michal Marek <mmarek@suse.cz> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
This commit is contained in:
@@ -117,6 +117,12 @@ KBUILD_CFLAGS += $(call cc-option,-mno-sse -mno-mmx -mno-sse2 -mno-3dnow,)
|
||||
KBUILD_CFLAGS += $(mflags-y)
|
||||
KBUILD_AFLAGS += $(mflags-y)
|
||||
|
||||
###
|
||||
# Syscall table generation
|
||||
|
||||
archheaders:
|
||||
$(Q)$(MAKE) $(build)=arch/x86/syscalls all
|
||||
|
||||
###
|
||||
# Kernel objects
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#
|
||||
|
||||
obj-$(CONFIG_IA32_EMULATION) := ia32entry.o sys_ia32.o ia32_signal.o
|
||||
obj-$(CONFIG_IA32_EMULATION) += nosyscall.o
|
||||
obj-$(CONFIG_IA32_EMULATION) += nosyscall.o syscall_ia32.o
|
||||
|
||||
sysv-$(CONFIG_SYSVIPC) := ipc32.o
|
||||
obj-$(CONFIG_IA32_EMULATION) += $(sysv-y)
|
||||
|
||||
@@ -27,8 +27,6 @@
|
||||
|
||||
.section .entry.text, "ax"
|
||||
|
||||
#define IA32_NR_syscalls ((ia32_syscall_end - ia32_sys_call_table)/8)
|
||||
|
||||
.macro IA32_ARG_FIXUP noebp=0
|
||||
movl %edi,%r8d
|
||||
.if \noebp
|
||||
@@ -496,357 +494,3 @@ ENTRY(ia32_ptregs_common)
|
||||
jmp ia32_sysret /* misbalances the return cache */
|
||||
CFI_ENDPROC
|
||||
END(ia32_ptregs_common)
|
||||
|
||||
.section .rodata,"a"
|
||||
.align 8
|
||||
ia32_sys_call_table:
|
||||
.quad sys_restart_syscall
|
||||
.quad sys_exit
|
||||
.quad stub32_fork
|
||||
.quad sys_read
|
||||
.quad sys_write
|
||||
.quad compat_sys_open /* 5 */
|
||||
.quad sys_close
|
||||
.quad sys32_waitpid
|
||||
.quad sys_creat
|
||||
.quad sys_link
|
||||
.quad sys_unlink /* 10 */
|
||||
.quad stub32_execve
|
||||
.quad sys_chdir
|
||||
.quad compat_sys_time
|
||||
.quad sys_mknod
|
||||
.quad sys_chmod /* 15 */
|
||||
.quad sys_lchown16
|
||||
.quad quiet_ni_syscall /* old break syscall holder */
|
||||
.quad sys_stat
|
||||
.quad sys32_lseek
|
||||
.quad sys_getpid /* 20 */
|
||||
.quad compat_sys_mount /* mount */
|
||||
.quad sys_oldumount /* old_umount */
|
||||
.quad sys_setuid16
|
||||
.quad sys_getuid16
|
||||
.quad compat_sys_stime /* stime */ /* 25 */
|
||||
.quad compat_sys_ptrace /* ptrace */
|
||||
.quad sys_alarm
|
||||
.quad sys_fstat /* (old)fstat */
|
||||
.quad sys_pause
|
||||
.quad compat_sys_utime /* 30 */
|
||||
.quad quiet_ni_syscall /* old stty syscall holder */
|
||||
.quad quiet_ni_syscall /* old gtty syscall holder */
|
||||
.quad sys_access
|
||||
.quad sys_nice
|
||||
.quad quiet_ni_syscall /* 35 */ /* old ftime syscall holder */
|
||||
.quad sys_sync
|
||||
.quad sys32_kill
|
||||
.quad sys_rename
|
||||
.quad sys_mkdir
|
||||
.quad sys_rmdir /* 40 */
|
||||
.quad sys_dup
|
||||
.quad sys_pipe
|
||||
.quad compat_sys_times
|
||||
.quad quiet_ni_syscall /* old prof syscall holder */
|
||||
.quad sys_brk /* 45 */
|
||||
.quad sys_setgid16
|
||||
.quad sys_getgid16
|
||||
.quad sys_signal
|
||||
.quad sys_geteuid16
|
||||
.quad sys_getegid16 /* 50 */
|
||||
.quad sys_acct
|
||||
.quad sys_umount /* new_umount */
|
||||
.quad quiet_ni_syscall /* old lock syscall holder */
|
||||
.quad compat_sys_ioctl
|
||||
.quad compat_sys_fcntl64 /* 55 */
|
||||
.quad quiet_ni_syscall /* old mpx syscall holder */
|
||||
.quad sys_setpgid
|
||||
.quad quiet_ni_syscall /* old ulimit syscall holder */
|
||||
.quad sys_olduname
|
||||
.quad sys_umask /* 60 */
|
||||
.quad sys_chroot
|
||||
.quad compat_sys_ustat
|
||||
.quad sys_dup2
|
||||
.quad sys_getppid
|
||||
.quad sys_getpgrp /* 65 */
|
||||
.quad sys_setsid
|
||||
.quad sys32_sigaction
|
||||
.quad sys_sgetmask
|
||||
.quad sys_ssetmask
|
||||
.quad sys_setreuid16 /* 70 */
|
||||
.quad sys_setregid16
|
||||
.quad sys32_sigsuspend
|
||||
.quad compat_sys_sigpending
|
||||
.quad sys_sethostname
|
||||
.quad compat_sys_setrlimit /* 75 */
|
||||
.quad compat_sys_old_getrlimit /* old_getrlimit */
|
||||
.quad compat_sys_getrusage
|
||||
.quad compat_sys_gettimeofday
|
||||
.quad compat_sys_settimeofday
|
||||
.quad sys_getgroups16 /* 80 */
|
||||
.quad sys_setgroups16
|
||||
.quad compat_sys_old_select
|
||||
.quad sys_symlink
|
||||
.quad sys_lstat
|
||||
.quad sys_readlink /* 85 */
|
||||
.quad sys_uselib
|
||||
.quad sys_swapon
|
||||
.quad sys_reboot
|
||||
.quad compat_sys_old_readdir
|
||||
.quad sys32_mmap /* 90 */
|
||||
.quad sys_munmap
|
||||
.quad sys_truncate
|
||||
.quad sys_ftruncate
|
||||
.quad sys_fchmod
|
||||
.quad sys_fchown16 /* 95 */
|
||||
.quad sys_getpriority
|
||||
.quad sys_setpriority
|
||||
.quad quiet_ni_syscall /* old profil syscall holder */
|
||||
.quad compat_sys_statfs
|
||||
.quad compat_sys_fstatfs /* 100 */
|
||||
.quad sys_ioperm
|
||||
.quad compat_sys_socketcall
|
||||
.quad sys_syslog
|
||||
.quad compat_sys_setitimer
|
||||
.quad compat_sys_getitimer /* 105 */
|
||||
.quad compat_sys_newstat
|
||||
.quad compat_sys_newlstat
|
||||
.quad compat_sys_newfstat
|
||||
.quad sys_uname
|
||||
.quad stub32_iopl /* 110 */
|
||||
.quad sys_vhangup
|
||||
.quad quiet_ni_syscall /* old "idle" system call */
|
||||
.quad sys32_vm86_warning /* vm86old */
|
||||
.quad compat_sys_wait4
|
||||
.quad sys_swapoff /* 115 */
|
||||
.quad compat_sys_sysinfo
|
||||
.quad sys32_ipc
|
||||
.quad sys_fsync
|
||||
.quad stub32_sigreturn
|
||||
.quad stub32_clone /* 120 */
|
||||
.quad sys_setdomainname
|
||||
.quad sys_newuname
|
||||
.quad sys_modify_ldt
|
||||
.quad compat_sys_adjtimex
|
||||
.quad sys32_mprotect /* 125 */
|
||||
.quad compat_sys_sigprocmask
|
||||
.quad quiet_ni_syscall /* create_module */
|
||||
.quad sys_init_module
|
||||
.quad sys_delete_module
|
||||
.quad quiet_ni_syscall /* 130 get_kernel_syms */
|
||||
.quad sys32_quotactl
|
||||
.quad sys_getpgid
|
||||
.quad sys_fchdir
|
||||
.quad quiet_ni_syscall /* bdflush */
|
||||
.quad sys_sysfs /* 135 */
|
||||
.quad sys_personality
|
||||
.quad quiet_ni_syscall /* for afs_syscall */
|
||||
.quad sys_setfsuid16
|
||||
.quad sys_setfsgid16
|
||||
.quad sys_llseek /* 140 */
|
||||
.quad compat_sys_getdents
|
||||
.quad compat_sys_select
|
||||
.quad sys_flock
|
||||
.quad sys_msync
|
||||
.quad compat_sys_readv /* 145 */
|
||||
.quad compat_sys_writev
|
||||
.quad sys_getsid
|
||||
.quad sys_fdatasync
|
||||
.quad compat_sys_sysctl /* sysctl */
|
||||
.quad sys_mlock /* 150 */
|
||||
.quad sys_munlock
|
||||
.quad sys_mlockall
|
||||
.quad sys_munlockall
|
||||
.quad sys_sched_setparam
|
||||
.quad sys_sched_getparam /* 155 */
|
||||
.quad sys_sched_setscheduler
|
||||
.quad sys_sched_getscheduler
|
||||
.quad sys_sched_yield
|
||||
.quad sys_sched_get_priority_max
|
||||
.quad sys_sched_get_priority_min /* 160 */
|
||||
.quad sys32_sched_rr_get_interval
|
||||
.quad compat_sys_nanosleep
|
||||
.quad sys_mremap
|
||||
.quad sys_setresuid16
|
||||
.quad sys_getresuid16 /* 165 */
|
||||
.quad sys32_vm86_warning /* vm86 */
|
||||
.quad quiet_ni_syscall /* query_module */
|
||||
.quad sys_poll
|
||||
.quad quiet_ni_syscall /* old nfsservctl */
|
||||
.quad sys_setresgid16 /* 170 */
|
||||
.quad sys_getresgid16
|
||||
.quad sys_prctl
|
||||
.quad stub32_rt_sigreturn
|
||||
.quad sys32_rt_sigaction
|
||||
.quad sys32_rt_sigprocmask /* 175 */
|
||||
.quad sys32_rt_sigpending
|
||||
.quad compat_sys_rt_sigtimedwait
|
||||
.quad sys32_rt_sigqueueinfo
|
||||
.quad sys_rt_sigsuspend
|
||||
.quad sys32_pread /* 180 */
|
||||
.quad sys32_pwrite
|
||||
.quad sys_chown16
|
||||
.quad sys_getcwd
|
||||
.quad sys_capget
|
||||
.quad sys_capset
|
||||
.quad stub32_sigaltstack
|
||||
.quad sys32_sendfile
|
||||
.quad quiet_ni_syscall /* streams1 */
|
||||
.quad quiet_ni_syscall /* streams2 */
|
||||
.quad stub32_vfork /* 190 */
|
||||
.quad compat_sys_getrlimit
|
||||
.quad sys_mmap_pgoff
|
||||
.quad sys32_truncate64
|
||||
.quad sys32_ftruncate64
|
||||
.quad sys32_stat64 /* 195 */
|
||||
.quad sys32_lstat64
|
||||
.quad sys32_fstat64
|
||||
.quad sys_lchown
|
||||
.quad sys_getuid
|
||||
.quad sys_getgid /* 200 */
|
||||
.quad sys_geteuid
|
||||
.quad sys_getegid
|
||||
.quad sys_setreuid
|
||||
.quad sys_setregid
|
||||
.quad sys_getgroups /* 205 */
|
||||
.quad sys_setgroups
|
||||
.quad sys_fchown
|
||||
.quad sys_setresuid
|
||||
.quad sys_getresuid
|
||||
.quad sys_setresgid /* 210 */
|
||||
.quad sys_getresgid
|
||||
.quad sys_chown
|
||||
.quad sys_setuid
|
||||
.quad sys_setgid
|
||||
.quad sys_setfsuid /* 215 */
|
||||
.quad sys_setfsgid
|
||||
.quad sys_pivot_root
|
||||
.quad sys_mincore
|
||||
.quad sys_madvise
|
||||
.quad compat_sys_getdents64 /* 220 getdents64 */
|
||||
.quad compat_sys_fcntl64
|
||||
.quad quiet_ni_syscall /* tux */
|
||||
.quad quiet_ni_syscall /* security */
|
||||
.quad sys_gettid
|
||||
.quad sys32_readahead /* 225 */
|
||||
.quad sys_setxattr
|
||||
.quad sys_lsetxattr
|
||||
.quad sys_fsetxattr
|
||||
.quad sys_getxattr
|
||||
.quad sys_lgetxattr /* 230 */
|
||||
.quad sys_fgetxattr
|
||||
.quad sys_listxattr
|
||||
.quad sys_llistxattr
|
||||
.quad sys_flistxattr
|
||||
.quad sys_removexattr /* 235 */
|
||||
.quad sys_lremovexattr
|
||||
.quad sys_fremovexattr
|
||||
.quad sys_tkill
|
||||
.quad sys_sendfile64
|
||||
.quad compat_sys_futex /* 240 */
|
||||
.quad compat_sys_sched_setaffinity
|
||||
.quad compat_sys_sched_getaffinity
|
||||
.quad sys_set_thread_area
|
||||
.quad sys_get_thread_area
|
||||
.quad compat_sys_io_setup /* 245 */
|
||||
.quad sys_io_destroy
|
||||
.quad compat_sys_io_getevents
|
||||
.quad compat_sys_io_submit
|
||||
.quad sys_io_cancel
|
||||
.quad sys32_fadvise64 /* 250 */
|
||||
.quad quiet_ni_syscall /* free_huge_pages */
|
||||
.quad sys_exit_group
|
||||
.quad sys32_lookup_dcookie
|
||||
.quad sys_epoll_create
|
||||
.quad sys_epoll_ctl /* 255 */
|
||||
.quad sys_epoll_wait
|
||||
.quad sys_remap_file_pages
|
||||
.quad sys_set_tid_address
|
||||
.quad compat_sys_timer_create
|
||||
.quad compat_sys_timer_settime /* 260 */
|
||||
.quad compat_sys_timer_gettime
|
||||
.quad sys_timer_getoverrun
|
||||
.quad sys_timer_delete
|
||||
.quad compat_sys_clock_settime
|
||||
.quad compat_sys_clock_gettime /* 265 */
|
||||
.quad compat_sys_clock_getres
|
||||
.quad compat_sys_clock_nanosleep
|
||||
.quad compat_sys_statfs64
|
||||
.quad compat_sys_fstatfs64
|
||||
.quad sys_tgkill /* 270 */
|
||||
.quad compat_sys_utimes
|
||||
.quad sys32_fadvise64_64
|
||||
.quad quiet_ni_syscall /* sys_vserver */
|
||||
.quad sys_mbind
|
||||
.quad compat_sys_get_mempolicy /* 275 */
|
||||
.quad sys_set_mempolicy
|
||||
.quad compat_sys_mq_open
|
||||
.quad sys_mq_unlink
|
||||
.quad compat_sys_mq_timedsend
|
||||
.quad compat_sys_mq_timedreceive /* 280 */
|
||||
.quad compat_sys_mq_notify
|
||||
.quad compat_sys_mq_getsetattr
|
||||
.quad compat_sys_kexec_load /* reserved for kexec */
|
||||
.quad compat_sys_waitid
|
||||
.quad quiet_ni_syscall /* 285: sys_altroot */
|
||||
.quad sys_add_key
|
||||
.quad sys_request_key
|
||||
.quad sys_keyctl
|
||||
.quad sys_ioprio_set
|
||||
.quad sys_ioprio_get /* 290 */
|
||||
.quad sys_inotify_init
|
||||
.quad sys_inotify_add_watch
|
||||
.quad sys_inotify_rm_watch
|
||||
.quad sys_migrate_pages
|
||||
.quad compat_sys_openat /* 295 */
|
||||
.quad sys_mkdirat
|
||||
.quad sys_mknodat
|
||||
.quad sys_fchownat
|
||||
.quad compat_sys_futimesat
|
||||
.quad sys32_fstatat /* 300 */
|
||||
.quad sys_unlinkat
|
||||
.quad sys_renameat
|
||||
.quad sys_linkat
|
||||
.quad sys_symlinkat
|
||||
.quad sys_readlinkat /* 305 */
|
||||
.quad sys_fchmodat
|
||||
.quad sys_faccessat
|
||||
.quad compat_sys_pselect6
|
||||
.quad compat_sys_ppoll
|
||||
.quad sys_unshare /* 310 */
|
||||
.quad compat_sys_set_robust_list
|
||||
.quad compat_sys_get_robust_list
|
||||
.quad sys_splice
|
||||
.quad sys32_sync_file_range
|
||||
.quad sys_tee /* 315 */
|
||||
.quad compat_sys_vmsplice
|
||||
.quad compat_sys_move_pages
|
||||
.quad sys_getcpu
|
||||
.quad sys_epoll_pwait
|
||||
.quad compat_sys_utimensat /* 320 */
|
||||
.quad compat_sys_signalfd
|
||||
.quad sys_timerfd_create
|
||||
.quad sys_eventfd
|
||||
.quad sys32_fallocate
|
||||
.quad compat_sys_timerfd_settime /* 325 */
|
||||
.quad compat_sys_timerfd_gettime
|
||||
.quad compat_sys_signalfd4
|
||||
.quad sys_eventfd2
|
||||
.quad sys_epoll_create1
|
||||
.quad sys_dup3 /* 330 */
|
||||
.quad sys_pipe2
|
||||
.quad sys_inotify_init1
|
||||
.quad compat_sys_preadv
|
||||
.quad compat_sys_pwritev
|
||||
.quad compat_sys_rt_tgsigqueueinfo /* 335 */
|
||||
.quad sys_perf_event_open
|
||||
.quad compat_sys_recvmmsg
|
||||
.quad sys_fanotify_init
|
||||
.quad sys32_fanotify_mark
|
||||
.quad sys_prlimit64 /* 340 */
|
||||
.quad sys_name_to_handle_at
|
||||
.quad compat_sys_open_by_handle_at
|
||||
.quad compat_sys_clock_adjtime
|
||||
.quad sys_syncfs
|
||||
.quad compat_sys_sendmmsg /* 345 */
|
||||
.quad sys_setns
|
||||
.quad compat_sys_process_vm_readv
|
||||
.quad compat_sys_process_vm_writev
|
||||
ia32_syscall_end:
|
||||
|
||||
25
arch/x86/ia32/syscall_ia32.c
Normal file
25
arch/x86/ia32/syscall_ia32.c
Normal file
@@ -0,0 +1,25 @@
|
||||
/* System call table for ia32 emulation. */
|
||||
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/sys.h>
|
||||
#include <linux/cache.h>
|
||||
#include <asm/asm-offsets.h>
|
||||
|
||||
#define __SYSCALL_I386(nr, sym, compat) extern asmlinkage void compat(void) ;
|
||||
#include <asm/syscalls_32.h>
|
||||
#undef __SYSCALL_I386
|
||||
|
||||
#define __SYSCALL_I386(nr, sym, compat) [nr] = compat,
|
||||
|
||||
typedef void (*sys_call_ptr_t)(void);
|
||||
|
||||
extern void compat_ni_syscall(void);
|
||||
|
||||
const sys_call_ptr_t ia32_sys_call_table[__NR_ia32_syscall_max+1] = {
|
||||
/*
|
||||
* Smells like a like a compiler bug -- it doesn't work
|
||||
* when the & below is removed.
|
||||
*/
|
||||
[0 ... __NR_ia32_syscall_max] = &compat_ni_syscall,
|
||||
#include <asm/syscalls_32.h>
|
||||
};
|
||||
@@ -19,7 +19,8 @@ header-y += processor-flags.h
|
||||
header-y += ptrace-abi.h
|
||||
header-y += sigcontext32.h
|
||||
header-y += ucontext.h
|
||||
header-y += unistd_32.h
|
||||
header-y += unistd_64.h
|
||||
header-y += vm86.h
|
||||
header-y += vsyscall.h
|
||||
|
||||
genhdr-y += unistd_32.h
|
||||
genhdr-y += unistd_64.h
|
||||
|
||||
@@ -2,17 +2,10 @@
|
||||
#define _ASM_X86_IA32_UNISTD_H
|
||||
|
||||
/*
|
||||
* This file contains the system call numbers of the ia32 port,
|
||||
* This file contains the system call numbers of the ia32 compat ABI,
|
||||
* this is for the kernel only.
|
||||
* Only add syscalls here where some part of the kernel needs to know
|
||||
* the number. This should be otherwise in sync with asm-x86/unistd_32.h. -AK
|
||||
*/
|
||||
|
||||
#define __NR_ia32_restart_syscall 0
|
||||
#define __NR_ia32_exit 1
|
||||
#define __NR_ia32_read 3
|
||||
#define __NR_ia32_write 4
|
||||
#define __NR_ia32_sigreturn 119
|
||||
#define __NR_ia32_rt_sigreturn 173
|
||||
#define __SYSCALL_ia32_NR(x) (x)
|
||||
#include <asm/unistd_32_ia32.h>
|
||||
|
||||
#endif /* _ASM_X86_IA32_UNISTD_H */
|
||||
|
||||
@@ -1,13 +1,59 @@
|
||||
#ifndef _ASM_X86_UNISTD_H
|
||||
#define _ASM_X86_UNISTD_H 1
|
||||
|
||||
#ifdef __KERNEL__
|
||||
# ifdef CONFIG_X86_32
|
||||
# include "unistd_32.h"
|
||||
|
||||
# include <asm/unistd_32.h>
|
||||
# define __ARCH_WANT_IPC_PARSE_VERSION
|
||||
# define __ARCH_WANT_STAT64
|
||||
# define __ARCH_WANT_SYS_OLD_MMAP
|
||||
# define __ARCH_WANT_SYS_OLD_SELECT
|
||||
|
||||
# else
|
||||
# include "unistd_64.h"
|
||||
|
||||
# include <asm/unistd_64.h>
|
||||
# define __ARCH_WANT_COMPAT_SYS_TIME
|
||||
|
||||
# endif
|
||||
|
||||
# define __ARCH_WANT_OLD_READDIR
|
||||
# define __ARCH_WANT_OLD_STAT
|
||||
# define __ARCH_WANT_SYS_ALARM
|
||||
# define __ARCH_WANT_SYS_FADVISE64
|
||||
# define __ARCH_WANT_SYS_GETHOSTNAME
|
||||
# define __ARCH_WANT_SYS_GETPGRP
|
||||
# define __ARCH_WANT_SYS_LLSEEK
|
||||
# define __ARCH_WANT_SYS_NICE
|
||||
# define __ARCH_WANT_SYS_OLDUMOUNT
|
||||
# define __ARCH_WANT_SYS_OLD_GETRLIMIT
|
||||
# define __ARCH_WANT_SYS_OLD_UNAME
|
||||
# define __ARCH_WANT_SYS_PAUSE
|
||||
# define __ARCH_WANT_SYS_RT_SIGACTION
|
||||
# define __ARCH_WANT_SYS_RT_SIGSUSPEND
|
||||
# define __ARCH_WANT_SYS_SGETMASK
|
||||
# define __ARCH_WANT_SYS_SIGNAL
|
||||
# define __ARCH_WANT_SYS_SIGPENDING
|
||||
# define __ARCH_WANT_SYS_SIGPROCMASK
|
||||
# define __ARCH_WANT_SYS_SOCKETCALL
|
||||
# define __ARCH_WANT_SYS_TIME
|
||||
# define __ARCH_WANT_SYS_UTIME
|
||||
# define __ARCH_WANT_SYS_WAITPID
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
||||
* but it doesn't work on all toolchains, so we just do it by hand
|
||||
*/
|
||||
# define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
|
||||
|
||||
#else
|
||||
# ifdef __i386__
|
||||
# include "unistd_32.h"
|
||||
# include <asm/unistd_32.h>
|
||||
# else
|
||||
# include "unistd_64.h"
|
||||
# include <asm/unistd_64.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#endif /* _ASM_X86_UNISTD_H */
|
||||
|
||||
@@ -1,401 +0,0 @@
|
||||
#ifndef _ASM_X86_UNISTD_32_H
|
||||
#define _ASM_X86_UNISTD_32_H
|
||||
|
||||
/*
|
||||
* This file contains the system call numbers.
|
||||
*/
|
||||
|
||||
#define __NR_restart_syscall 0
|
||||
#define __NR_exit 1
|
||||
#define __NR_fork 2
|
||||
#define __NR_read 3
|
||||
#define __NR_write 4
|
||||
#define __NR_open 5
|
||||
#define __NR_close 6
|
||||
#define __NR_waitpid 7
|
||||
#define __NR_creat 8
|
||||
#define __NR_link 9
|
||||
#define __NR_unlink 10
|
||||
#define __NR_execve 11
|
||||
#define __NR_chdir 12
|
||||
#define __NR_time 13
|
||||
#define __NR_mknod 14
|
||||
#define __NR_chmod 15
|
||||
#define __NR_lchown 16
|
||||
#define __NR_break 17
|
||||
#define __NR_oldstat 18
|
||||
#define __NR_lseek 19
|
||||
#define __NR_getpid 20
|
||||
#define __NR_mount 21
|
||||
#define __NR_umount 22
|
||||
#define __NR_setuid 23
|
||||
#define __NR_getuid 24
|
||||
#define __NR_stime 25
|
||||
#define __NR_ptrace 26
|
||||
#define __NR_alarm 27
|
||||
#define __NR_oldfstat 28
|
||||
#define __NR_pause 29
|
||||
#define __NR_utime 30
|
||||
#define __NR_stty 31
|
||||
#define __NR_gtty 32
|
||||
#define __NR_access 33
|
||||
#define __NR_nice 34
|
||||
#define __NR_ftime 35
|
||||
#define __NR_sync 36
|
||||
#define __NR_kill 37
|
||||
#define __NR_rename 38
|
||||
#define __NR_mkdir 39
|
||||
#define __NR_rmdir 40
|
||||
#define __NR_dup 41
|
||||
#define __NR_pipe 42
|
||||
#define __NR_times 43
|
||||
#define __NR_prof 44
|
||||
#define __NR_brk 45
|
||||
#define __NR_setgid 46
|
||||
#define __NR_getgid 47
|
||||
#define __NR_signal 48
|
||||
#define __NR_geteuid 49
|
||||
#define __NR_getegid 50
|
||||
#define __NR_acct 51
|
||||
#define __NR_umount2 52
|
||||
#define __NR_lock 53
|
||||
#define __NR_ioctl 54
|
||||
#define __NR_fcntl 55
|
||||
#define __NR_mpx 56
|
||||
#define __NR_setpgid 57
|
||||
#define __NR_ulimit 58
|
||||
#define __NR_oldolduname 59
|
||||
#define __NR_umask 60
|
||||
#define __NR_chroot 61
|
||||
#define __NR_ustat 62
|
||||
#define __NR_dup2 63
|
||||
#define __NR_getppid 64
|
||||
#define __NR_getpgrp 65
|
||||
#define __NR_setsid 66
|
||||
#define __NR_sigaction 67
|
||||
#define __NR_sgetmask 68
|
||||
#define __NR_ssetmask 69
|
||||
#define __NR_setreuid 70
|
||||
#define __NR_setregid 71
|
||||
#define __NR_sigsuspend 72
|
||||
#define __NR_sigpending 73
|
||||
#define __NR_sethostname 74
|
||||
#define __NR_setrlimit 75
|
||||
#define __NR_getrlimit 76 /* Back compatible 2Gig limited rlimit */
|
||||
#define __NR_getrusage 77
|
||||
#define __NR_gettimeofday 78
|
||||
#define __NR_settimeofday 79
|
||||
#define __NR_getgroups 80
|
||||
#define __NR_setgroups 81
|
||||
#define __NR_select 82
|
||||
#define __NR_symlink 83
|
||||
#define __NR_oldlstat 84
|
||||
#define __NR_readlink 85
|
||||
#define __NR_uselib 86
|
||||
#define __NR_swapon 87
|
||||
#define __NR_reboot 88
|
||||
#define __NR_readdir 89
|
||||
#define __NR_mmap 90
|
||||
#define __NR_munmap 91
|
||||
#define __NR_truncate 92
|
||||
#define __NR_ftruncate 93
|
||||
#define __NR_fchmod 94
|
||||
#define __NR_fchown 95
|
||||
#define __NR_getpriority 96
|
||||
#define __NR_setpriority 97
|
||||
#define __NR_profil 98
|
||||
#define __NR_statfs 99
|
||||
#define __NR_fstatfs 100
|
||||
#define __NR_ioperm 101
|
||||
#define __NR_socketcall 102
|
||||
#define __NR_syslog 103
|
||||
#define __NR_setitimer 104
|
||||
#define __NR_getitimer 105
|
||||
#define __NR_stat 106
|
||||
#define __NR_lstat 107
|
||||
#define __NR_fstat 108
|
||||
#define __NR_olduname 109
|
||||
#define __NR_iopl 110
|
||||
#define __NR_vhangup 111
|
||||
#define __NR_idle 112
|
||||
#define __NR_vm86old 113
|
||||
#define __NR_wait4 114
|
||||
#define __NR_swapoff 115
|
||||
#define __NR_sysinfo 116
|
||||
#define __NR_ipc 117
|
||||
#define __NR_fsync 118
|
||||
#define __NR_sigreturn 119
|
||||
#define __NR_clone 120
|
||||
#define __NR_setdomainname 121
|
||||
#define __NR_uname 122
|
||||
#define __NR_modify_ldt 123
|
||||
#define __NR_adjtimex 124
|
||||
#define __NR_mprotect 125
|
||||
#define __NR_sigprocmask 126
|
||||
#define __NR_create_module 127
|
||||
#define __NR_init_module 128
|
||||
#define __NR_delete_module 129
|
||||
#define __NR_get_kernel_syms 130
|
||||
#define __NR_quotactl 131
|
||||
#define __NR_getpgid 132
|
||||
#define __NR_fchdir 133
|
||||
#define __NR_bdflush 134
|
||||
#define __NR_sysfs 135
|
||||
#define __NR_personality 136
|
||||
#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
|
||||
#define __NR_setfsuid 138
|
||||
#define __NR_setfsgid 139
|
||||
#define __NR__llseek 140
|
||||
#define __NR_getdents 141
|
||||
#define __NR__newselect 142
|
||||
#define __NR_flock 143
|
||||
#define __NR_msync 144
|
||||
#define __NR_readv 145
|
||||
#define __NR_writev 146
|
||||
#define __NR_getsid 147
|
||||
#define __NR_fdatasync 148
|
||||
#define __NR__sysctl 149
|
||||
#define __NR_mlock 150
|
||||
#define __NR_munlock 151
|
||||
#define __NR_mlockall 152
|
||||
#define __NR_munlockall 153
|
||||
#define __NR_sched_setparam 154
|
||||
#define __NR_sched_getparam 155
|
||||
#define __NR_sched_setscheduler 156
|
||||
#define __NR_sched_getscheduler 157
|
||||
#define __NR_sched_yield 158
|
||||
#define __NR_sched_get_priority_max 159
|
||||
#define __NR_sched_get_priority_min 160
|
||||
#define __NR_sched_rr_get_interval 161
|
||||
#define __NR_nanosleep 162
|
||||
#define __NR_mremap 163
|
||||
#define __NR_setresuid 164
|
||||
#define __NR_getresuid 165
|
||||
#define __NR_vm86 166
|
||||
#define __NR_query_module 167
|
||||
#define __NR_poll 168
|
||||
#define __NR_nfsservctl 169
|
||||
#define __NR_setresgid 170
|
||||
#define __NR_getresgid 171
|
||||
#define __NR_prctl 172
|
||||
#define __NR_rt_sigreturn 173
|
||||
#define __NR_rt_sigaction 174
|
||||
#define __NR_rt_sigprocmask 175
|
||||
#define __NR_rt_sigpending 176
|
||||
#define __NR_rt_sigtimedwait 177
|
||||
#define __NR_rt_sigqueueinfo 178
|
||||
#define __NR_rt_sigsuspend 179
|
||||
#define __NR_pread64 180
|
||||
#define __NR_pwrite64 181
|
||||
#define __NR_chown 182
|
||||
#define __NR_getcwd 183
|
||||
#define __NR_capget 184
|
||||
#define __NR_capset 185
|
||||
#define __NR_sigaltstack 186
|
||||
#define __NR_sendfile 187
|
||||
#define __NR_getpmsg 188 /* some people actually want streams */
|
||||
#define __NR_putpmsg 189 /* some people actually want streams */
|
||||
#define __NR_vfork 190
|
||||
#define __NR_ugetrlimit 191 /* SuS compliant getrlimit */
|
||||
#define __NR_mmap2 192
|
||||
#define __NR_truncate64 193
|
||||
#define __NR_ftruncate64 194
|
||||
#define __NR_stat64 195
|
||||
#define __NR_lstat64 196
|
||||
#define __NR_fstat64 197
|
||||
#define __NR_lchown32 198
|
||||
#define __NR_getuid32 199
|
||||
#define __NR_getgid32 200
|
||||
#define __NR_geteuid32 201
|
||||
#define __NR_getegid32 202
|
||||
#define __NR_setreuid32 203
|
||||
#define __NR_setregid32 204
|
||||
#define __NR_getgroups32 205
|
||||
#define __NR_setgroups32 206
|
||||
#define __NR_fchown32 207
|
||||
#define __NR_setresuid32 208
|
||||
#define __NR_getresuid32 209
|
||||
#define __NR_setresgid32 210
|
||||
#define __NR_getresgid32 211
|
||||
#define __NR_chown32 212
|
||||
#define __NR_setuid32 213
|
||||
#define __NR_setgid32 214
|
||||
#define __NR_setfsuid32 215
|
||||
#define __NR_setfsgid32 216
|
||||
#define __NR_pivot_root 217
|
||||
#define __NR_mincore 218
|
||||
#define __NR_madvise 219
|
||||
#define __NR_madvise1 219 /* delete when C lib stub is removed */
|
||||
#define __NR_getdents64 220
|
||||
#define __NR_fcntl64 221
|
||||
/* 223 is unused */
|
||||
#define __NR_gettid 224
|
||||
#define __NR_readahead 225
|
||||
#define __NR_setxattr 226
|
||||
#define __NR_lsetxattr 227
|
||||
#define __NR_fsetxattr 228
|
||||
#define __NR_getxattr 229
|
||||
#define __NR_lgetxattr 230
|
||||
#define __NR_fgetxattr 231
|
||||
#define __NR_listxattr 232
|
||||
#define __NR_llistxattr 233
|
||||
#define __NR_flistxattr 234
|
||||
#define __NR_removexattr 235
|
||||
#define __NR_lremovexattr 236
|
||||
#define __NR_fremovexattr 237
|
||||
#define __NR_tkill 238
|
||||
#define __NR_sendfile64 239
|
||||
#define __NR_futex 240
|
||||
#define __NR_sched_setaffinity 241
|
||||
#define __NR_sched_getaffinity 242
|
||||
#define __NR_set_thread_area 243
|
||||
#define __NR_get_thread_area 244
|
||||
#define __NR_io_setup 245
|
||||
#define __NR_io_destroy 246
|
||||
#define __NR_io_getevents 247
|
||||
#define __NR_io_submit 248
|
||||
#define __NR_io_cancel 249
|
||||
#define __NR_fadvise64 250
|
||||
/* 251 is available for reuse (was briefly sys_set_zone_reclaim) */
|
||||
#define __NR_exit_group 252
|
||||
#define __NR_lookup_dcookie 253
|
||||
#define __NR_epoll_create 254
|
||||
#define __NR_epoll_ctl 255
|
||||
#define __NR_epoll_wait 256
|
||||
#define __NR_remap_file_pages 257
|
||||
#define __NR_set_tid_address 258
|
||||
#define __NR_timer_create 259
|
||||
#define __NR_timer_settime (__NR_timer_create+1)
|
||||
#define __NR_timer_gettime (__NR_timer_create+2)
|
||||
#define __NR_timer_getoverrun (__NR_timer_create+3)
|
||||
#define __NR_timer_delete (__NR_timer_create+4)
|
||||
#define __NR_clock_settime (__NR_timer_create+5)
|
||||
#define __NR_clock_gettime (__NR_timer_create+6)
|
||||
#define __NR_clock_getres (__NR_timer_create+7)
|
||||
#define __NR_clock_nanosleep (__NR_timer_create+8)
|
||||
#define __NR_statfs64 268
|
||||
#define __NR_fstatfs64 269
|
||||
#define __NR_tgkill 270
|
||||
#define __NR_utimes 271
|
||||
#define __NR_fadvise64_64 272
|
||||
#define __NR_vserver 273
|
||||
#define __NR_mbind 274
|
||||
#define __NR_get_mempolicy 275
|
||||
#define __NR_set_mempolicy 276
|
||||
#define __NR_mq_open 277
|
||||
#define __NR_mq_unlink (__NR_mq_open+1)
|
||||
#define __NR_mq_timedsend (__NR_mq_open+2)
|
||||
#define __NR_mq_timedreceive (__NR_mq_open+3)
|
||||
#define __NR_mq_notify (__NR_mq_open+4)
|
||||
#define __NR_mq_getsetattr (__NR_mq_open+5)
|
||||
#define __NR_kexec_load 283
|
||||
#define __NR_waitid 284
|
||||
/* #define __NR_sys_setaltroot 285 */
|
||||
#define __NR_add_key 286
|
||||
#define __NR_request_key 287
|
||||
#define __NR_keyctl 288
|
||||
#define __NR_ioprio_set 289
|
||||
#define __NR_ioprio_get 290
|
||||
#define __NR_inotify_init 291
|
||||
#define __NR_inotify_add_watch 292
|
||||
#define __NR_inotify_rm_watch 293
|
||||
#define __NR_migrate_pages 294
|
||||
#define __NR_openat 295
|
||||
#define __NR_mkdirat 296
|
||||
#define __NR_mknodat 297
|
||||
#define __NR_fchownat 298
|
||||
#define __NR_futimesat 299
|
||||
#define __NR_fstatat64 300
|
||||
#define __NR_unlinkat 301
|
||||
#define __NR_renameat 302
|
||||
#define __NR_linkat 303
|
||||
#define __NR_symlinkat 304
|
||||
#define __NR_readlinkat 305
|
||||
#define __NR_fchmodat 306
|
||||
#define __NR_faccessat 307
|
||||
#define __NR_pselect6 308
|
||||
#define __NR_ppoll 309
|
||||
#define __NR_unshare 310
|
||||
#define __NR_set_robust_list 311
|
||||
#define __NR_get_robust_list 312
|
||||
#define __NR_splice 313
|
||||
#define __NR_sync_file_range 314
|
||||
#define __NR_tee 315
|
||||
#define __NR_vmsplice 316
|
||||
#define __NR_move_pages 317
|
||||
#define __NR_getcpu 318
|
||||
#define __NR_epoll_pwait 319
|
||||
#define __NR_utimensat 320
|
||||
#define __NR_signalfd 321
|
||||
#define __NR_timerfd_create 322
|
||||
#define __NR_eventfd 323
|
||||
#define __NR_fallocate 324
|
||||
#define __NR_timerfd_settime 325
|
||||
#define __NR_timerfd_gettime 326
|
||||
#define __NR_signalfd4 327
|
||||
#define __NR_eventfd2 328
|
||||
#define __NR_epoll_create1 329
|
||||
#define __NR_dup3 330
|
||||
#define __NR_pipe2 331
|
||||
#define __NR_inotify_init1 332
|
||||
#define __NR_preadv 333
|
||||
#define __NR_pwritev 334
|
||||
#define __NR_rt_tgsigqueueinfo 335
|
||||
#define __NR_perf_event_open 336
|
||||
#define __NR_recvmmsg 337
|
||||
#define __NR_fanotify_init 338
|
||||
#define __NR_fanotify_mark 339
|
||||
#define __NR_prlimit64 340
|
||||
#define __NR_name_to_handle_at 341
|
||||
#define __NR_open_by_handle_at 342
|
||||
#define __NR_clock_adjtime 343
|
||||
#define __NR_syncfs 344
|
||||
#define __NR_sendmmsg 345
|
||||
#define __NR_setns 346
|
||||
#define __NR_process_vm_readv 347
|
||||
#define __NR_process_vm_writev 348
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define NR_syscalls 349
|
||||
|
||||
#define __ARCH_WANT_IPC_PARSE_VERSION
|
||||
#define __ARCH_WANT_OLD_READDIR
|
||||
#define __ARCH_WANT_OLD_STAT
|
||||
#define __ARCH_WANT_STAT64
|
||||
#define __ARCH_WANT_SYS_ALARM
|
||||
#define __ARCH_WANT_SYS_GETHOSTNAME
|
||||
#define __ARCH_WANT_SYS_IPC
|
||||
#define __ARCH_WANT_SYS_PAUSE
|
||||
#define __ARCH_WANT_SYS_SGETMASK
|
||||
#define __ARCH_WANT_SYS_SIGNAL
|
||||
#define __ARCH_WANT_SYS_TIME
|
||||
#define __ARCH_WANT_SYS_UTIME
|
||||
#define __ARCH_WANT_SYS_WAITPID
|
||||
#define __ARCH_WANT_SYS_SOCKETCALL
|
||||
#define __ARCH_WANT_SYS_FADVISE64
|
||||
#define __ARCH_WANT_SYS_GETPGRP
|
||||
#define __ARCH_WANT_SYS_LLSEEK
|
||||
#define __ARCH_WANT_SYS_NICE
|
||||
#define __ARCH_WANT_SYS_OLD_GETRLIMIT
|
||||
#define __ARCH_WANT_SYS_OLD_UNAME
|
||||
#define __ARCH_WANT_SYS_OLD_MMAP
|
||||
#define __ARCH_WANT_SYS_OLD_SELECT
|
||||
#define __ARCH_WANT_SYS_OLDUMOUNT
|
||||
#define __ARCH_WANT_SYS_SIGPENDING
|
||||
#define __ARCH_WANT_SYS_SIGPROCMASK
|
||||
#define __ARCH_WANT_SYS_RT_SIGACTION
|
||||
#define __ARCH_WANT_SYS_RT_SIGSUSPEND
|
||||
|
||||
/*
|
||||
* "Conditional" syscalls
|
||||
*
|
||||
* What we want is __attribute__((weak,alias("sys_ni_syscall"))),
|
||||
* but it doesn't work on all toolchains, so we just do it by hand
|
||||
*/
|
||||
#ifndef cond_syscall
|
||||
#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
|
||||
#endif
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _ASM_X86_UNISTD_32_H */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -25,7 +25,8 @@ obj-$(CONFIG_IRQ_WORK) += irq_work.o
|
||||
obj-y += probe_roms.o
|
||||
obj-$(CONFIG_X86_32) += sys_i386_32.o i386_ksyms_32.o
|
||||
obj-$(CONFIG_X86_64) += sys_x86_64.o x8664_ksyms_64.o
|
||||
obj-$(CONFIG_X86_64) += syscall_64.o vsyscall_64.o
|
||||
obj-y += syscall_$(BITS).o
|
||||
obj-$(CONFIG_X86_64) += vsyscall_64.o
|
||||
obj-$(CONFIG_X86_64) += vsyscall_emu_64.o
|
||||
obj-y += bootflag.o e820.o
|
||||
obj-y += pci-dma.o quirks.o topology.o kdebugfs.o
|
||||
|
||||
@@ -3,6 +3,11 @@
|
||||
#include <linux/lguest.h>
|
||||
#include "../../../drivers/lguest/lg.h"
|
||||
|
||||
#define __SYSCALL_I386(nr, sym, compat) [nr] = 1,
|
||||
static char syscalls[] = {
|
||||
#include <asm/syscalls_32.h>
|
||||
};
|
||||
|
||||
/* workaround for a warning with -Wmissing-prototypes */
|
||||
void foo(void);
|
||||
|
||||
@@ -76,4 +81,7 @@ void foo(void)
|
||||
OFFSET(LGUEST_PAGES_regs_errcode, lguest_pages, regs.errcode);
|
||||
OFFSET(LGUEST_PAGES_regs, lguest_pages, regs);
|
||||
#endif
|
||||
BLANK();
|
||||
DEFINE(__NR_syscall_max, sizeof(syscalls) - 1);
|
||||
DEFINE(NR_syscalls, sizeof(syscalls));
|
||||
}
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
#include <asm/ia32.h>
|
||||
|
||||
#define __NO_STUBS 1
|
||||
#undef __SYSCALL
|
||||
#undef _ASM_X86_UNISTD_64_H
|
||||
#define __SYSCALL(nr, sym) [nr] = 1,
|
||||
static char syscalls[] = {
|
||||
#include <asm/unistd.h>
|
||||
#define __SYSCALL_64(nr, sym, compat) [nr] = 1,
|
||||
static char syscalls_64[] = {
|
||||
#include <asm/syscalls_64.h>
|
||||
};
|
||||
#define __SYSCALL_I386(nr, sym, compat) [nr] = 1,
|
||||
static char syscalls_ia32[] = {
|
||||
#include <asm/syscalls_32.h>
|
||||
};
|
||||
|
||||
int main(void)
|
||||
@@ -72,7 +73,11 @@ int main(void)
|
||||
OFFSET(TSS_ist, tss_struct, x86_tss.ist);
|
||||
BLANK();
|
||||
|
||||
DEFINE(__NR_syscall_max, sizeof(syscalls) - 1);
|
||||
DEFINE(__NR_syscall_max, sizeof(syscalls_64) - 1);
|
||||
DEFINE(NR_syscalls, sizeof(syscalls_64));
|
||||
|
||||
DEFINE(__NR_ia32_syscall_max, sizeof(syscalls_ia32) - 1);
|
||||
DEFINE(IA32_NR_syscalls, sizeof(syscalls_ia32));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -81,8 +81,6 @@
|
||||
* enough to patch inline, increasing performance.
|
||||
*/
|
||||
|
||||
#define nr_syscalls ((syscall_table_size)/4)
|
||||
|
||||
#ifdef CONFIG_PREEMPT
|
||||
#define preempt_stop(clobbers) DISABLE_INTERRUPTS(clobbers); TRACE_IRQS_OFF
|
||||
#else
|
||||
@@ -423,7 +421,7 @@ sysenter_past_esp:
|
||||
testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp)
|
||||
jnz sysenter_audit
|
||||
sysenter_do_call:
|
||||
cmpl $(nr_syscalls), %eax
|
||||
cmpl $(NR_syscalls), %eax
|
||||
jae syscall_badsys
|
||||
call *sys_call_table(,%eax,4)
|
||||
movl %eax,PT_EAX(%esp)
|
||||
@@ -504,7 +502,7 @@ ENTRY(system_call)
|
||||
# system call tracing in operation / emulation
|
||||
testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp)
|
||||
jnz syscall_trace_entry
|
||||
cmpl $(nr_syscalls), %eax
|
||||
cmpl $(NR_syscalls), %eax
|
||||
jae syscall_badsys
|
||||
syscall_call:
|
||||
call *sys_call_table(,%eax,4)
|
||||
@@ -650,7 +648,7 @@ syscall_trace_entry:
|
||||
movl %esp, %eax
|
||||
call syscall_trace_enter
|
||||
/* What it returned is what we'll actually use. */
|
||||
cmpl $(nr_syscalls), %eax
|
||||
cmpl $(NR_syscalls), %eax
|
||||
jnae syscall_call
|
||||
jmp syscall_exit
|
||||
END(syscall_trace_entry)
|
||||
@@ -690,29 +688,28 @@ END(syscall_badsys)
|
||||
* System calls that need a pt_regs pointer.
|
||||
*/
|
||||
#define PTREGSCALL0(name) \
|
||||
ALIGN; \
|
||||
ptregs_##name: \
|
||||
ENTRY(ptregs_##name) ; \
|
||||
leal 4(%esp),%eax; \
|
||||
jmp sys_##name;
|
||||
jmp sys_##name; \
|
||||
ENDPROC(ptregs_##name)
|
||||
|
||||
#define PTREGSCALL1(name) \
|
||||
ALIGN; \
|
||||
ptregs_##name: \
|
||||
ENTRY(ptregs_##name) ; \
|
||||
leal 4(%esp),%edx; \
|
||||
movl (PT_EBX+4)(%esp),%eax; \
|
||||
jmp sys_##name;
|
||||
jmp sys_##name; \
|
||||
ENDPROC(ptregs_##name)
|
||||
|
||||
#define PTREGSCALL2(name) \
|
||||
ALIGN; \
|
||||
ptregs_##name: \
|
||||
ENTRY(ptregs_##name) ; \
|
||||
leal 4(%esp),%ecx; \
|
||||
movl (PT_ECX+4)(%esp),%edx; \
|
||||
movl (PT_EBX+4)(%esp),%eax; \
|
||||
jmp sys_##name;
|
||||
jmp sys_##name; \
|
||||
ENDPROC(ptregs_##name)
|
||||
|
||||
#define PTREGSCALL3(name) \
|
||||
ALIGN; \
|
||||
ptregs_##name: \
|
||||
ENTRY(ptregs_##name) ; \
|
||||
CFI_STARTPROC; \
|
||||
leal 4(%esp),%eax; \
|
||||
pushl_cfi %eax; \
|
||||
@@ -737,8 +734,7 @@ PTREGSCALL2(vm86)
|
||||
PTREGSCALL1(vm86old)
|
||||
|
||||
/* Clone is an oddball. The 4th arg is in %edi */
|
||||
ALIGN;
|
||||
ptregs_clone:
|
||||
ENTRY(ptregs_clone)
|
||||
CFI_STARTPROC
|
||||
leal 4(%esp),%eax
|
||||
pushl_cfi %eax
|
||||
@@ -1209,11 +1205,6 @@ return_to_handler:
|
||||
jmp *%ecx
|
||||
#endif
|
||||
|
||||
.section .rodata,"a"
|
||||
#include "syscall_table_32.S"
|
||||
|
||||
syscall_table_size=(.-sys_call_table)
|
||||
|
||||
/*
|
||||
* Some functions should be protected against kprobes
|
||||
*/
|
||||
|
||||
25
arch/x86/kernel/syscall_32.c
Normal file
25
arch/x86/kernel/syscall_32.c
Normal file
@@ -0,0 +1,25 @@
|
||||
/* System call table for i386. */
|
||||
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/sys.h>
|
||||
#include <linux/cache.h>
|
||||
#include <asm/asm-offsets.h>
|
||||
|
||||
#define __SYSCALL_I386(nr, sym, compat) extern asmlinkage void sym(void) ;
|
||||
#include <asm/syscalls_32.h>
|
||||
#undef __SYSCALL_I386
|
||||
|
||||
#define __SYSCALL_I386(nr, sym, compat) [nr] = sym,
|
||||
|
||||
typedef asmlinkage void (*sys_call_ptr_t)(void);
|
||||
|
||||
extern asmlinkage void sys_ni_syscall(void);
|
||||
|
||||
const sys_call_ptr_t sys_call_table[__NR_syscall_max+1] = {
|
||||
/*
|
||||
* Smells like a like a compiler bug -- it doesn't work
|
||||
* when the & below is removed.
|
||||
*/
|
||||
[0 ... __NR_syscall_max] = &sys_ni_syscall,
|
||||
#include <asm/syscalls_32.h>
|
||||
};
|
||||
@@ -5,15 +5,11 @@
|
||||
#include <linux/cache.h>
|
||||
#include <asm/asm-offsets.h>
|
||||
|
||||
#define __NO_STUBS
|
||||
#define __SYSCALL_64(nr, sym, compat) extern asmlinkage void sym(void) ;
|
||||
#include <asm/syscalls_64.h>
|
||||
#undef __SYSCALL_64
|
||||
|
||||
#define __SYSCALL(nr, sym) extern asmlinkage void sym(void) ;
|
||||
#undef _ASM_X86_UNISTD_64_H
|
||||
#include <asm/unistd_64.h>
|
||||
|
||||
#undef __SYSCALL
|
||||
#define __SYSCALL(nr, sym) [nr] = sym,
|
||||
#undef _ASM_X86_UNISTD_64_H
|
||||
#define __SYSCALL_64(nr, sym, compat) [nr] = sym,
|
||||
|
||||
typedef void (*sys_call_ptr_t)(void);
|
||||
|
||||
@@ -25,5 +21,5 @@ const sys_call_ptr_t sys_call_table[__NR_syscall_max+1] = {
|
||||
* when the & below is removed.
|
||||
*/
|
||||
[0 ... __NR_syscall_max] = &sys_ni_syscall,
|
||||
#include <asm/unistd_64.h>
|
||||
#include <asm/syscalls_64.h>
|
||||
};
|
||||
|
||||
@@ -1,350 +0,0 @@
|
||||
ENTRY(sys_call_table)
|
||||
.long sys_restart_syscall /* 0 - old "setup()" system call, used for restarting */
|
||||
.long sys_exit
|
||||
.long ptregs_fork
|
||||
.long sys_read
|
||||
.long sys_write
|
||||
.long sys_open /* 5 */
|
||||
.long sys_close
|
||||
.long sys_waitpid
|
||||
.long sys_creat
|
||||
.long sys_link
|
||||
.long sys_unlink /* 10 */
|
||||
.long ptregs_execve
|
||||
.long sys_chdir
|
||||
.long sys_time
|
||||
.long sys_mknod
|
||||
.long sys_chmod /* 15 */
|
||||
.long sys_lchown16
|
||||
.long sys_ni_syscall /* old break syscall holder */
|
||||
.long sys_stat
|
||||
.long sys_lseek
|
||||
.long sys_getpid /* 20 */
|
||||
.long sys_mount
|
||||
.long sys_oldumount
|
||||
.long sys_setuid16
|
||||
.long sys_getuid16
|
||||
.long sys_stime /* 25 */
|
||||
.long sys_ptrace
|
||||
.long sys_alarm
|
||||
.long sys_fstat
|
||||
.long sys_pause
|
||||
.long sys_utime /* 30 */
|
||||
.long sys_ni_syscall /* old stty syscall holder */
|
||||
.long sys_ni_syscall /* old gtty syscall holder */
|
||||
.long sys_access
|
||||
.long sys_nice
|
||||
.long sys_ni_syscall /* 35 - old ftime syscall holder */
|
||||
.long sys_sync
|
||||
.long sys_kill
|
||||
.long sys_rename
|
||||
.long sys_mkdir
|
||||
.long sys_rmdir /* 40 */
|
||||
.long sys_dup
|
||||
.long sys_pipe
|
||||
.long sys_times
|
||||
.long sys_ni_syscall /* old prof syscall holder */
|
||||
.long sys_brk /* 45 */
|
||||
.long sys_setgid16
|
||||
.long sys_getgid16
|
||||
.long sys_signal
|
||||
.long sys_geteuid16
|
||||
.long sys_getegid16 /* 50 */
|
||||
.long sys_acct
|
||||
.long sys_umount /* recycled never used phys() */
|
||||
.long sys_ni_syscall /* old lock syscall holder */
|
||||
.long sys_ioctl
|
||||
.long sys_fcntl /* 55 */
|
||||
.long sys_ni_syscall /* old mpx syscall holder */
|
||||
.long sys_setpgid
|
||||
.long sys_ni_syscall /* old ulimit syscall holder */
|
||||
.long sys_olduname
|
||||
.long sys_umask /* 60 */
|
||||
.long sys_chroot
|
||||
.long sys_ustat
|
||||
.long sys_dup2
|
||||
.long sys_getppid
|
||||
.long sys_getpgrp /* 65 */
|
||||
.long sys_setsid
|
||||
.long sys_sigaction
|
||||
.long sys_sgetmask
|
||||
.long sys_ssetmask
|
||||
.long sys_setreuid16 /* 70 */
|
||||
.long sys_setregid16
|
||||
.long sys_sigsuspend
|
||||
.long sys_sigpending
|
||||
.long sys_sethostname
|
||||
.long sys_setrlimit /* 75 */
|
||||
.long sys_old_getrlimit
|
||||
.long sys_getrusage
|
||||
.long sys_gettimeofday
|
||||
.long sys_settimeofday
|
||||
.long sys_getgroups16 /* 80 */
|
||||
.long sys_setgroups16
|
||||
.long sys_old_select
|
||||
.long sys_symlink
|
||||
.long sys_lstat
|
||||
.long sys_readlink /* 85 */
|
||||
.long sys_uselib
|
||||
.long sys_swapon
|
||||
.long sys_reboot
|
||||
.long sys_old_readdir
|
||||
.long sys_old_mmap /* 90 */
|
||||
.long sys_munmap
|
||||
.long sys_truncate
|
||||
.long sys_ftruncate
|
||||
.long sys_fchmod
|
||||
.long sys_fchown16 /* 95 */
|
||||
.long sys_getpriority
|
||||
.long sys_setpriority
|
||||
.long sys_ni_syscall /* old profil syscall holder */
|
||||
.long sys_statfs
|
||||
.long sys_fstatfs /* 100 */
|
||||
.long sys_ioperm
|
||||
.long sys_socketcall
|
||||
.long sys_syslog
|
||||
.long sys_setitimer
|
||||
.long sys_getitimer /* 105 */
|
||||
.long sys_newstat
|
||||
.long sys_newlstat
|
||||
.long sys_newfstat
|
||||
.long sys_uname
|
||||
.long ptregs_iopl /* 110 */
|
||||
.long sys_vhangup
|
||||
.long sys_ni_syscall /* old "idle" system call */
|
||||
.long ptregs_vm86old
|
||||
.long sys_wait4
|
||||
.long sys_swapoff /* 115 */
|
||||
.long sys_sysinfo
|
||||
.long sys_ipc
|
||||
.long sys_fsync
|
||||
.long ptregs_sigreturn
|
||||
.long ptregs_clone /* 120 */
|
||||
.long sys_setdomainname
|
||||
.long sys_newuname
|
||||
.long sys_modify_ldt
|
||||
.long sys_adjtimex
|
||||
.long sys_mprotect /* 125 */
|
||||
.long sys_sigprocmask
|
||||
.long sys_ni_syscall /* old "create_module" */
|
||||
.long sys_init_module
|
||||
.long sys_delete_module
|
||||
.long sys_ni_syscall /* 130: old "get_kernel_syms" */
|
||||
.long sys_quotactl
|
||||
.long sys_getpgid
|
||||
.long sys_fchdir
|
||||
.long sys_bdflush
|
||||
.long sys_sysfs /* 135 */
|
||||
.long sys_personality
|
||||
.long sys_ni_syscall /* reserved for afs_syscall */
|
||||
.long sys_setfsuid16
|
||||
.long sys_setfsgid16
|
||||
.long sys_llseek /* 140 */
|
||||
.long sys_getdents
|
||||
.long sys_select
|
||||
.long sys_flock
|
||||
.long sys_msync
|
||||
.long sys_readv /* 145 */
|
||||
.long sys_writev
|
||||
.long sys_getsid
|
||||
.long sys_fdatasync
|
||||
.long sys_sysctl
|
||||
.long sys_mlock /* 150 */
|
||||
.long sys_munlock
|
||||
.long sys_mlockall
|
||||
.long sys_munlockall
|
||||
.long sys_sched_setparam
|
||||
.long sys_sched_getparam /* 155 */
|
||||
.long sys_sched_setscheduler
|
||||
.long sys_sched_getscheduler
|
||||
.long sys_sched_yield
|
||||
.long sys_sched_get_priority_max
|
||||
.long sys_sched_get_priority_min /* 160 */
|
||||
.long sys_sched_rr_get_interval
|
||||
.long sys_nanosleep
|
||||
.long sys_mremap
|
||||
.long sys_setresuid16
|
||||
.long sys_getresuid16 /* 165 */
|
||||
.long ptregs_vm86
|
||||
.long sys_ni_syscall /* Old sys_query_module */
|
||||
.long sys_poll
|
||||
.long sys_ni_syscall /* Old nfsservctl */
|
||||
.long sys_setresgid16 /* 170 */
|
||||
.long sys_getresgid16
|
||||
.long sys_prctl
|
||||
.long ptregs_rt_sigreturn
|
||||
.long sys_rt_sigaction
|
||||
.long sys_rt_sigprocmask /* 175 */
|
||||
.long sys_rt_sigpending
|
||||
.long sys_rt_sigtimedwait
|
||||
.long sys_rt_sigqueueinfo
|
||||
.long sys_rt_sigsuspend
|
||||
.long sys_pread64 /* 180 */
|
||||
.long sys_pwrite64
|
||||
.long sys_chown16
|
||||
.long sys_getcwd
|
||||
.long sys_capget
|
||||
.long sys_capset /* 185 */
|
||||
.long ptregs_sigaltstack
|
||||
.long sys_sendfile
|
||||
.long sys_ni_syscall /* reserved for streams1 */
|
||||
.long sys_ni_syscall /* reserved for streams2 */
|
||||
.long ptregs_vfork /* 190 */
|
||||
.long sys_getrlimit
|
||||
.long sys_mmap_pgoff
|
||||
.long sys_truncate64
|
||||
.long sys_ftruncate64
|
||||
.long sys_stat64 /* 195 */
|
||||
.long sys_lstat64
|
||||
.long sys_fstat64
|
||||
.long sys_lchown
|
||||
.long sys_getuid
|
||||
.long sys_getgid /* 200 */
|
||||
.long sys_geteuid
|
||||
.long sys_getegid
|
||||
.long sys_setreuid
|
||||
.long sys_setregid
|
||||
.long sys_getgroups /* 205 */
|
||||
.long sys_setgroups
|
||||
.long sys_fchown
|
||||
.long sys_setresuid
|
||||
.long sys_getresuid
|
||||
.long sys_setresgid /* 210 */
|
||||
.long sys_getresgid
|
||||
.long sys_chown
|
||||
.long sys_setuid
|
||||
.long sys_setgid
|
||||
.long sys_setfsuid /* 215 */
|
||||
.long sys_setfsgid
|
||||
.long sys_pivot_root
|
||||
.long sys_mincore
|
||||
.long sys_madvise
|
||||
.long sys_getdents64 /* 220 */
|
||||
.long sys_fcntl64
|
||||
.long sys_ni_syscall /* reserved for TUX */
|
||||
.long sys_ni_syscall
|
||||
.long sys_gettid
|
||||
.long sys_readahead /* 225 */
|
||||
.long sys_setxattr
|
||||
.long sys_lsetxattr
|
||||
.long sys_fsetxattr
|
||||
.long sys_getxattr
|
||||
.long sys_lgetxattr /* 230 */
|
||||
.long sys_fgetxattr
|
||||
.long sys_listxattr
|
||||
.long sys_llistxattr
|
||||
.long sys_flistxattr
|
||||
.long sys_removexattr /* 235 */
|
||||
.long sys_lremovexattr
|
||||
.long sys_fremovexattr
|
||||
.long sys_tkill
|
||||
.long sys_sendfile64
|
||||
.long sys_futex /* 240 */
|
||||
.long sys_sched_setaffinity
|
||||
.long sys_sched_getaffinity
|
||||
.long sys_set_thread_area
|
||||
.long sys_get_thread_area
|
||||
.long sys_io_setup /* 245 */
|
||||
.long sys_io_destroy
|
||||
.long sys_io_getevents
|
||||
.long sys_io_submit
|
||||
.long sys_io_cancel
|
||||
.long sys_fadvise64 /* 250 */
|
||||
.long sys_ni_syscall
|
||||
.long sys_exit_group
|
||||
.long sys_lookup_dcookie
|
||||
.long sys_epoll_create
|
||||
.long sys_epoll_ctl /* 255 */
|
||||
.long sys_epoll_wait
|
||||
.long sys_remap_file_pages
|
||||
.long sys_set_tid_address
|
||||
.long sys_timer_create
|
||||
.long sys_timer_settime /* 260 */
|
||||
.long sys_timer_gettime
|
||||
.long sys_timer_getoverrun
|
||||
.long sys_timer_delete
|
||||
.long sys_clock_settime
|
||||
.long sys_clock_gettime /* 265 */
|
||||
.long sys_clock_getres
|
||||
.long sys_clock_nanosleep
|
||||
.long sys_statfs64
|
||||
.long sys_fstatfs64
|
||||
.long sys_tgkill /* 270 */
|
||||
.long sys_utimes
|
||||
.long sys_fadvise64_64
|
||||
.long sys_ni_syscall /* sys_vserver */
|
||||
.long sys_mbind
|
||||
.long sys_get_mempolicy
|
||||
.long sys_set_mempolicy
|
||||
.long sys_mq_open
|
||||
.long sys_mq_unlink
|
||||
.long sys_mq_timedsend
|
||||
.long sys_mq_timedreceive /* 280 */
|
||||
.long sys_mq_notify
|
||||
.long sys_mq_getsetattr
|
||||
.long sys_kexec_load
|
||||
.long sys_waitid
|
||||
.long sys_ni_syscall /* 285 */ /* available */
|
||||
.long sys_add_key
|
||||
.long sys_request_key
|
||||
.long sys_keyctl
|
||||
.long sys_ioprio_set
|
||||
.long sys_ioprio_get /* 290 */
|
||||
.long sys_inotify_init
|
||||
.long sys_inotify_add_watch
|
||||
.long sys_inotify_rm_watch
|
||||
.long sys_migrate_pages
|
||||
.long sys_openat /* 295 */
|
||||
.long sys_mkdirat
|
||||
.long sys_mknodat
|
||||
.long sys_fchownat
|
||||
.long sys_futimesat
|
||||
.long sys_fstatat64 /* 300 */
|
||||
.long sys_unlinkat
|
||||
.long sys_renameat
|
||||
.long sys_linkat
|
||||
.long sys_symlinkat
|
||||
.long sys_readlinkat /* 305 */
|
||||
.long sys_fchmodat
|
||||
.long sys_faccessat
|
||||
.long sys_pselect6
|
||||
.long sys_ppoll
|
||||
.long sys_unshare /* 310 */
|
||||
.long sys_set_robust_list
|
||||
.long sys_get_robust_list
|
||||
.long sys_splice
|
||||
.long sys_sync_file_range
|
||||
.long sys_tee /* 315 */
|
||||
.long sys_vmsplice
|
||||
.long sys_move_pages
|
||||
.long sys_getcpu
|
||||
.long sys_epoll_pwait
|
||||
.long sys_utimensat /* 320 */
|
||||
.long sys_signalfd
|
||||
.long sys_timerfd_create
|
||||
.long sys_eventfd
|
||||
.long sys_fallocate
|
||||
.long sys_timerfd_settime /* 325 */
|
||||
.long sys_timerfd_gettime
|
||||
.long sys_signalfd4
|
||||
.long sys_eventfd2
|
||||
.long sys_epoll_create1
|
||||
.long sys_dup3 /* 330 */
|
||||
.long sys_pipe2
|
||||
.long sys_inotify_init1
|
||||
.long sys_preadv
|
||||
.long sys_pwritev
|
||||
.long sys_rt_tgsigqueueinfo /* 335 */
|
||||
.long sys_perf_event_open
|
||||
.long sys_recvmmsg
|
||||
.long sys_fanotify_init
|
||||
.long sys_fanotify_mark
|
||||
.long sys_prlimit64 /* 340 */
|
||||
.long sys_name_to_handle_at
|
||||
.long sys_open_by_handle_at
|
||||
.long sys_clock_adjtime
|
||||
.long sys_syncfs
|
||||
.long sys_sendmmsg /* 345 */
|
||||
.long sys_setns
|
||||
.long sys_process_vm_readv
|
||||
.long sys_process_vm_writev
|
||||
Reference in New Issue
Block a user