Commit 681569ac authored by Hirokazu Takata's avatar Hirokazu Takata Committed by Linus Torvalds

[PATCH] m32r: employ new kernel API/ABI

We, Linux/M32R project members, decided to change the kernel API/ABI.  This
modification is not small, but if we don't change it now, perhaps we have
no chance to change them hereafter.

* Why change the m32r kernel API/ABI?
- The m32r port has many old-style syscall interfaces,
  because we made m32r port refering to the other traditional archs.
  Some old syscalls are no longer used or can be safely removed
  by upgrading the GNU C library.
- To make the m32r kernel more secure, it is preferable to prevent
  stack region from being executed. (e.g. stack overflow)

* API/ABI changes
- include/asm-m32r/unistd.h: Upgrade to the new kernel API.
- arch/m32r/entry.S: Minimum update to the new ABI.
- Don't use UID16 syscalls.
- To make stack noexecutable:
  1) Don't use trampoline for signal handlers for kernel space (cf. sparc64):
    sys_signal: remove.
    sys_sigaction, sys_rt_sigaction: use glibc's restorer.
  2) Don't generate trampoline code by GCC in userspace:
    Support non-executable stack by the m32r gcc.
    --> done (for gcc-3.4.3/gcc-4.0)

* New userland
- This modification does *not* keep backward compatibility.
  So we have been prepared new userland, based on the new API/ABI.
  Already, more than 200 new Debian deb binary packages are available
  on the Linux/M32R site:
  http://debian.linux-m32r.org/dists/04_ordovician/ (for this new ABI)
