提交 fa1b4f91 编写于 作者: A Al Viro 提交者: Russell King

[ARM] safer handling of syscall table padding

ARM entry-common.S needs to know syscall table size; in itself that would
not be a problem, but there's an additional constraint - some of the
instructions using it want a constant that would be a multiple of 4.
So we have to pad syscall table with sys_ni_syscall and that's where
the trouble begins.  .rept pseudo-op wants a constant expression for
number of repetitions and subtraction of two labels (before and after
syscall table) doesn't always get simplified to constant early enough
for .rept.  If labels end up in different frags, we lose.  And while
the frag size is large enough (slightly below 4Kb), the syscall table
is about 1/3 of that.  We used to get away with that, but the recent
changes had been enough to trigger the breakage.

Proper fix is simple: have a macro (CALL(x)) to populate the table
instead of using explicit .long x and the first time we include calls.S
have it defined to .equ NR_syscalls,NR_syscalls+1.  Then we can find
the proper amount of padding on the first inclusion simply by looking
at NR_syscalls at that time.  And that will be constant, no matter what.

Moreover, the same trick kills the need of having an estimate of padded
NR_syscalls - it will be calculated for free at the same time.
Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
上级 ea497725
...@@ -7,337 +7,334 @@ ...@@ -7,337 +7,334 @@
* it under the terms of the GNU General Public License version 2 as * it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation. * published by the Free Software Foundation.
* *
* This file is included twice in entry-common.S * This file is included thrice in entry-common.S
*/ */
#ifndef NR_syscalls /* 0 */ CALL(sys_restart_syscall)
#define NR_syscalls 328 CALL(sys_exit)
#else CALL(sys_fork_wrapper)
CALL(sys_read)
100: CALL(sys_write)
/* 0 */ .long sys_restart_syscall /* 5 */ CALL(sys_open)
.long sys_exit CALL(sys_close)
.long sys_fork_wrapper CALL(sys_ni_syscall) /* was sys_waitpid */
.long sys_read CALL(sys_creat)
.long sys_write CALL(sys_link)
/* 5 */ .long sys_open /* 10 */ CALL(sys_unlink)
.long sys_close CALL(sys_execve_wrapper)
.long sys_ni_syscall /* was sys_waitpid */ CALL(sys_chdir)
.long sys_creat CALL(OBSOLETE(sys_time)) /* used by libc4 */
.long sys_link CALL(sys_mknod)
/* 10 */ .long sys_unlink /* 15 */ CALL(sys_chmod)
.long sys_execve_wrapper CALL(sys_lchown16)
.long sys_chdir CALL(sys_ni_syscall) /* was sys_break */
.long OBSOLETE(sys_time) /* used by libc4 */ CALL(sys_ni_syscall) /* was sys_stat */
.long sys_mknod CALL(sys_lseek)
/* 15 */ .long sys_chmod /* 20 */ CALL(sys_getpid)
.long sys_lchown16 CALL(sys_mount)
.long sys_ni_syscall /* was sys_break */ CALL(OBSOLETE(sys_oldumount)) /* used by libc4 */
.long sys_ni_syscall /* was sys_stat */ CALL(sys_setuid16)
.long sys_lseek CALL(sys_getuid16)
/* 20 */ .long sys_getpid /* 25 */ CALL(OBSOLETE(sys_stime))
.long sys_mount CALL(sys_ptrace)
.long OBSOLETE(sys_oldumount) /* used by libc4 */ CALL(OBSOLETE(sys_alarm)) /* used by libc4 */
.long sys_setuid16 CALL(sys_ni_syscall) /* was sys_fstat */
.long sys_getuid16 CALL(sys_pause)
/* 25 */ .long OBSOLETE(sys_stime) /* 30 */ CALL(OBSOLETE(sys_utime)) /* used by libc4 */
.long sys_ptrace CALL(sys_ni_syscall) /* was sys_stty */
.long OBSOLETE(sys_alarm) /* used by libc4 */ CALL(sys_ni_syscall) /* was sys_getty */
.long sys_ni_syscall /* was sys_fstat */ CALL(sys_access)
.long sys_pause CALL(sys_nice)
/* 30 */ .long OBSOLETE(sys_utime) /* used by libc4 */ /* 35 */ CALL(sys_ni_syscall) /* was sys_ftime */
.long sys_ni_syscall /* was sys_stty */ CALL(sys_sync)
.long sys_ni_syscall /* was sys_getty */ CALL(sys_kill)
.long sys_access CALL(sys_rename)
.long sys_nice CALL(sys_mkdir)
/* 35 */ .long sys_ni_syscall /* was sys_ftime */ /* 40 */ CALL(sys_rmdir)
.long sys_sync CALL(sys_dup)
.long sys_kill CALL(sys_pipe)
.long sys_rename CALL(sys_times)
.long sys_mkdir CALL(sys_ni_syscall) /* was sys_prof */
/* 40 */ .long sys_rmdir /* 45 */ CALL(sys_brk)
.long sys_dup CALL(sys_setgid16)
.long sys_pipe CALL(sys_getgid16)
.long sys_times CALL(sys_ni_syscall) /* was sys_signal */
.long sys_ni_syscall /* was sys_prof */ CALL(sys_geteuid16)
/* 45 */ .long sys_brk /* 50 */ CALL(sys_getegid16)
.long sys_setgid16 CALL(sys_acct)
.long sys_getgid16 CALL(sys_umount)
.long sys_ni_syscall /* was sys_signal */ CALL(sys_ni_syscall) /* was sys_lock */
.long sys_geteuid16 CALL(sys_ioctl)
/* 50 */ .long sys_getegid16 /* 55 */ CALL(sys_fcntl)
.long sys_acct CALL(sys_ni_syscall) /* was sys_mpx */
.long sys_umount CALL(sys_setpgid)
.long sys_ni_syscall /* was sys_lock */ CALL(sys_ni_syscall) /* was sys_ulimit */
.long sys_ioctl CALL(sys_ni_syscall) /* was sys_olduname */
/* 55 */ .long sys_fcntl /* 60 */ CALL(sys_umask)
.long sys_ni_syscall /* was sys_mpx */ CALL(sys_chroot)
.long sys_setpgid CALL(sys_ustat)
.long sys_ni_syscall /* was sys_ulimit */ CALL(sys_dup2)
.long sys_ni_syscall /* was sys_olduname */ CALL(sys_getppid)
/* 60 */ .long sys_umask /* 65 */ CALL(sys_getpgrp)
.long sys_chroot CALL(sys_setsid)
.long sys_ustat CALL(sys_sigaction)
.long sys_dup2 CALL(sys_ni_syscall) /* was sys_sgetmask */
.long sys_getppid CALL(sys_ni_syscall) /* was sys_ssetmask */
/* 65 */ .long sys_getpgrp /* 70 */ CALL(sys_setreuid16)
.long sys_setsid CALL(sys_setregid16)
.long sys_sigaction CALL(sys_sigsuspend_wrapper)
.long sys_ni_syscall /* was sys_sgetmask */ CALL(sys_sigpending)
.long sys_ni_syscall /* was sys_ssetmask */ CALL(sys_sethostname)
/* 70 */ .long sys_setreuid16 /* 75 */ CALL(sys_setrlimit)
.long sys_setregid16 CALL(OBSOLETE(sys_old_getrlimit)) /* used by libc4 */
.long sys_sigsuspend_wrapper CALL(sys_getrusage)
.long sys_sigpending CALL(sys_gettimeofday)
.long sys_sethostname CALL(sys_settimeofday)
/* 75 */ .long sys_setrlimit /* 80 */ CALL(sys_getgroups16)
.long OBSOLETE(sys_old_getrlimit) /* used by libc4 */ CALL(sys_setgroups16)
.long sys_getrusage CALL(OBSOLETE(old_select)) /* used by libc4 */
.long sys_gettimeofday CALL(sys_symlink)
.long sys_settimeofday CALL(sys_ni_syscall) /* was sys_lstat */
/* 80 */ .long sys_getgroups16 /* 85 */ CALL(sys_readlink)
.long sys_setgroups16 CALL(sys_uselib)
.long OBSOLETE(old_select) /* used by libc4 */ CALL(sys_swapon)
.long sys_symlink CALL(sys_reboot)
.long sys_ni_syscall /* was sys_lstat */ CALL(OBSOLETE(old_readdir)) /* used by libc4 */
/* 85 */ .long sys_readlink /* 90 */ CALL(OBSOLETE(old_mmap)) /* used by libc4 */
.long sys_uselib CALL(sys_munmap)
.long sys_swapon CALL(sys_truncate)
.long sys_reboot CALL(sys_ftruncate)
.long OBSOLETE(old_readdir) /* used by libc4 */ CALL(sys_fchmod)
/* 90 */ .long OBSOLETE(old_mmap) /* used by libc4 */ /* 95 */ CALL(sys_fchown16)
.long sys_munmap CALL(sys_getpriority)
.long sys_truncate CALL(sys_setpriority)
.long sys_ftruncate CALL(sys_ni_syscall) /* was sys_profil */
.long sys_fchmod CALL(sys_statfs)
/* 95 */ .long sys_fchown16 /* 100 */ CALL(sys_fstatfs)
.long sys_getpriority CALL(sys_ni_syscall)
.long sys_setpriority CALL(OBSOLETE(sys_socketcall))
.long sys_ni_syscall /* was sys_profil */ CALL(sys_syslog)
.long sys_statfs CALL(sys_setitimer)
/* 100 */ .long sys_fstatfs /* 105 */ CALL(sys_getitimer)
.long sys_ni_syscall CALL(sys_newstat)
.long OBSOLETE(sys_socketcall) CALL(sys_newlstat)
.long sys_syslog CALL(sys_newfstat)
.long sys_setitimer CALL(sys_ni_syscall) /* was sys_uname */
/* 105 */ .long sys_getitimer /* 110 */ CALL(sys_ni_syscall) /* was sys_iopl */
.long sys_newstat CALL(sys_vhangup)
.long sys_newlstat CALL(sys_ni_syscall)
.long sys_newfstat CALL(OBSOLETE(sys_syscall)) /* call a syscall */
.long sys_ni_syscall /* was sys_uname */ CALL(sys_wait4)
/* 110 */ .long sys_ni_syscall /* was sys_iopl */ /* 115 */ CALL(sys_swapoff)
.long sys_vhangup CALL(sys_sysinfo)
.long sys_ni_syscall CALL(OBSOLETE(ABI(sys_ipc, sys_oabi_ipc)))
.long OBSOLETE(sys_syscall) /* call a syscall */ CALL(sys_fsync)
.long sys_wait4 CALL(sys_sigreturn_wrapper)
/* 115 */ .long sys_swapoff /* 120 */ CALL(sys_clone_wrapper)
.long sys_sysinfo CALL(sys_setdomainname)
.long OBSOLETE(ABI(sys_ipc, sys_oabi_ipc)) CALL(sys_newuname)
.long sys_fsync CALL(sys_ni_syscall)
.long sys_sigreturn_wrapper CALL(sys_adjtimex)
/* 120 */ .long sys_clone_wrapper /* 125 */ CALL(sys_mprotect)
.long sys_setdomainname CALL(sys_sigprocmask)
.long sys_newuname CALL(sys_ni_syscall) /* was sys_create_module */
.long sys_ni_syscall CALL(sys_init_module)
.long sys_adjtimex CALL(sys_delete_module)
/* 125 */ .long sys_mprotect /* 130 */ CALL(sys_ni_syscall) /* was sys_get_kernel_syms */
.long sys_sigprocmask CALL(sys_quotactl)
.long sys_ni_syscall /* was sys_create_module */ CALL(sys_getpgid)
.long sys_init_module CALL(sys_fchdir)
.long sys_delete_module CALL(sys_bdflush)
/* 130 */ .long sys_ni_syscall /* was sys_get_kernel_syms */ /* 135 */ CALL(sys_sysfs)
.long sys_quotactl CALL(sys_personality)
.long sys_getpgid CALL(sys_ni_syscall) /* CALL(_sys_afs_syscall) */
.long sys_fchdir CALL(sys_setfsuid16)
.long sys_bdflush CALL(sys_setfsgid16)
/* 135 */ .long sys_sysfs /* 140 */ CALL(sys_llseek)
.long sys_personality CALL(sys_getdents)
.long sys_ni_syscall /* .long _sys_afs_syscall */ CALL(sys_select)
.long sys_setfsuid16 CALL(sys_flock)
.long sys_setfsgid16 CALL(sys_msync)
/* 140 */ .long sys_llseek /* 145 */ CALL(sys_readv)
.long sys_getdents CALL(sys_writev)
.long sys_select CALL(sys_getsid)
.long sys_flock CALL(sys_fdatasync)
.long sys_msync CALL(sys_sysctl)
/* 145 */ .long sys_readv /* 150 */ CALL(sys_mlock)
.long sys_writev CALL(sys_munlock)
.long sys_getsid CALL(sys_mlockall)
.long sys_fdatasync CALL(sys_munlockall)
.long sys_sysctl CALL(sys_sched_setparam)
/* 150 */ .long sys_mlock /* 155 */ CALL(sys_sched_getparam)
.long sys_munlock CALL(sys_sched_setscheduler)
.long sys_mlockall CALL(sys_sched_getscheduler)
.long sys_munlockall CALL(sys_sched_yield)
.long sys_sched_setparam CALL(sys_sched_get_priority_max)
/* 155 */ .long sys_sched_getparam /* 160 */ CALL(sys_sched_get_priority_min)
.long sys_sched_setscheduler CALL(sys_sched_rr_get_interval)
.long sys_sched_getscheduler CALL(sys_nanosleep)
.long sys_sched_yield CALL(sys_arm_mremap)
.long sys_sched_get_priority_max CALL(sys_setresuid16)
/* 160 */ .long sys_sched_get_priority_min /* 165 */ CALL(sys_getresuid16)
.long sys_sched_rr_get_interval CALL(sys_ni_syscall)
.long sys_nanosleep CALL(sys_ni_syscall) /* was sys_query_module */
.long sys_arm_mremap CALL(sys_poll)
.long sys_setresuid16 CALL(sys_nfsservctl)
/* 165 */ .long sys_getresuid16 /* 170 */ CALL(sys_setresgid16)
.long sys_ni_syscall CALL(sys_getresgid16)
.long sys_ni_syscall /* was sys_query_module */ CALL(sys_prctl)
.long sys_poll CALL(sys_rt_sigreturn_wrapper)
.long sys_nfsservctl CALL(sys_rt_sigaction)
/* 170 */ .long sys_setresgid16 /* 175 */ CALL(sys_rt_sigprocmask)
.long sys_getresgid16 CALL(sys_rt_sigpending)
.long sys_prctl CALL(sys_rt_sigtimedwait)
.long sys_rt_sigreturn_wrapper CALL(sys_rt_sigqueueinfo)
.long sys_rt_sigaction CALL(sys_rt_sigsuspend_wrapper)
/* 175 */ .long sys_rt_sigprocmask /* 180 */ CALL(ABI(sys_pread64, sys_oabi_pread64))
.long sys_rt_sigpending CALL(ABI(sys_pwrite64, sys_oabi_pwrite64))
.long sys_rt_sigtimedwait CALL(sys_chown16)
.long sys_rt_sigqueueinfo CALL(sys_getcwd)
.long sys_rt_sigsuspend_wrapper CALL(sys_capget)
/* 180 */ .long ABI(sys_pread64, sys_oabi_pread64) /* 185 */ CALL(sys_capset)
.long ABI(sys_pwrite64, sys_oabi_pwrite64) CALL(sys_sigaltstack_wrapper)
.long sys_chown16 CALL(sys_sendfile)
.long sys_getcwd CALL(sys_ni_syscall)
.long sys_capget CALL(sys_ni_syscall)
/* 185 */ .long sys_capset /* 190 */ CALL(sys_vfork_wrapper)
.long sys_sigaltstack_wrapper CALL(sys_getrlimit)
.long sys_sendfile CALL(sys_mmap2)
.long sys_ni_syscall CALL(ABI(sys_truncate64, sys_oabi_truncate64))
.long sys_ni_syscall CALL(ABI(sys_ftruncate64, sys_oabi_ftruncate64))
/* 190 */ .long sys_vfork_wrapper /* 195 */ CALL(ABI(sys_stat64, sys_oabi_stat64))
.long sys_getrlimit CALL(ABI(sys_lstat64, sys_oabi_lstat64))
.long sys_mmap2 CALL(ABI(sys_fstat64, sys_oabi_fstat64))
.long ABI(sys_truncate64, sys_oabi_truncate64) CALL(sys_lchown)
.long ABI(sys_ftruncate64, sys_oabi_ftruncate64) CALL(sys_getuid)
/* 195 */ .long ABI(sys_stat64, sys_oabi_stat64) /* 200 */ CALL(sys_getgid)
.long ABI(sys_lstat64, sys_oabi_lstat64) CALL(sys_geteuid)
.long ABI(sys_fstat64, sys_oabi_fstat64) CALL(sys_getegid)
.long sys_lchown CALL(sys_setreuid)
.long sys_getuid CALL(sys_setregid)
/* 200 */ .long sys_getgid /* 205 */ CALL(sys_getgroups)
.long sys_geteuid CALL(sys_setgroups)
.long sys_getegid CALL(sys_fchown)
.long sys_setreuid CALL(sys_setresuid)
.long sys_setregid CALL(sys_getresuid)
/* 205 */ .long sys_getgroups /* 210 */ CALL(sys_setresgid)
.long sys_setgroups CALL(sys_getresgid)
.long sys_fchown CALL(sys_chown)
.long sys_setresuid CALL(sys_setuid)
.long sys_getresuid CALL(sys_setgid)
/* 210 */ .long sys_setresgid /* 215 */ CALL(sys_setfsuid)
.long sys_getresgid CALL(sys_setfsgid)
.long sys_chown CALL(sys_getdents64)
.long sys_setuid CALL(sys_pivot_root)
.long sys_setgid CALL(sys_mincore)
/* 215 */ .long sys_setfsuid /* 220 */ CALL(sys_madvise)
.long sys_setfsgid CALL(ABI(sys_fcntl64, sys_oabi_fcntl64))
.long sys_getdents64 CALL(sys_ni_syscall) /* TUX */
.long sys_pivot_root CALL(sys_ni_syscall)
.long sys_mincore CALL(sys_gettid)
/* 220 */ .long sys_madvise /* 225 */ CALL(ABI(sys_readahead, sys_oabi_readahead))
.long ABI(sys_fcntl64, sys_oabi_fcntl64) CALL(sys_setxattr)
.long sys_ni_syscall /* TUX */ CALL(sys_lsetxattr)
.long sys_ni_syscall CALL(sys_fsetxattr)
.long sys_gettid CALL(sys_getxattr)
/* 225 */ .long ABI(sys_readahead, sys_oabi_readahead) /* 230 */ CALL(sys_lgetxattr)
.long sys_setxattr CALL(sys_fgetxattr)
.long sys_lsetxattr CALL(sys_listxattr)
.long sys_fsetxattr CALL(sys_llistxattr)
.long sys_getxattr CALL(sys_flistxattr)
/* 230 */ .long sys_lgetxattr /* 235 */ CALL(sys_removexattr)
.long sys_fgetxattr CALL(sys_lremovexattr)
.long sys_listxattr CALL(sys_fremovexattr)
.long sys_llistxattr CALL(sys_tkill)
.long sys_flistxattr CALL(sys_sendfile64)
/* 235 */ .long sys_removexattr /* 240 */ CALL(sys_futex)
.long sys_lremovexattr CALL(sys_sched_setaffinity)
.long sys_fremovexattr CALL(sys_sched_getaffinity)
.long sys_tkill CALL(sys_io_setup)
.long sys_sendfile64 CALL(sys_io_destroy)
/* 240 */ .long sys_futex /* 245 */ CALL(sys_io_getevents)
.long sys_sched_setaffinity CALL(sys_io_submit)
.long sys_sched_getaffinity CALL(sys_io_cancel)
.long sys_io_setup CALL(sys_exit_group)
.long sys_io_destroy CALL(sys_lookup_dcookie)
/* 245 */ .long sys_io_getevents /* 250 */ CALL(sys_epoll_create)
.long sys_io_submit CALL(ABI(sys_epoll_ctl, sys_oabi_epoll_ctl))
.long sys_io_cancel CALL(ABI(sys_epoll_wait, sys_oabi_epoll_wait))
.long sys_exit_group CALL(sys_remap_file_pages)
.long sys_lookup_dcookie CALL(sys_ni_syscall) /* sys_set_thread_area */
/* 250 */ .long sys_epoll_create /* 255 */ CALL(sys_ni_syscall) /* sys_get_thread_area */
.long ABI(sys_epoll_ctl, sys_oabi_epoll_ctl) CALL(sys_set_tid_address)
.long ABI(sys_epoll_wait, sys_oabi_epoll_wait) CALL(sys_timer_create)
.long sys_remap_file_pages CALL(sys_timer_settime)
.long sys_ni_syscall /* sys_set_thread_area */ CALL(sys_timer_gettime)
/* 255 */ .long sys_ni_syscall /* sys_get_thread_area */ /* 260 */ CALL(sys_timer_getoverrun)
.long sys_set_tid_address CALL(sys_timer_delete)
.long sys_timer_create CALL(sys_clock_settime)
.long sys_timer_settime CALL(sys_clock_gettime)
.long sys_timer_gettime CALL(sys_clock_getres)
/* 260 */ .long sys_timer_getoverrun /* 265 */ CALL(sys_clock_nanosleep)
.long sys_timer_delete CALL(sys_statfs64_wrapper)
.long sys_clock_settime CALL(sys_fstatfs64_wrapper)
.long sys_clock_gettime CALL(sys_tgkill)
.long sys_clock_getres CALL(sys_utimes)
/* 265 */ .long sys_clock_nanosleep /* 270 */ CALL(sys_arm_fadvise64_64)
.long sys_statfs64_wrapper CALL(sys_pciconfig_iobase)
.long sys_fstatfs64_wrapper CALL(sys_pciconfig_read)
.long sys_tgkill CALL(sys_pciconfig_write)
.long sys_utimes CALL(sys_mq_open)
/* 270 */ .long sys_arm_fadvise64_64 /* 275 */ CALL(sys_mq_unlink)
.long sys_pciconfig_iobase CALL(sys_mq_timedsend)
.long sys_pciconfig_read CALL(sys_mq_timedreceive)
.long sys_pciconfig_write CALL(sys_mq_notify)
.long sys_mq_open CALL(sys_mq_getsetattr)
/* 275 */ .long sys_mq_unlink /* 280 */ CALL(sys_waitid)
.long sys_mq_timedsend CALL(sys_socket)
.long sys_mq_timedreceive CALL(sys_bind)
.long sys_mq_notify CALL(sys_connect)
.long sys_mq_getsetattr CALL(sys_listen)
/* 280 */ .long sys_waitid /* 285 */ CALL(sys_accept)
.long sys_socket CALL(sys_getsockname)
.long sys_bind CALL(sys_getpeername)
.long sys_connect CALL(sys_socketpair)
.long sys_listen CALL(sys_send)
/* 285 */ .long sys_accept /* 290 */ CALL(sys_sendto)
.long sys_getsockname CALL(sys_recv)
.long sys_getpeername CALL(sys_recvfrom)
.long sys_socketpair CALL(sys_shutdown)
.long sys_send CALL(sys_setsockopt)
/* 290 */ .long sys_sendto /* 295 */ CALL(sys_getsockopt)
.long sys_recv CALL(sys_sendmsg)
.long sys_recvfrom CALL(sys_recvmsg)
.long sys_shutdown CALL(ABI(sys_semop, sys_oabi_semop))
.long sys_setsockopt CALL(sys_semget)
/* 295 */ .long sys_getsockopt /* 300 */ CALL(sys_semctl)
.long sys_sendmsg CALL(sys_msgsnd)
.long sys_recvmsg CALL(sys_msgrcv)
.long ABI(sys_semop, sys_oabi_semop) CALL(sys_msgget)
.long sys_semget CALL(sys_msgctl)
/* 300 */ .long sys_semctl /* 305 */ CALL(sys_shmat)
.long sys_msgsnd CALL(sys_shmdt)
.long sys_msgrcv CALL(sys_shmget)
.long sys_msgget CALL(sys_shmctl)
.long sys_msgctl CALL(sys_add_key)
/* 305 */ .long sys_shmat /* 310 */ CALL(sys_request_key)
.long sys_shmdt CALL(sys_keyctl)
.long sys_shmget CALL(ABI(sys_semtimedop, sys_oabi_semtimedop))
.long sys_shmctl /* vserver */ CALL(sys_ni_syscall)
.long sys_add_key CALL(sys_ioprio_set)
/* 310 */ .long sys_request_key /* 315 */ CALL(sys_ioprio_get)
.long sys_keyctl CALL(sys_inotify_init)
.long ABI(sys_semtimedop, sys_oabi_semtimedop) CALL(sys_inotify_add_watch)
/* vserver */ .long sys_ni_syscall CALL(sys_inotify_rm_watch)
.long sys_ioprio_set CALL(sys_mbind)
/* 315 */ .long sys_ioprio_get /* 320 */ CALL(sys_get_mempolicy)
.long sys_inotify_init CALL(sys_set_mempolicy)
.long sys_inotify_add_watch #ifndef syscalls_counted
.long sys_inotify_rm_watch .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
.long sys_mbind #define syscalls_counted
/* 320 */ .long sys_get_mempolicy
.long sys_set_mempolicy
.rept NR_syscalls - (. - 100b) / 4
.long sys_ni_syscall
.endr
#endif #endif
.rept syscalls_padding
CALL(sys_ni_syscall)
.endr
...@@ -87,7 +87,11 @@ ENTRY(ret_from_fork) ...@@ -87,7 +87,11 @@ ENTRY(ret_from_fork)
b ret_slow_syscall b ret_slow_syscall
.equ NR_syscalls,0
#define CALL(x) .equ NR_syscalls,NR_syscalls+1
#include "calls.S" #include "calls.S"
#undef CALL
#define CALL(x) .long x
/*============================================================================= /*=============================================================================
* SWI handler * SWI handler
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册