@ -32,6 +32,7 @@
# include <linux/module.h>
# include <linux/binfmts.h>
# include <linux/security.h>
# include <linux/syscalls.h>
# include <linux/compat.h>
# include <linux/vfs.h>
# include <linux/ipc.h>
@ -63,9 +64,9 @@
# define merge_64(r1, r2) ((((r2) & 0xffffffffUL) << 32) + ((r1) & 0xffffffffUL))
# endif
asmlinkage unsigned long
sys32_mmap2 ( unsigned long addr , unsigned long len , unsigned long prot ,
unsigned long flags , unsigned long fd , unsigned long pgoff )
SYSCALL_DEFINE6 ( 32 _mmap2 , unsigned long , addr , unsigned long , len ,
unsigned long , prot , unsigned long , flags , unsigned long , fd ,
unsigned long , pgoff )
{
struct file * file = NULL ;
unsigned long error ;
@ -121,21 +122,21 @@ struct rlimit32 {
int rlim_max ;
} ;
asmlinkage long sys32_truncate64 ( const char __user * path ,
unsigned long __dummy , int a2 , int a3 )
SYSCALL_DEFINE4 ( 32 _truncate64 , const char __user * , path ,
unsigned long , __dummy , uns ig ned long , a2 , uns igned long , a3 )
{
return sys_truncate ( path , merge_64 ( a2 , a3 ) ) ;
}
asmlinkage long sys32_ftruncate64 ( unsigned int fd , unsigned long __dummy ,
int a2 , int a3 )
SYSCALL_DEFINE4 ( 32 _ftruncate64 , unsigned long , fd , unsigned long , __dummy ,
uns ig ned long , a2 , uns ig ned long , a3 )
{
return sys_ftruncate ( fd , merge_64 ( a2 , a3 ) ) ;
}
asmlinkage int sys32_llseek ( unsigned int fd , unsigned int offset_high ,
unsigned int offset_low , loff_t __user * result ,
unsigned int origin )
SYSCALL_DEFINE5 ( 32 _llseek , unsigned long , fd , unsigned long , offset_high ,
unsigned long , offset_low , loff_t __user * , result ,
unsigned long , origin )
{
return sys_llseek ( fd , offset_high , offset_low , result , origin ) ;
}
@ -144,20 +145,20 @@ asmlinkage int sys32_llseek(unsigned int fd, unsigned int offset_high,
lseek back to original location . They fail just like lseek does on
non - seekable files . */
asmlinkage ssize_t sys32_pread ( unsigned int fd , char __user * buf ,
size_t count , u32 unused , u64 a4 , u64 a5 )
SYSCALL_DEFINE6 ( 32 _pread , unsigned long , fd , char __user * , buf , size_t , count ,
unsigned long , unused , unsigned long , a4 , unsigned long , a5 )
{
return sys_pread64 ( fd , buf , count , merge_64 ( a4 , a5 ) ) ;
}
asmlinkage ssize_t sys32_pwrite ( unsigned int fd , const char __user * buf ,
size_t count , u32 unused , u64 a4 , u64 a5 )
SYSCALL_DEFINE6 ( 32 _pwrite , unsigned int , fd , const char __user * , buf ,
size_t , count , u32 , unused , u64 , a4 , u64 , a5 )
{
return sys_pwrite64 ( fd , buf , count , merge_64 ( a4 , a5 ) ) ;
}
asmlinkage int sys32_sched_rr_get_interval ( compat_pid_t pid ,
struct compat_timespec __user * interval )
SYSCALL_DEFINE2 ( 32 _sched_rr_get_interval , compat_pid_t , pid ,
struct compat_timespec __user * , interval )
{
struct timespec t ;
int ret ;
@ -174,8 +175,8 @@ asmlinkage int sys32_sched_rr_get_interval(compat_pid_t pid,
# ifdef CONFIG_SYSVIPC
asml inka ge long
sys32_ipc ( u32 call , int first , int second , int third , u32 ptr , u32 fifth )
SYSCALL_DEFINE6 ( 32 _ ipc , u32 , call , long , first , lon g, s econd , long , third ,
unsigned long , ptr , unsigned long , fifth )
{
int version , err ;
@ -233,8 +234,8 @@ sys32_ipc(u32 call, int first, int second, int third, u32 ptr, u32 fifth)
# else
asmlinkage long
sys32_ipc ( u32 call , int first , int second , int third , u32 ptr , u32 fifth )
SYSCALL_DEFINE6 ( 32 _ipc , u32 , call , int , first , int , second , int , third ,
u32 , ptr , u32 fifth )
{
return - ENOSYS ;
}
@ -242,7 +243,7 @@ sys32_ipc(u32 call, int first, int second, int third, u32 ptr, u32 fifth)
# endif /* CONFIG_SYSVIPC */
# ifdef CONFIG_MIPS32_N32
asmlinkage long sysn32_semctl ( int semid , int semnum , int cmd , u32 arg )
SYSCALL_DEFINE4 ( n32_semctl , int , semid , int , semnum , int , cmd , u32 , arg )
{
/* compat_sys_semctl expects a pointer to union semun */
u32 __user * uptr = compat_alloc_user_space ( sizeof ( u32 ) ) ;
@ -251,13 +252,14 @@ asmlinkage long sysn32_semctl(int semid, int semnum, int cmd, u32 arg)
return compat_sys_semctl ( semid , semnum , cmd , uptr ) ;
}
asmlinkage long sysn32_msgsnd ( int msqid , u32 msgp , unsigned msgsz , int msgflg )
SYSCALL_DEFINE4 ( n32_msgsnd , int , msqid , u32 , msgp , unsigned int , msgsz ,
int , msgflg )
{
return compat_sys_msgsnd ( msqid , msgsz , msgflg , compat_ptr ( msgp ) ) ;
}
asmlinkage long sysn32_msgrcv ( int msqid , u32 msgp , size_t msgsz , int msgtyp ,
int msgflg )
SYSCALL_DEFINE5 ( n32_msgrcv , int , msqid , u32 , msgp , size_t , msgsz ,
int , msgtyp , int , msgflg )
{
return compat_sys_msgrcv ( msqid , msgsz , msgtyp , msgflg , IPC_64 ,
compat_ptr ( msgp ) ) ;
@ -277,7 +279,7 @@ struct sysctl_args32
# ifdef CONFIG_SYSCTL_SYSCALL
asmlinkage long sys32_sysctl ( struct sysctl_args32 __user * args )
SYSCALL_DEFINE1 ( 32 _sysctl , struct sysctl_args32 __user * , args )
{
struct sysctl_args32 tmp ;
int error ;
@ -316,9 +318,16 @@ asmlinkage long sys32_sysctl(struct sysctl_args32 __user *args)
return error ;
}
# else
SYSCALL_DEFINE1 ( 32 _sysctl , struct sysctl_args32 __user * , args )
{
return - ENOSYS ;
}
# endif /* CONFIG_SYSCTL_SYSCALL */
asmlinkage long sys32_newuname ( struct new_utsname __user * name )
SYSCALL_DEFINE1 ( 32 _newuname , struct new_utsname __user * , name )
{
int ret = 0 ;
@ -334,7 +343,7 @@ asmlinkage long sys32_newuname(struct new_utsname __user * name)
return ret ;
}
asmlinkage int sys32_personality ( unsigned long personality )
SYSCALL_DEFINE1 ( 32 _personality , unsigned long , personality )
{
int ret ;
personality & = 0xffffffff ;
@ -357,7 +366,7 @@ struct ustat32 {
extern asmlinkage long sys_ustat ( dev_t dev , struct ustat __user * ubuf ) ;
asmlinkage int sys32_ustat ( dev_t dev , struct ustat32 __user * ubuf32 )
SYSCALL_DEFINE2 ( 32 _ustat , dev_t , dev , struct ustat32 __user * , ubuf32 )
{
int err ;
struct ustat tmp ;
@ -381,8 +390,8 @@ out:
return err ;
}
asmlinkage int sys32_sendfile ( int out_fd , int in_fd , compat_off_t __user * offset ,
s32 count )
SYSCALL_DEFINE4 ( 32 _sendfile , long , out_fd , long , in_fd ,
compat_off_t __user * , offset , s32 , count )
{
mm_segment_t old_fs = get_fs ( ) ;
int ret ;