Signed-off-by: default avatarNIIBE Yutaka <gniibe@fsij.org>
Signed-off-by: default avatarHirokazu Takata <takata@linux-m32r.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 67166365
...@@ -14,7 +14,7 @@ config SBUS ...@@ -14,7 +14,7 @@ config SBUS
config UID16 config UID16
bool bool
default y default n
config GENERIC_ISA_DMA config GENERIC_ISA_DMA
bool bool
......
...@@ -725,25 +725,25 @@ ENTRY(sys_call_table) ...@@ -725,25 +725,25 @@ ENTRY(sys_call_table)
.long sys_time .long sys_time
.long sys_mknod .long sys_mknod
.long sys_chmod /* 15 */ .long sys_chmod /* 15 */
.long sys_lchown .long sys_ni_syscall /* lchown16 syscall holder */
.long sys_ni_syscall /* old break syscall holder */ .long sys_ni_syscall /* old break syscall holder */
.long sys_stat .long sys_ni_syscall /* old stat syscall holder */
.long sys_lseek .long sys_lseek
.long sys_getpid /* 20 */ .long sys_getpid /* 20 */
.long sys_mount .long sys_mount
.long sys_oldumount .long sys_oldumount
.long sys_setuid .long sys_ni_syscall /* setuid16 syscall holder */
.long sys_getuid .long sys_ni_syscall /* getuid16 syscall holder */
.long sys_stime /* 25 */ .long sys_stime /* 25 */
.long sys_ptrace .long sys_ptrace
.long sys_alarm .long sys_alarm
.long sys_fstat .long sys_ni_syscall /* old fstat syscall holder */
.long sys_pause .long sys_pause
.long sys_utime /* 30 */ .long sys_utime /* 30 */
.long sys_cacheflush /* for M32R */ /* old stty syscall holder */ .long sys_ni_syscall /* old stty syscall holder */
.long sys_cachectl /* for M32R */ /* old gtty syscall holder */ .long sys_cachectl /* for M32R */ /* old gtty syscall holder */
.long sys_access .long sys_access
.long sys_nice .long sys_ni_syscall /* nice syscall holder */
.long sys_ni_syscall /* 35 - old ftime syscall holder */ .long sys_ni_syscall /* 35 - old ftime syscall holder */
.long sys_sync .long sys_sync
.long sys_kill .long sys_kill
...@@ -755,17 +755,17 @@ ENTRY(sys_call_table) ...@@ -755,17 +755,17 @@ ENTRY(sys_call_table)
.long sys_times .long sys_times
.long sys_ni_syscall /* old prof syscall holder */ .long sys_ni_syscall /* old prof syscall holder */
.long sys_brk /* 45 */ .long sys_brk /* 45 */
.long sys_setgid .long sys_ni_syscall /* setgid16 syscall holder */
.long sys_getgid .long sys_getgid /* will be unused */
.long sys_signal .long sys_ni_syscall /* signal syscall holder */
.long sys_geteuid .long sys_ni_syscall /* geteuid16 syscall holder */
.long sys_getegid /* 50 */ .long sys_ni_syscall /* 50 - getegid16 syscall holder */
.long sys_acct .long sys_acct
.long sys_umount /* recycled never used phys() */ .long sys_umount /* recycled never used phys() */
.long sys_ni_syscall /* old lock syscall holder */ .long sys_ni_syscall /* old lock syscall holder */
.long sys_ioctl .long sys_ioctl
.long sys_fcntl /* 55 */ .long sys_fcntl /* 55 - will be unused */
.long sys_ni_syscall /* old mpx syscall holder */ .long sys_ni_syscall /* mpx syscall holder */
.long sys_setpgid .long sys_setpgid
.long sys_ni_syscall /* old ulimit syscall holder */ .long sys_ni_syscall /* old ulimit syscall holder */
.long sys_ni_syscall /* sys_olduname */ .long sys_ni_syscall /* sys_olduname */
...@@ -776,41 +776,41 @@ ENTRY(sys_call_table) ...@@ -776,41 +776,41 @@ ENTRY(sys_call_table)
.long sys_getppid .long sys_getppid
.long sys_getpgrp /* 65 */ .long sys_getpgrp /* 65 */
.long sys_setsid .long sys_setsid
.long sys_sigaction .long sys_ni_syscall /* sigaction syscall holder */
.long sys_sgetmask .long sys_ni_syscall /* sgetmask syscall holder */
.long sys_ssetmask .long sys_ni_syscall /* ssetmask syscall holder */
.long sys_setreuid /* 70 */ .long sys_ni_syscall /* 70 - setreuid16 syscall holder */
.long sys_setregid .long sys_ni_syscall /* setregid16 syscall holder */
.long sys_sigsuspend .long sys_ni_syscall /* sigsuspend syscall holder */
.long sys_sigpending .long sys_ni_syscall /* sigpending syscall holder */
.long sys_sethostname .long sys_sethostname
.long sys_setrlimit /* 75 */ .long sys_setrlimit /* 75 */
.long sys_getrlimit .long sys_getrlimit/*will be unused*/
.long sys_getrusage .long sys_getrusage
.long sys_gettimeofday .long sys_gettimeofday
.long sys_settimeofday .long sys_settimeofday
.long sys_getgroups /* 80 */ .long sys_ni_syscall /* 80 - getgroups16 syscall holder */
.long sys_setgroups .long sys_ni_syscall /* setgroups16 syscall holder */
.long sys_ni_syscall /* sys_oldselect */ .long sys_ni_syscall /* sys_oldselect */
.long sys_symlink .long sys_symlink
.long sys_lstat .long sys_ni_syscall /* old lstat syscall holder */
.long sys_readlink /* 85 */ .long sys_readlink /* 85 */
.long sys_uselib .long sys_uselib
.long sys_swapon .long sys_swapon
.long sys_reboot .long sys_reboot
.long old_readdir .long sys_ni_syscall /* readdir syscall holder */
.long sys_ni_syscall /* 90 - old_mmap syscall holder */ .long sys_ni_syscall /* 90 - old_mmap syscall holder */
.long sys_munmap .long sys_munmap
.long sys_truncate .long sys_truncate
.long sys_ftruncate .long sys_ftruncate
.long sys_fchmod .long sys_fchmod
.long sys_fchown /* 95 */ .long sys_ni_syscall /* 95 - fchwon16 syscall holder */
.long sys_getpriority .long sys_getpriority
.long sys_setpriority .long sys_setpriority
.long sys_ni_syscall /* old profil syscall holder */ .long sys_ni_syscall /* old profil syscall holder */
.long sys_statfs .long sys_statfs
.long sys_fstatfs /* 100 */ .long sys_fstatfs /* 100 */
.long sys_ni_syscall /* ioperm */ .long sys_ni_syscall /* ioperm syscall holder */
.long sys_socketcall .long sys_socketcall
.long sys_syslog .long sys_syslog
.long sys_setitimer .long sys_setitimer
...@@ -818,37 +818,37 @@ ENTRY(sys_call_table) ...@@ -818,37 +818,37 @@ ENTRY(sys_call_table)
.long sys_newstat .long sys_newstat
.long sys_newlstat .long sys_newlstat
.long sys_newfstat .long sys_newfstat
.long sys_uname .long sys_ni_syscall /* old uname syscall holder */
.long sys_ni_syscall /* 110 - iopl */ .long sys_ni_syscall /* 110 - iopl syscall holder */
.long sys_vhangup .long sys_vhangup
.long sys_ni_syscall /* for idle */ .long sys_ni_syscall /* idle syscall holder */
.long sys_ni_syscall /* for vm86old */ .long sys_ni_syscall /* vm86old syscall holder */
.long sys_wait4 .long sys_wait4
.long sys_swapoff /* 115 */ .long sys_swapoff /* 115 */
.long sys_sysinfo .long sys_sysinfo
.long sys_ipc .long sys_ipc
.long sys_fsync .long sys_fsync
.long sys_sigreturn .long sys_ni_syscall /* sigreturn syscall holder */
.long sys_clone /* 120 */ .long sys_clone /* 120 */
.long sys_setdomainname .long sys_setdomainname
.long sys_newuname .long sys_newuname
.long sys_ni_syscall /* sys_modify_ldt */ .long sys_ni_syscall /* modify_ldt syscall holder */
.long sys_adjtimex .long sys_adjtimex
.long sys_mprotect /* 125 */ .long sys_mprotect /* 125 */
.long sys_sigprocmask .long sys_ni_syscall /* sigprocmask syscall holder */
.long sys_ni_syscall /* sys_create_module */ .long sys_ni_syscall /* create_module syscall holder */
.long sys_init_module .long sys_init_module
.long sys_delete_module .long sys_delete_module
.long sys_ni_syscall /* 130 sys_get_kernel_syms */ .long sys_ni_syscall /* 130 - get_kernel_syms */
.long sys_quotactl .long sys_quotactl
.long sys_getpgid .long sys_getpgid
.long sys_fchdir .long sys_fchdir
.long sys_bdflush .long sys_bdflush
.long sys_sysfs /* 135 */ .long sys_sysfs /* 135 */
.long sys_personality .long sys_personality
.long sys_ni_syscall /* for afs_syscall */ .long sys_ni_syscall /* afs_syscall syscall holder */
.long sys_setfsuid .long sys_ni_syscall /* setfsuid16 syscall holder */
.long sys_setfsgid .long sys_ni_syscall /* setfsgid16 syscall holder */
.long sys_llseek /* 140 */ .long sys_llseek /* 140 */
.long sys_getdents .long sys_getdents
.long sys_select .long sys_select
...@@ -873,10 +873,10 @@ ENTRY(sys_call_table) ...@@ -873,10 +873,10 @@ ENTRY(sys_call_table)
.long sys_sched_rr_get_interval .long sys_sched_rr_get_interval
.long sys_nanosleep .long sys_nanosleep
.long sys_mremap .long sys_mremap
.long sys_setresuid .long sys_ni_syscall /* setresuid16 syscall holder */
.long sys_getresuid /* 165 */ .long sys_ni_syscall /* 165 - getresuid16 syscall holder */
.long sys_tas /* vm86 */ .long sys_tas /* vm86 syscall holder */
.long sys_ni_syscall /* sys_query_module */ .long sys_ni_syscall /* query_module syscall holder */
.long sys_poll .long sys_poll
.long sys_nfsservctl .long sys_nfsservctl
.long sys_setresgid /* 170 */ .long sys_setresgid /* 170 */
...@@ -891,7 +891,7 @@ ENTRY(sys_call_table) ...@@ -891,7 +891,7 @@ ENTRY(sys_call_table)
.long sys_rt_sigsuspend .long sys_rt_sigsuspend
.long sys_pread64 /* 180 */ .long sys_pread64 /* 180 */
.long sys_pwrite64 .long sys_pwrite64
.long sys_chown .long sys_ni_syscall /* chown16 syscall holder */
.long sys_getcwd .long sys_getcwd
.long sys_capget .long sys_capget
.long sys_capset /* 185 */ .long sys_capset /* 185 */
......
...@@ -33,32 +33,6 @@ ...@@ -33,32 +33,6 @@
int do_signal(struct pt_regs *, sigset_t *); int do_signal(struct pt_regs *, sigset_t *);
/*
* Atomically swap in the new signal mask, and wait for a signal.
*/
asmlinkage int
sys_sigsuspend(old_sigset_t mask, unsigned long r1,
unsigned long r2, unsigned long r3, unsigned long r4,
unsigned long r5, unsigned long r6, struct pt_regs regs)
{
sigset_t saveset;
mask &= _BLOCKABLE;
spin_lock_irq(&current->sighand->siglock);
saveset = current->blocked;
siginitset(&current->blocked, mask);
recalc_sigpending();
spin_unlock_irq(&current->sighand->siglock);
regs.r0 = -EINTR;
while (1) {
current->state = TASK_INTERRUPTIBLE;
schedule();
if (do_signal(&regs, &saveset))
return regs.r0;
}
}
asmlinkage int asmlinkage int
sys_rt_sigsuspend(sigset_t *unewset, size_t sigsetsize, sys_rt_sigsuspend(sigset_t *unewset, size_t sigsetsize,
unsigned long r2, unsigned long r3, unsigned long r4, unsigned long r2, unsigned long r3, unsigned long r4,
...@@ -89,38 +63,6 @@ sys_rt_sigsuspend(sigset_t *unewset, size_t sigsetsize, ...@@ -89,38 +63,6 @@ sys_rt_sigsuspend(sigset_t *unewset, size_t sigsetsize,
} }
} }
asmlinkage int
sys_sigaction(int sig, const struct old_sigaction __user *act,
struct old_sigaction __user *oact)
{
struct k_sigaction new_ka, old_ka;
int ret;
if (act) {
old_sigset_t mask;
if (verify_area(VERIFY_READ, act, sizeof(*act)) ||
__get_user(new_ka.sa.sa_handler, &act->sa_handler) ||
__get_user(new_ka.sa.sa_restorer, &act->sa_restorer))
return -EFAULT;
__get_user(new_ka.sa.sa_flags, &act->sa_flags);
__get_user(mask, &act->sa_mask);
siginitset(&new_ka.sa.sa_mask, mask);
}
ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
if (!ret && oact) {
if (verify_area(VERIFY_WRITE, oact, sizeof(*oact)) ||
__put_user(old_ka.sa.sa_handler, &oact->sa_handler) ||
__put_user(old_ka.sa.sa_restorer, &oact->sa_restorer))
return -EFAULT;
__put_user(old_ka.sa.sa_flags, &oact->sa_flags);
__put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask);
}
return ret;
}
asmlinkage int asmlinkage int
sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss, sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss,
unsigned long r2, unsigned long r3, unsigned long r4, unsigned long r2, unsigned long r3, unsigned long r4,
...@@ -134,26 +76,14 @@ sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss, ...@@ -134,26 +76,14 @@ sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss,
* Do a signal return; undo the signal stack. * Do a signal return; undo the signal stack.
*/ */
struct sigframe
{
// char *pretcode;
int sig;
struct sigcontext sc;
// struct _fpstate fpstate;
unsigned long extramask[_NSIG_WORDS-1];
char retcode[4];
};
struct rt_sigframe struct rt_sigframe
{ {
// char *pretcode;
int sig; int sig;
struct siginfo *pinfo; struct siginfo *pinfo;
void *puc; void *puc;
struct siginfo info; struct siginfo info;
struct ucontext uc; struct ucontext uc;
// struct _fpstate fpstate; // struct _fpstate fpstate;
char retcode[8];
}; };
static int static int
...@@ -207,38 +137,6 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, ...@@ -207,38 +137,6 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc,
return err; return err;
} }
asmlinkage int
sys_sigreturn(unsigned long r0, unsigned long r1,
unsigned long r2, unsigned long r3, unsigned long r4,
unsigned long r5, unsigned long r6, struct pt_regs regs)
{
struct sigframe __user *frame = (struct sigframe __user *)regs.spu;
sigset_t set;
int result;
if (verify_area(VERIFY_READ, frame, sizeof(*frame)))
goto badframe;
if (__get_user(set.sig[0], &frame->sc.oldmask)
|| (_NSIG_WORDS > 1
&& __copy_from_user(&set.sig[1], &frame->extramask,
sizeof(frame->extramask))))
goto badframe;
sigdelsetmask(&set, ~_BLOCKABLE);
spin_lock_irq(&current->sighand->siglock);
current->blocked = set;
recalc_sigpending();
spin_unlock_irq(&current->sighand->siglock);
if (restore_sigcontext(&regs, &frame->sc, &result))
goto badframe;
return result;
badframe:
force_sig(SIGSEGV, current);
return 0;
}
asmlinkage int asmlinkage int
sys_rt_sigreturn(unsigned long r0, unsigned long r1, sys_rt_sigreturn(unsigned long r0, unsigned long r1,
unsigned long r2, unsigned long r3, unsigned long r4, unsigned long r2, unsigned long r3, unsigned long r4,
...@@ -342,71 +240,6 @@ get_sigframe(struct k_sigaction *ka, unsigned long sp, size_t frame_size) ...@@ -342,71 +240,6 @@ get_sigframe(struct k_sigaction *ka, unsigned long sp, size_t frame_size)
return (void __user *)((sp - frame_size) & -8ul); return (void __user *)((sp - frame_size) & -8ul);
} }
static void setup_frame(int sig, struct k_sigaction *ka,
sigset_t *set, struct pt_regs *regs)
{
struct sigframe __user *frame;
int err = 0;
int signal;
frame = get_sigframe(ka, regs->spu, sizeof(*frame));
if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
goto give_sigsegv;
signal = current_thread_info()->exec_domain
&& current_thread_info()->exec_domain->signal_invmap
&& sig < 32
? current_thread_info()->exec_domain->signal_invmap[sig]
: sig;
err |= __put_user(signal, &frame->sig);
if (err)
goto give_sigsegv;
err |= setup_sigcontext(&frame->sc, regs, set->sig[0]);
if (err)
goto give_sigsegv;
if (_NSIG_WORDS > 1) {
err |= __copy_to_user(frame->extramask, &set->sig[1],
sizeof(frame->extramask));
if (err)
goto give_sigsegv;
}
if (ka->sa.sa_flags & SA_RESTORER)
regs->lr = (unsigned long)ka->sa.sa_restorer;
else {
/* This is : ldi r7, #__NR_sigreturn ; trap #2 */
unsigned long code = 0x670010f2 | (__NR_sigreturn << 16);
regs->lr = (unsigned long)frame->retcode;
err |= __put_user(code, (long __user *)(frame->retcode+0));
if (err)
goto give_sigsegv;
flush_cache_sigtramp((unsigned long)frame->retcode);
}
/* Set up registers for signal handler */
regs->spu = (unsigned long)frame;
regs->r0 = signal; /* Arg for signal handler */
regs->r1 = (unsigned long)&frame->sc;
regs->bpc = (unsigned long)ka->sa.sa_handler;
set_fs(USER_DS);
#if DEBUG_SIG
printk("SIG deliver (%s:%d): sp=%p pc=%p\n",
current->comm, current->pid, frame, regs->pc);
#endif
return;
give_sigsegv:
force_sigsegv(sig, current);
}
static void setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, static void setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
sigset_t *set, struct pt_regs *regs) sigset_t *set, struct pt_regs *regs)
{ {
...@@ -448,20 +281,7 @@ static void setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, ...@@ -448,20 +281,7 @@ static void setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
goto give_sigsegv; goto give_sigsegv;
/* Set up to return from userspace. */ /* Set up to return from userspace. */
if (ka->sa.sa_flags & SA_RESTORER) regs->lr = (unsigned long)ka->sa.sa_restorer;
regs->lr = (unsigned long)ka->sa.sa_restorer;
else {
/* This is : ldi r7, #__NR_rt_sigreturn ; trap #2 */
unsigned long code1 = 0x97f00000 | (__NR_rt_sigreturn);
unsigned long code2 = 0x10f2f000;
regs->lr = (unsigned long)frame->retcode;
err |= __put_user(code1, (long __user *)(frame->retcode+0));
err |= __put_user(code2, (long __user *)(frame->retcode+4));
if (err)
goto give_sigsegv;
flush_cache_sigtramp((unsigned long)frame->retcode);
}
/* Set up registers for signal handler */ /* Set up registers for signal handler */
regs->spu = (unsigned long)frame; regs->spu = (unsigned long)frame;
...@@ -519,10 +339,7 @@ handle_signal(unsigned long sig, struct k_sigaction *ka, siginfo_t *info, ...@@ -519,10 +339,7 @@ handle_signal(unsigned long sig, struct k_sigaction *ka, siginfo_t *info,
} }
/* Set up the stack frame */ /* Set up the stack frame */
if (ka->sa.sa_flags & SA_SIGINFO) setup_rt_frame(sig, ka, info, oldset, regs);
setup_rt_frame(sig, ka, info, oldset, regs);
else
setup_frame(sig, ka, oldset, regs);
if (!(ka->sa.sa_flags & SA_NODEFER)) { if (!(ka->sa.sa_flags & SA_NODEFER)) {
spin_lock_irq(&current->sighand->siglock); spin_lock_irq(&current->sighand->siglock);
......
...@@ -25,26 +25,26 @@ ...@@ -25,26 +25,26 @@
#define __NR_time 13 #define __NR_time 13
#define __NR_mknod 14 #define __NR_mknod 14
#define __NR_chmod 15 #define __NR_chmod 15
#define __NR_lchown 16 /* 16 is unused */
#define __NR_break 17 /* 17 is unused */
#define __NR_oldstat 18 /* 18 is unused */
#define __NR_lseek 19 #define __NR_lseek 19
#define __NR_getpid 20 #define __NR_getpid 20
#define __NR_mount 21 #define __NR_mount 21
#define __NR_umount 22 #define __NR_umount 22
#define __NR_setuid 23 /* 23 is unused */
#define __NR_getuid 24 /* 24 is unused */
#define __NR_stime 25 #define __NR_stime 25
#define __NR_ptrace 26 #define __NR_ptrace 26
#define __NR_alarm 27 #define __NR_alarm 27
#define __NR_oldfstat 28 /* 28 is unused */
#define __NR_pause 29 #define __NR_pause 29
#define __NR_utime 30 #define __NR_utime 30
#define __NR_cacheflush 31 /* old #define __NR_stty 31*/ /* 31 is unused */
#define __NR_cachectl 32 /* old #define __NR_gtty 32*/ #define __NR_cachectl 32 /* old #define __NR_gtty 32*/
#define __NR_access 33 #define __NR_access 33
#define __NR_nice 34 /* 34 is unused */
#define __NR_ftime 35 /* 35 is unused */
#define __NR_sync 36 #define __NR_sync 36
#define __NR_kill 37 #define __NR_kill 37
#define __NR_rename 38 #define __NR_rename 38
...@@ -53,22 +53,22 @@ ...@@ -53,22 +53,22 @@
#define __NR_dup 41 #define __NR_dup 41
#define __NR_pipe 42 #define __NR_pipe 42
#define __NR_times 43 #define __NR_times 43
#define __NR_prof 44 /* 44 is unused */
#define __NR_brk 45 #define __NR_brk 45
#define __NR_setgid 46 /* 46 is unused */
#define __NR_getgid 47 /* 47 is unused (getgid16) */
#define __NR_signal 48 /* 48 is unused */
#define __NR_geteuid 49 /* 49 is unused */
#define __NR_getegid 50 /* 50 is unused */
#define __NR_acct 51 #define __NR_acct 51
#define __NR_umount2 52 #define __NR_umount2 52
#define __NR_lock 53 /* 53 is unused */
#define __NR_ioctl 54 #define __NR_ioctl 54
#define __NR_fcntl 55 /* 55 is unused (fcntl) */
#define __NR_mpx 56 /* 56 is unused */
#define __NR_setpgid 57 #define __NR_setpgid 57
#define __NR_ulimit 58 /* 58 is unused */
#define __NR_oldolduname 59 /* 59 is unused */
#define __NR_umask 60 #define __NR_umask 60
#define __NR_chroot 61 #define __NR_chroot 61
#define __NR_ustat 62 #define __NR_ustat 62
...@@ -76,41 +76,41 @@ ...@@ -76,41 +76,41 @@
#define __NR_getppid 64 #define __NR_getppid 64
#define __NR_getpgrp 65 #define __NR_getpgrp 65
#define __NR_setsid 66 #define __NR_setsid 66
#define __NR_sigaction 67 /* 67 is unused */
#define __NR_sgetmask 68 /* 68 is unused*/
#define __NR_ssetmask 69 /* 69 is unused*/
#define __NR_setreuid 70 /* 70 is unused */
#define __NR_setregid 71 /* 71 is unused */
#define __NR_sigsuspend 72 /* 72 is unused */
#define __NR_sigpending 73 /* 73 is unused */
#define __NR_sethostname 74 #define __NR_sethostname 74
#define __NR_setrlimit 75 #define __NR_setrlimit 75
#define __NR_getrlimit 76 /* Back compatible 2Gig limited rlimit */ /* 76 is unused (old getrlimit) */
#define __NR_getrusage 77 #define __NR_getrusage 77
#define __NR_gettimeofday 78 #define __NR_gettimeofday 78
#define __NR_settimeofday 79 #define __NR_settimeofday 79
#define __NR_getgroups 80 /* 80 is unused */
#define __NR_setgroups 81 /* 81 is unused */
#define __NR_select 82 /* 82 is unused */
#define __NR_symlink 83 #define __NR_symlink 83
#define __NR_oldlstat 84 /* 84 is unused */
#define __NR_readlink 85 #define __NR_readlink 85
#define __NR_uselib 86 #define __NR_uselib 86
#define __NR_swapon 87 #define __NR_swapon 87
#define __NR_reboot 88 #define __NR_reboot 88
#define __NR_readdir 89 /* 89 is unused */
#define __NR_mmap 90 /* 90 is unused */
#define __NR_munmap 91 #define __NR_munmap 91
#define __NR_truncate 92 #define __NR_truncate 92
#define __NR_ftruncate 93 #define __NR_ftruncate 93
#define __NR_fchmod 94 #define __NR_fchmod 94
#define __NR_fchown 95 /* 95 is unused */
#define __NR_getpriority 96 #define __NR_getpriority 96
#define __NR_setpriority 97 #define __NR_setpriority 97
#define __NR_profil 98 /* 98 is unused */
#define __NR_statfs 99 #define __NR_statfs 99
#define __NR_fstatfs 100 #define __NR_fstatfs 100
#define __NR_ioperm 101 /* 101 is unused */
#define __NR_socketcall 102 #define __NR_socketcall 102
#define __NR_syslog 103 #define __NR_syslog 103
#define __NR_setitimer 104 #define __NR_setitimer 104
...@@ -118,37 +118,37 @@ ...@@ -118,37 +118,37 @@
#define __NR_stat 106 #define __NR_stat 106
#define __NR_lstat 107 #define __NR_lstat 107
#define __NR_fstat 108 #define __NR_fstat 108
#define __NR_olduname 109 /* 109 is unused */
#define __NR_iopl 110 /* 110 is unused */
#define __NR_vhangup 111 #define __NR_vhangup 111
#define __NR_idle 112 /* 112 is unused */
#define __NR_vm86old 113 /* 113 is unused */
#define __NR_wait4 114 #define __NR_wait4 114
#define __NR_swapoff 115 #define __NR_swapoff 115
#define __NR_sysinfo 116 #define __NR_sysinfo 116
#define __NR_ipc 117 #define __NR_ipc 117
#define __NR_fsync 118 #define __NR_fsync 118
#define __NR_sigreturn 119 /* 119 is unused */
#define __NR_clone 120 #define __NR_clone 120
#define __NR_setdomainname 121 #define __NR_setdomainname 121
#define __NR_uname 122 #define __NR_uname 122
#define __NR_modify_ldt 123 /* 123 is unused */
#define __NR_adjtimex 124 #define __NR_adjtimex 124
#define __NR_mprotect 125 #define __NR_mprotect 125
#define __NR_sigprocmask 126 /* 126 is unused */
#define __NR_create_module 127 /* 127 is unused */
#define __NR_init_module 128 #define __NR_init_module 128
#define __NR_delete_module 129 #define __NR_delete_module 129
#define __NR_get_kernel_syms 130 /* 130 is unused */
#define __NR_quotactl 131 #define __NR_quotactl 131
#define __NR_getpgid 132 #define __NR_getpgid 132
#define __NR_fchdir 133 #define __NR_fchdir 133
#define __NR_bdflush 134 #define __NR_bdflush 134
#define __NR_sysfs 135 #define __NR_sysfs 135
#define __NR_personality 136 #define __NR_personality 136
#define __NR_afs_syscall 137 /* Syscall for Andrew File System */ /* 137 is unused */
#define __NR_setfsuid 138 /* 138 is unused */
#define __NR_setfsgid 139 /* 139 is unused */
#define __NR__llseek 140 #define __NR__llseek 140
#define __NR_getdents 141 #define __NR_getdents 141
#define __NR__newselect 142 #define __NR__newselect 142
...@@ -173,14 +173,14 @@ ...@@ -173,14 +173,14 @@
#define __NR_sched_rr_get_interval 161 #define __NR_sched_rr_get_interval 161
#define __NR_nanosleep 162 #define __NR_nanosleep 162
#define __NR_mremap 163 #define __NR_mremap 163
#define __NR_setresuid 164 /* 164 is unused */
#define __NR_getresuid 165 /* 165 is unused */
#define __NR_tas 166 #define __NR_tas 166
#define __NR_query_module 167 /* 167 is unused */
#define __NR_poll 168 #define __NR_poll 168
#define __NR_nfsservctl 169 #define __NR_nfsservctl 169
#define __NR_setresgid 170 /* 170 is unused */
#define __NR_getresgid 171 /* 171 is unused */
#define __NR_prctl 172 #define __NR_prctl 172
#define __NR_rt_sigreturn 173 #define __NR_rt_sigreturn 173
#define __NR_rt_sigaction 174 #define __NR_rt_sigaction 174
...@@ -191,14 +191,14 @@ ...@@ -191,14 +191,14 @@
#define __NR_rt_sigsuspend 179 #define __NR_rt_sigsuspend 179
#define __NR_pread64 180 #define __NR_pread64 180
#define __NR_pwrite64 181 #define __NR_pwrite64 181
#define __NR_chown 182 /* 182 is unused */
#define __NR_getcwd 183 #define __NR_getcwd 183
#define __NR_capget 184 #define __NR_capget 184
#define __NR_capset 185 #define __NR_capset 185
#define __NR_sigaltstack 186 #define __NR_sigaltstack 186
#define __NR_sendfile 187 #define __NR_sendfile 187
#define __NR_getpmsg 188 /* some people actually want streams */ /* 188 is unused */
#define __NR_putpmsg 189 /* some people actually want streams */ /* 189 is unused */
#define __NR_vfork 190 #define __NR_vfork 190
#define __NR_ugetrlimit 191 /* SuS compliant getrlimit */ #define __NR_ugetrlimit 191 /* SuS compliant getrlimit */
#define __NR_mmap2 192 #define __NR_mmap2 192
...@@ -229,71 +229,71 @@ ...@@ -229,71 +229,71 @@
#define __NR_pivot_root 217 #define __NR_pivot_root 217
#define __NR_mincore 218 #define __NR_mincore 218
#define __NR_madvise 219 #define __NR_madvise 219
#define __NR_madvise1 219 /* delete when C lib stub is removed */
#define __NR_getdents64 220 #define __NR_getdents64 220
#define __NR_fcntl64 221 #define __NR_fcntl64 221
#define __NR_security 223 /* syscall for security modules */ /* 222 is unused */
#define __NR_gettid 224 /* 223 is unused */
#define __NR_readahead 225 #define __NR_gettid 224
#define __NR_setxattr 226 #define __NR_readahead 225
#define __NR_lsetxattr 227 #define __NR_setxattr 226
#define __NR_fsetxattr 228 #define __NR_lsetxattr 227
#define __NR_getxattr 229 #define __NR_fsetxattr 228
#define __NR_lgetxattr 230 #define __NR_getxattr 229
#define __NR_fgetxattr 231 #define __NR_lgetxattr 230
#define __NR_listxattr 232 #define __NR_fgetxattr 231
#define __NR_llistxattr 233 #define __NR_listxattr 232
#define __NR_flistxattr 234 #define __NR_llistxattr 233
#define __NR_removexattr 235 #define __NR_flistxattr 234
#define __NR_lremovexattr 236 #define __NR_removexattr 235
#define __NR_fremovexattr 237 #define __NR_lremovexattr 236
#define __NR_fremovexattr 237
#define __NR_tkill 238 #define __NR_tkill 238
#define __NR_sendfile64 239 #define __NR_sendfile64 239
#define __NR_futex 240 #define __NR_futex 240
#define __NR_sched_setaffinity 241 #define __NR_sched_setaffinity 241
#define __NR_sched_getaffinity 242 #define __NR_sched_getaffinity 242
#define __NR_set_thread_area 243 #define __NR_set_thread_area 243
#define __NR_get_thread_area 244 #define __NR_get_thread_area 244
#define __NR_io_setup 245 #define __NR_io_setup 245
#define __NR_io_destroy 246 #define __NR_io_destroy 246
#define __NR_io_getevents 247 #define __NR_io_getevents 247
#define __NR_io_submit 248 #define __NR_io_submit 248
#define __NR_io_cancel 249 #define __NR_io_cancel 249
#define __NR_fadvise64 250 #define __NR_fadvise64 250
/* 251 is unused */
#define __NR_exit_group 252 #define __NR_exit_group 252
#define __NR_lookup_dcookie 253 #define __NR_lookup_dcookie 253
#define __NR_epoll_create 254 #define __NR_epoll_create 254
#define __NR_epoll_ctl 255 #define __NR_epoll_ctl 255
#define __NR_epoll_wait 256 #define __NR_epoll_wait 256
#define __NR_remap_file_pages 257 #define __NR_remap_file_pages 257
#define __NR_set_tid_address 258 #define __NR_set_tid_address 258
#define __NR_timer_create 259 #define __NR_timer_create 259
#define __NR_timer_settime (__NR_timer_create+1) #define __NR_timer_settime (__NR_timer_create+1)
#define __NR_timer_gettime (__NR_timer_create+2) #define __NR_timer_gettime (__NR_timer_create+2)
#define __NR_timer_getoverrun (__NR_timer_create+3) #define __NR_timer_getoverrun (__NR_timer_create+3)
#define __NR_timer_delete (__NR_timer_create+4) #define __NR_timer_delete (__NR_timer_create+4)
#define __NR_clock_settime (__NR_timer_create+5) #define __NR_clock_settime (__NR_timer_create+5)
#define __NR_clock_gettime (__NR_timer_create+6) #define __NR_clock_gettime (__NR_timer_create+6)
#define __NR_clock_getres (__NR_timer_create+7) #define __NR_clock_getres (__NR_timer_create+7)
#define __NR_clock_nanosleep (__NR_timer_create+8) #define __NR_clock_nanosleep (__NR_timer_create+8)
#define __NR_statfs64 268 #define __NR_statfs64 268
#define __NR_fstatfs64 269 #define __NR_fstatfs64 269
#define __NR_tgkill 270 #define __NR_tgkill 270
#define __NR_utimes 271 #define __NR_utimes 271
#define __NR_fadvise64_64 272 #define __NR_fadvise64_64 272
#define __NR_vserver 273 #define __NR_vserver 273
#define __NR_mbind 274 #define __NR_mbind 274
#define __NR_get_mempolicy 275 #define __NR_get_mempolicy 275
#define __NR_set_mempolicy 276 #define __NR_set_mempolicy 276
#define __NR_mq_open 277 #define __NR_mq_open 277
#define __NR_mq_unlink (__NR_mq_open+1) #define __NR_mq_unlink (__NR_mq_open+1)
#define __NR_mq_timedsend (__NR_mq_open+2) #define __NR_mq_timedsend (__NR_mq_open+2)
#define __NR_mq_timedreceive (__NR_mq_open+3) #define __NR_mq_timedreceive (__NR_mq_open+3)
#define __NR_mq_notify (__NR_mq_open+4) #define __NR_mq_notify (__NR_mq_open+4)
#define __NR_mq_getsetattr (__NR_mq_open+5) #define __NR_mq_getsetattr (__NR_mq_open+5)
#define __NR_sys_kexec_load 283 #define __NR_sys_kexec_load 283
#define __NR_waitid 284 #define __NR_waitid 284
#define NR_syscalls 285 #define NR_syscalls 285
...@@ -407,14 +407,10 @@ __syscall_return(type,__res); \ ...@@ -407,14 +407,10 @@ __syscall_return(type,__res); \
#ifdef __KERNEL__ #ifdef __KERNEL__
#define __ARCH_WANT_IPC_PARSE_VERSION #define __ARCH_WANT_IPC_PARSE_VERSION
#define __ARCH_WANT_OLD_READDIR
#define __ARCH_WANT_OLD_STAT
#define __ARCH_WANT_STAT64 #define __ARCH_WANT_STAT64
#define __ARCH_WANT_SYS_ALARM #define __ARCH_WANT_SYS_ALARM
#define __ARCH_WANT_SYS_GETHOSTNAME #define __ARCH_WANT_SYS_GETHOSTNAME
#define __ARCH_WANT_SYS_PAUSE #define __ARCH_WANT_SYS_PAUSE
#define __ARCH_WANT_SYS_SGETMASK
#define __ARCH_WANT_SYS_SIGNAL
#define __ARCH_WANT_SYS_TIME #define __ARCH_WANT_SYS_TIME
#define __ARCH_WANT_SYS_UTIME #define __ARCH_WANT_SYS_UTIME
#define __ARCH_WANT_SYS_WAITPID #define __ARCH_WANT_SYS_WAITPID
...@@ -422,11 +418,8 @@ __syscall_return(type,__res); \ ...@@ -422,11 +418,8 @@ __syscall_return(type,__res); \
#define __ARCH_WANT_SYS_FADVISE64 #define __ARCH_WANT_SYS_FADVISE64
#define __ARCH_WANT_SYS_GETPGRP #define __ARCH_WANT_SYS_GETPGRP
#define __ARCH_WANT_SYS_LLSEEK #define __ARCH_WANT_SYS_LLSEEK
#define __ARCH_WANT_SYS_NICE #define __ARCH_WANT_SYS_OLD_GETRLIMIT /*will be unused*/
#define __ARCH_WANT_SYS_OLD_GETRLIMIT
#define __ARCH_WANT_SYS_OLDUMOUNT #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_SIGACTION
#endif #endif
...@@ -451,7 +444,6 @@ __syscall_return(type,__res); \ ...@@ -451,7 +444,6 @@ __syscall_return(type,__res); \
*/ */
static __inline__ _syscall3(int,execve,const char *,file,char **,argv,char **,envp) static __inline__ _syscall3(int,execve,const char *,file,char **,argv,char **,envp)
asmlinkage int sys_modify_ldt(int func, void __user *ptr, unsigned long bytecount);
asmlinkage long sys_mmap2(unsigned long addr, unsigned long len, asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,
unsigned long prot, unsigned long flags, unsigned long prot, unsigned long flags,
unsigned long fd, unsigned long pgoff); unsigned long fd, unsigned long pgoff);
...@@ -461,7 +453,6 @@ asmlinkage int sys_fork(struct pt_regs regs); ...@@ -461,7 +453,6 @@ asmlinkage int sys_fork(struct pt_regs regs);
asmlinkage int sys_vfork(struct pt_regs regs); asmlinkage int sys_vfork(struct pt_regs regs);
asmlinkage int sys_pipe(unsigned long __user *fildes); asmlinkage int sys_pipe(unsigned long __user *fildes);
asmlinkage int sys_ptrace(long request, long pid, long addr, long data); asmlinkage int sys_ptrace(long request, long pid, long addr, long data);
asmlinkage long sys_iopl(unsigned long unused);
struct sigaction; struct sigaction;
asmlinkage long sys_rt_sigaction(int sig, asmlinkage long sys_rt_sigaction(int sig,
const struct sigaction __user *act, const struct sigaction __user *act,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment