aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-03-31 17:32:17 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-03-31 17:32:17 -0400
commit190f918660a69d1c56fd05dc8c6cbb8336a8a0af (patch)
tree2320b4aab7f048d97c35ac6ade5b7dedc71da89d
parent176ab02d4916f09d5d8cb63372d142df4378cdea (diff)
parent1e4ec6217dcf4b26cf959b70298a3b990479c955 (diff)
Merge branch 'compat' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 compat wrapper rework from Heiko Carstens: "S390 compat system call wrapper simplification work. The intention of this work is to get rid of all hand written assembly compat system call wrappers on s390, which perform proper sign or zero extension, or pointer conversion of compat system call parameters. Instead all of this should be done with C code eg by using Al's COMPAT_SYSCALL_DEFINEx() macro. Therefore all common code and s390 specific compat system calls have been converted to the COMPAT_SYSCALL_DEFINEx() macro. In order to generate correct code all compat system calls may only have eg compat_ulong_t parameters, but no unsigned long parameters. Those patches which change parameter types from unsigned long to compat_ulong_t parameters are separate in this series, but shouldn't cause any harm. The only compat system calls which intentionally have 64 bit parameters (preadv64 and pwritev64) in support of the x86/32 ABI haven't been changed, but are now only available if an architecture defines __ARCH_WANT_COMPAT_SYS_PREADV64/PWRITEV64. System calls which do not have a compat variant but still need proper zero extension on s390, like eg "long sys_brk(unsigned long brk)" will get a proper wrapper function with the new s390 specific COMPAT_SYSCALL_WRAPx() macro: COMPAT_SYSCALL_WRAP1(brk, unsigned long, brk); which generates the following code (simplified): asmlinkage long sys_brk(unsigned long brk); asmlinkage long compat_sys_brk(long brk) { return sys_brk((u32)brk); } Given that the C file which contains all the COMPAT_SYSCALL_WRAP lines includes both linux/syscall.h and linux/compat.h, it will generate build errors, if the declaration of sys_brk() doesn't match, or if there exists a non-matching compat_sys_brk() declaration. In addition this will intentionally result in a link error if somewhere else a compat_sys_brk() function exists, which probably should have been used instead. Two more BUILD_BUG_ONs make sure the size and type of each compat syscall parameter can be handled correctly with the s390 specific macros. I converted the compat system calls step by step to verify the generated code is correct and matches the previous code. In fact it did not always match, however that was always a bug in the hand written asm code. In result we get less code, less bugs, and much more sanity checking" * 'compat' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (44 commits) s390/compat: add copyright statement compat: include linux/unistd.h within linux/compat.h s390/compat: get rid of compat wrapper assembly code s390/compat: build error for large compat syscall args mm/compat: convert to COMPAT_SYSCALL_DEFINE with changing parameter types kexec/compat: convert to COMPAT_SYSCALL_DEFINE with changing parameter types net/compat: convert to COMPAT_SYSCALL_DEFINE with changing parameter types ipc/compat: convert to COMPAT_SYSCALL_DEFINE with changing parameter types fs/compat: convert to COMPAT_SYSCALL_DEFINE with changing parameter types ipc/compat: convert to COMPAT_SYSCALL_DEFINE fs/compat: convert to COMPAT_SYSCALL_DEFINE security/compat: convert to COMPAT_SYSCALL_DEFINE mm/compat: convert to COMPAT_SYSCALL_DEFINE net/compat: convert to COMPAT_SYSCALL_DEFINE kernel/compat: convert to COMPAT_SYSCALL_DEFINE fs/compat: optional preadv64/pwrite64 compat system calls ipc/compat_sys_msgrcv: change msgtyp type from long to compat_long_t s390/compat: partial parameter conversion within syscall wrappers s390/compat: automatic zero, sign and pointer conversion of syscalls s390/compat: add sync_file_range and fallocate compat syscalls ...
-rw-r--r--arch/arm64/include/asm/unistd.h1
-rw-r--r--arch/mips/include/asm/unistd.h1
-rw-r--r--arch/s390/include/asm/compat.h6
-rw-r--r--arch/s390/kernel/compat_linux.c116
-rw-r--r--arch/s390/kernel/compat_linux.h81
-rw-r--r--arch/s390/kernel/compat_signal.c4
-rw-r--r--arch/s390/kernel/compat_wrapper.S1425
-rw-r--r--arch/s390/kernel/compat_wrapper.c215
-rw-r--r--arch/s390/kernel/entry.h6
-rw-r--r--arch/s390/kernel/syscalls.S504
-rw-r--r--arch/x86/include/asm/unistd.h3
-rw-r--r--fs/compat.c121
-rw-r--r--fs/compat_ioctl.c5
-rw-r--r--fs/exec.c6
-rw-r--r--fs/read_write.c36
-rw-r--r--include/linux/compat.h63
-rw-r--r--include/linux/kexec.h6
-rw-r--r--include/linux/syscalls.h2
-rw-r--r--include/uapi/asm-generic/unistd.h1
-rw-r--r--ipc/compat.c13
-rw-r--r--ipc/compat_mq.c32
-rw-r--r--kernel/compat.c100
-rw-r--r--kernel/kexec.c8
-rw-r--r--kernel/ptrace.c4
-rw-r--r--mm/mempolicy.c18
-rw-r--r--mm/process_vm_access.c26
-rw-r--r--net/compat.c32
-rw-r--r--security/keys/compat.c4
28 files changed, 835 insertions, 2004 deletions
diff --git a/arch/arm64/include/asm/unistd.h b/arch/arm64/include/asm/unistd.h
index 82ce217e94cf..a4654c656a1e 100644
--- a/arch/arm64/include/asm/unistd.h
+++ b/arch/arm64/include/asm/unistd.h
@@ -14,6 +14,7 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16#ifdef CONFIG_COMPAT 16#ifdef CONFIG_COMPAT
17#define __ARCH_WANT_COMPAT_SYS_GETDENTS64
17#define __ARCH_WANT_COMPAT_STAT64 18#define __ARCH_WANT_COMPAT_STAT64
18#define __ARCH_WANT_SYS_GETHOSTNAME 19#define __ARCH_WANT_SYS_GETHOSTNAME
19#define __ARCH_WANT_SYS_PAUSE 20#define __ARCH_WANT_SYS_PAUSE
diff --git a/arch/mips/include/asm/unistd.h b/arch/mips/include/asm/unistd.h
index 4d3b92886665..413d6c612bec 100644
--- a/arch/mips/include/asm/unistd.h
+++ b/arch/mips/include/asm/unistd.h
@@ -24,7 +24,6 @@
24 24
25#ifndef __ASSEMBLY__ 25#ifndef __ASSEMBLY__
26 26
27#define __ARCH_OMIT_COMPAT_SYS_GETDENTS64
28#define __ARCH_WANT_OLD_READDIR 27#define __ARCH_WANT_OLD_READDIR
29#define __ARCH_WANT_SYS_ALARM 28#define __ARCH_WANT_SYS_ALARM
30#define __ARCH_WANT_SYS_GETHOSTNAME 29#define __ARCH_WANT_SYS_GETHOSTNAME
diff --git a/arch/s390/include/asm/compat.h b/arch/s390/include/asm/compat.h
index 5d7e8cf83bd6..d350ed9d0fbb 100644
--- a/arch/s390/include/asm/compat.h
+++ b/arch/s390/include/asm/compat.h
@@ -8,7 +8,11 @@
8#include <linux/thread_info.h> 8#include <linux/thread_info.h>
9 9
10#define __TYPE_IS_PTR(t) (!__builtin_types_compatible_p(typeof(0?(t)0:0ULL), u64)) 10#define __TYPE_IS_PTR(t) (!__builtin_types_compatible_p(typeof(0?(t)0:0ULL), u64))
11#define __SC_DELOUSE(t,v) (t)(__TYPE_IS_PTR(t) ? ((v) & 0x7fffffff) : (v)) 11
12#define __SC_DELOUSE(t,v) ({ \
13 BUILD_BUG_ON(sizeof(t) > 4 && !__TYPE_IS_PTR(t)); \
14 (t)(__TYPE_IS_PTR(t) ? ((v) & 0x7fffffff) : (v)); \
15})
12 16
13#define PSW32_MASK_PER 0x40000000UL 17#define PSW32_MASK_PER 0x40000000UL
14#define PSW32_MASK_DAT 0x04000000UL 18#define PSW32_MASK_DAT 0x04000000UL
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c
index db02052bd137..ca38139423ae 100644
--- a/arch/s390/kernel/compat_linux.c
+++ b/arch/s390/kernel/compat_linux.c
@@ -86,48 +86,51 @@
86#define SET_STAT_UID(stat, uid) (stat).st_uid = high2lowuid(uid) 86#define SET_STAT_UID(stat, uid) (stat).st_uid = high2lowuid(uid)
87#define SET_STAT_GID(stat, gid) (stat).st_gid = high2lowgid(gid) 87#define SET_STAT_GID(stat, gid) (stat).st_gid = high2lowgid(gid)
88 88
89asmlinkage long sys32_chown16(const char __user * filename, u16 user, u16 group) 89COMPAT_SYSCALL_DEFINE3(s390_chown16, const char __user *, filename,
90 u16, user, u16, group)
90{ 91{
91 return sys_chown(filename, low2highuid(user), low2highgid(group)); 92 return sys_chown(filename, low2highuid(user), low2highgid(group));
92} 93}
93 94
94asmlinkage long sys32_lchown16(const char __user * filename, u16 user, u16 group) 95COMPAT_SYSCALL_DEFINE3(s390_lchown16, const char __user *,
96 filename, u16, user, u16, group)
95{ 97{
96 return sys_lchown(filename, low2highuid(user), low2highgid(group)); 98 return sys_lchown(filename, low2highuid(user), low2highgid(group));
97} 99}
98 100
99asmlinkage long sys32_fchown16(unsigned int fd, u16 user, u16 group) 101COMPAT_SYSCALL_DEFINE3(s390_fchown16, unsigned int, fd, u16, user, u16, group)
100{ 102{
101 return sys_fchown(fd, low2highuid(user), low2highgid(group)); 103 return sys_fchown(fd, low2highuid(user), low2highgid(group));
102} 104}
103 105
104asmlinkage long sys32_setregid16(u16 rgid, u16 egid) 106COMPAT_SYSCALL_DEFINE2(s390_setregid16, u16, rgid, u16, egid)
105{ 107{
106 return sys_setregid(low2highgid(rgid), low2highgid(egid)); 108 return sys_setregid(low2highgid(rgid), low2highgid(egid));
107} 109}
108 110
109asmlinkage long sys32_setgid16(u16 gid) 111COMPAT_SYSCALL_DEFINE1(s390_setgid16, u16, gid)
110{ 112{
111 return sys_setgid((gid_t)gid); 113 return sys_setgid((gid_t)gid);
112} 114}
113 115
114asmlinkage long sys32_setreuid16(u16 ruid, u16 euid) 116COMPAT_SYSCALL_DEFINE2(s390_setreuid16, u16, ruid, u16, euid)
115{ 117{
116 return sys_setreuid(low2highuid(ruid), low2highuid(euid)); 118 return sys_setreuid(low2highuid(ruid), low2highuid(euid));
117} 119}
118 120
119asmlinkage long sys32_setuid16(u16 uid) 121COMPAT_SYSCALL_DEFINE1(s390_setuid16, u16, uid)
120{ 122{
121 return sys_setuid((uid_t)uid); 123 return sys_setuid((uid_t)uid);
122} 124}
123 125
124asmlinkage long sys32_setresuid16(u16 ruid, u16 euid, u16 suid) 126COMPAT_SYSCALL_DEFINE3(s390_setresuid16, u16, ruid, u16, euid, u16, suid)
125{ 127{
126 return sys_setresuid(low2highuid(ruid), low2highuid(euid), 128 return sys_setresuid(low2highuid(ruid), low2highuid(euid),
127 low2highuid(suid)); 129 low2highuid(suid));
128} 130}
129 131
130asmlinkage long sys32_getresuid16(u16 __user *ruidp, u16 __user *euidp, u16 __user *suidp) 132COMPAT_SYSCALL_DEFINE3(s390_getresuid16, u16 __user *, ruidp,
133 u16 __user *, euidp, u16 __user *, suidp)
131{ 134{
132 const struct cred *cred = current_cred(); 135 const struct cred *cred = current_cred();
133 int retval; 136 int retval;
@@ -144,13 +147,14 @@ asmlinkage long sys32_getresuid16(u16 __user *ruidp, u16 __user *euidp, u16 __us
144 return retval; 147 return retval;
145} 148}
146 149
147asmlinkage long sys32_setresgid16(u16 rgid, u16 egid, u16 sgid) 150COMPAT_SYSCALL_DEFINE3(s390_setresgid16, u16, rgid, u16, egid, u16, sgid)
148{ 151{
149 return sys_setresgid(low2highgid(rgid), low2highgid(egid), 152 return sys_setresgid(low2highgid(rgid), low2highgid(egid),
150 low2highgid(sgid)); 153 low2highgid(sgid));
151} 154}
152 155
153asmlinkage long sys32_getresgid16(u16 __user *rgidp, u16 __user *egidp, u16 __user *sgidp) 156COMPAT_SYSCALL_DEFINE3(s390_getresgid16, u16 __user *, rgidp,
157 u16 __user *, egidp, u16 __user *, sgidp)
154{ 158{
155 const struct cred *cred = current_cred(); 159 const struct cred *cred = current_cred();
156 int retval; 160 int retval;
@@ -167,12 +171,12 @@ asmlinkage long sys32_getresgid16(u16 __user *rgidp, u16 __user *egidp, u16 __us
167 return retval; 171 return retval;
168} 172}
169 173
170asmlinkage long sys32_setfsuid16(u16 uid) 174COMPAT_SYSCALL_DEFINE1(s390_setfsuid16, u16, uid)
171{ 175{
172 return sys_setfsuid((uid_t)uid); 176 return sys_setfsuid((uid_t)uid);
173} 177}
174 178
175asmlinkage long sys32_setfsgid16(u16 gid) 179COMPAT_SYSCALL_DEFINE1(s390_setfsgid16, u16, gid)
176{ 180{
177 return sys_setfsgid((gid_t)gid); 181 return sys_setfsgid((gid_t)gid);
178} 182}
@@ -215,7 +219,7 @@ static int groups16_from_user(struct group_info *group_info, u16 __user *groupli
215 return 0; 219 return 0;
216} 220}
217 221
218asmlinkage long sys32_getgroups16(int gidsetsize, u16 __user *grouplist) 222COMPAT_SYSCALL_DEFINE2(s390_getgroups16, int, gidsetsize, u16 __user *, grouplist)
219{ 223{
220 const struct cred *cred = current_cred(); 224 const struct cred *cred = current_cred();
221 int i; 225 int i;
@@ -240,7 +244,7 @@ out:
240 return i; 244 return i;
241} 245}
242 246
243asmlinkage long sys32_setgroups16(int gidsetsize, u16 __user *grouplist) 247COMPAT_SYSCALL_DEFINE2(s390_setgroups16, int, gidsetsize, u16 __user *, grouplist)
244{ 248{
245 struct group_info *group_info; 249 struct group_info *group_info;
246 int retval; 250 int retval;
@@ -265,22 +269,22 @@ asmlinkage long sys32_setgroups16(int gidsetsize, u16 __user *grouplist)
265 return retval; 269 return retval;
266} 270}
267 271
268asmlinkage long sys32_getuid16(void) 272COMPAT_SYSCALL_DEFINE0(s390_getuid16)
269{ 273{
270 return high2lowuid(from_kuid_munged(current_user_ns(), current_uid())); 274 return high2lowuid(from_kuid_munged(current_user_ns(), current_uid()));
271} 275}
272 276
273asmlinkage long sys32_geteuid16(void) 277COMPAT_SYSCALL_DEFINE0(s390_geteuid16)
274{ 278{
275 return high2lowuid(from_kuid_munged(current_user_ns(), current_euid())); 279 return high2lowuid(from_kuid_munged(current_user_ns(), current_euid()));
276} 280}
277 281
278asmlinkage long sys32_getgid16(void) 282COMPAT_SYSCALL_DEFINE0(s390_getgid16)
279{ 283{
280 return high2lowgid(from_kgid_munged(current_user_ns(), current_gid())); 284 return high2lowgid(from_kgid_munged(current_user_ns(), current_gid()));
281} 285}
282 286
283asmlinkage long sys32_getegid16(void) 287COMPAT_SYSCALL_DEFINE0(s390_getegid16)
284{ 288{
285 return high2lowgid(from_kgid_munged(current_user_ns(), current_egid())); 289 return high2lowgid(from_kgid_munged(current_user_ns(), current_egid()));
286} 290}
@@ -295,41 +299,35 @@ COMPAT_SYSCALL_DEFINE5(s390_ipc, uint, call, int, first, compat_ulong_t, second,
295} 299}
296#endif 300#endif
297 301
298asmlinkage long sys32_truncate64(const char __user * path, unsigned long high, unsigned long low) 302COMPAT_SYSCALL_DEFINE3(s390_truncate64, const char __user *, path, u32, high, u32, low)
299{ 303{
300 if ((int)high < 0) 304 return sys_truncate(path, (unsigned long)high << 32 | low);
301 return -EINVAL;
302 else
303 return sys_truncate(path, (high << 32) | low);
304} 305}
305 306
306asmlinkage long sys32_ftruncate64(unsigned int fd, unsigned long high, unsigned long low) 307COMPAT_SYSCALL_DEFINE3(s390_ftruncate64, unsigned int, fd, u32, high, u32, low)
307{ 308{
308 if ((int)high < 0) 309 return sys_ftruncate(fd, (unsigned long)high << 32 | low);
309 return -EINVAL;
310 else
311 return sys_ftruncate(fd, (high << 32) | low);
312} 310}
313 311
314asmlinkage long sys32_pread64(unsigned int fd, char __user *ubuf, 312COMPAT_SYSCALL_DEFINE5(s390_pread64, unsigned int, fd, char __user *, ubuf,
315 size_t count, u32 poshi, u32 poslo) 313 compat_size_t, count, u32, high, u32, low)
316{ 314{
317 if ((compat_ssize_t) count < 0) 315 if ((compat_ssize_t) count < 0)
318 return -EINVAL; 316 return -EINVAL;
319 return sys_pread64(fd, ubuf, count, ((loff_t)AA(poshi) << 32) | AA(poslo)); 317 return sys_pread64(fd, ubuf, count, (unsigned long)high << 32 | low);
320} 318}
321 319
322asmlinkage long sys32_pwrite64(unsigned int fd, const char __user *ubuf, 320COMPAT_SYSCALL_DEFINE5(s390_pwrite64, unsigned int, fd, const char __user *, ubuf,
323 size_t count, u32 poshi, u32 poslo) 321 compat_size_t, count, u32, high, u32, low)
324{ 322{
325 if ((compat_ssize_t) count < 0) 323 if ((compat_ssize_t) count < 0)
326 return -EINVAL; 324 return -EINVAL;
327 return sys_pwrite64(fd, ubuf, count, ((loff_t)AA(poshi) << 32) | AA(poslo)); 325 return sys_pwrite64(fd, ubuf, count, (unsigned long)high << 32 | low);
328} 326}
329 327
330asmlinkage compat_ssize_t sys32_readahead(int fd, u32 offhi, u32 offlo, s32 count) 328COMPAT_SYSCALL_DEFINE4(s390_readahead, int, fd, u32, high, u32, low, s32, count)
331{ 329{
332 return sys_readahead(fd, ((loff_t)AA(offhi) << 32) | AA(offlo), count); 330 return sys_readahead(fd, (unsigned long)high << 32 | low, count);
333} 331}
334 332
335struct stat64_emu31 { 333struct stat64_emu31 {
@@ -381,7 +379,7 @@ static int cp_stat64(struct stat64_emu31 __user *ubuf, struct kstat *stat)
381 return copy_to_user(ubuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 379 return copy_to_user(ubuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
382} 380}
383 381
384asmlinkage long sys32_stat64(const char __user * filename, struct stat64_emu31 __user * statbuf) 382COMPAT_SYSCALL_DEFINE2(s390_stat64, const char __user *, filename, struct stat64_emu31 __user *, statbuf)
385{ 383{
386 struct kstat stat; 384 struct kstat stat;
387 int ret = vfs_stat(filename, &stat); 385 int ret = vfs_stat(filename, &stat);
@@ -390,7 +388,7 @@ asmlinkage long sys32_stat64(const char __user * filename, struct stat64_emu31 _
390 return ret; 388 return ret;
391} 389}
392 390
393asmlinkage long sys32_lstat64(const char __user * filename, struct stat64_emu31 __user * statbuf) 391COMPAT_SYSCALL_DEFINE2(s390_lstat64, const char __user *, filename, struct stat64_emu31 __user *, statbuf)
394{ 392{
395 struct kstat stat; 393 struct kstat stat;
396 int ret = vfs_lstat(filename, &stat); 394 int ret = vfs_lstat(filename, &stat);
@@ -399,7 +397,7 @@ asmlinkage long sys32_lstat64(const char __user * filename, struct stat64_emu31
399 return ret; 397 return ret;
400} 398}
401 399
402asmlinkage long sys32_fstat64(unsigned long fd, struct stat64_emu31 __user * statbuf) 400COMPAT_SYSCALL_DEFINE2(s390_fstat64, unsigned int, fd, struct stat64_emu31 __user *, statbuf)
403{ 401{
404 struct kstat stat; 402 struct kstat stat;
405 int ret = vfs_fstat(fd, &stat); 403 int ret = vfs_fstat(fd, &stat);
@@ -408,8 +406,8 @@ asmlinkage long sys32_fstat64(unsigned long fd, struct stat64_emu31 __user * sta
408 return ret; 406 return ret;
409} 407}
410 408
411asmlinkage long sys32_fstatat64(unsigned int dfd, const char __user *filename, 409COMPAT_SYSCALL_DEFINE4(s390_fstatat64, unsigned int, dfd, const char __user *, filename,
412 struct stat64_emu31 __user* statbuf, int flag) 410 struct stat64_emu31 __user *, statbuf, int, flag)
413{ 411{
414 struct kstat stat; 412 struct kstat stat;
415 int error; 413 int error;
@@ -435,7 +433,7 @@ struct mmap_arg_struct_emu31 {
435 compat_ulong_t offset; 433 compat_ulong_t offset;
436}; 434};
437 435
438asmlinkage unsigned long old32_mmap(struct mmap_arg_struct_emu31 __user *arg) 436COMPAT_SYSCALL_DEFINE1(s390_old_mmap, struct mmap_arg_struct_emu31 __user *, arg)
439{ 437{
440 struct mmap_arg_struct_emu31 a; 438 struct mmap_arg_struct_emu31 a;
441 439
@@ -447,7 +445,7 @@ asmlinkage unsigned long old32_mmap(struct mmap_arg_struct_emu31 __user *arg)
447 a.offset >> PAGE_SHIFT); 445 a.offset >> PAGE_SHIFT);
448} 446}
449 447
450asmlinkage long sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg) 448COMPAT_SYSCALL_DEFINE1(s390_mmap2, struct mmap_arg_struct_emu31 __user *, arg)
451{ 449{
452 struct mmap_arg_struct_emu31 a; 450 struct mmap_arg_struct_emu31 a;
453 451
@@ -456,7 +454,7 @@ asmlinkage long sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg)
456 return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset); 454 return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset);
457} 455}
458 456
459asmlinkage long sys32_read(unsigned int fd, char __user * buf, size_t count) 457COMPAT_SYSCALL_DEFINE3(s390_read, unsigned int, fd, char __user *, buf, compat_size_t, count)
460{ 458{
461 if ((compat_ssize_t) count < 0) 459 if ((compat_ssize_t) count < 0)
462 return -EINVAL; 460 return -EINVAL;
@@ -464,7 +462,7 @@ asmlinkage long sys32_read(unsigned int fd, char __user * buf, size_t count)
464 return sys_read(fd, buf, count); 462 return sys_read(fd, buf, count);
465} 463}
466 464
467asmlinkage long sys32_write(unsigned int fd, const char __user * buf, size_t count) 465COMPAT_SYSCALL_DEFINE3(s390_write, unsigned int, fd, const char __user *, buf, compat_size_t, count)
468{ 466{
469 if ((compat_ssize_t) count < 0) 467 if ((compat_ssize_t) count < 0)
470 return -EINVAL; 468 return -EINVAL;
@@ -478,14 +476,13 @@ asmlinkage long sys32_write(unsigned int fd, const char __user * buf, size_t cou
478 * because the 31 bit values differ from the 64 bit values. 476 * because the 31 bit values differ from the 64 bit values.
479 */ 477 */
480 478
481asmlinkage long 479COMPAT_SYSCALL_DEFINE5(s390_fadvise64, int, fd, u32, high, u32, low, compat_size_t, len, int, advise)
482sys32_fadvise64(int fd, loff_t offset, size_t len, int advise)
483{ 480{
484 if (advise == 4) 481 if (advise == 4)
485 advise = POSIX_FADV_DONTNEED; 482 advise = POSIX_FADV_DONTNEED;
486 else if (advise == 5) 483 else if (advise == 5)
487 advise = POSIX_FADV_NOREUSE; 484 advise = POSIX_FADV_NOREUSE;
488 return sys_fadvise64(fd, offset, len, advise); 485 return sys_fadvise64(fd, (unsigned long)high << 32 | low, len, advise);
489} 486}
490 487
491struct fadvise64_64_args { 488struct fadvise64_64_args {
@@ -495,8 +492,7 @@ struct fadvise64_64_args {
495 int advice; 492 int advice;
496}; 493};
497 494
498asmlinkage long 495COMPAT_SYSCALL_DEFINE1(s390_fadvise64_64, struct fadvise64_64_args __user *, args)
499sys32_fadvise64_64(struct fadvise64_64_args __user *args)
500{ 496{
501 struct fadvise64_64_args a; 497 struct fadvise64_64_args a;
502 498
@@ -508,3 +504,17 @@ sys32_fadvise64_64(struct fadvise64_64_args __user *args)
508 a.advice = POSIX_FADV_NOREUSE; 504 a.advice = POSIX_FADV_NOREUSE;
509 return sys_fadvise64_64(a.fd, a.offset, a.len, a.advice); 505 return sys_fadvise64_64(a.fd, a.offset, a.len, a.advice);
510} 506}
507
508COMPAT_SYSCALL_DEFINE6(s390_sync_file_range, int, fd, u32, offhigh, u32, offlow,
509 u32, nhigh, u32, nlow, unsigned int, flags)
510{
511 return sys_sync_file_range(fd, ((loff_t)offhigh << 32) + offlow,
512 ((u64)nhigh << 32) + nlow, flags);
513}
514
515COMPAT_SYSCALL_DEFINE6(s390_fallocate, int, fd, int, mode, u32, offhigh, u32, offlow,
516 u32, lenhigh, u32, lenlow)
517{
518 return sys_fallocate(fd, mode, ((loff_t)offhigh << 32) + offlow,
519 ((u64)lenhigh << 32) + lenlow);
520}
diff --git a/arch/s390/kernel/compat_linux.h b/arch/s390/kernel/compat_linux.h
index 1bfda3eca379..39ddfdb40ae8 100644
--- a/arch/s390/kernel/compat_linux.h
+++ b/arch/s390/kernel/compat_linux.h
@@ -76,46 +76,43 @@ struct stat64_emu31;
76struct mmap_arg_struct_emu31; 76struct mmap_arg_struct_emu31;
77struct fadvise64_64_args; 77struct fadvise64_64_args;
78 78
79long sys32_chown16(const char __user * filename, u16 user, u16 group); 79long compat_sys_s390_chown16(const char __user *filename, u16 user, u16 group);
80long sys32_lchown16(const char __user * filename, u16 user, u16 group); 80long compat_sys_s390_lchown16(const char __user *filename, u16 user, u16 group);
81long sys32_fchown16(unsigned int fd, u16 user, u16 group); 81long compat_sys_s390_fchown16(unsigned int fd, u16 user, u16 group);
82long sys32_setregid16(u16 rgid, u16 egid); 82long compat_sys_s390_setregid16(u16 rgid, u16 egid);
83long sys32_setgid16(u16 gid); 83long compat_sys_s390_setgid16(u16 gid);
84long sys32_setreuid16(u16 ruid, u16 euid); 84long compat_sys_s390_setreuid16(u16 ruid, u16 euid);
85long sys32_setuid16(u16 uid); 85long compat_sys_s390_setuid16(u16 uid);
86long sys32_setresuid16(u16 ruid, u16 euid, u16 suid); 86long compat_sys_s390_setresuid16(u16 ruid, u16 euid, u16 suid);
87long sys32_getresuid16(u16 __user *ruid, u16 __user *euid, u16 __user *suid); 87long compat_sys_s390_getresuid16(u16 __user *ruid, u16 __user *euid, u16 __user *suid);
88long sys32_setresgid16(u16 rgid, u16 egid, u16 sgid); 88long compat_sys_s390_setresgid16(u16 rgid, u16 egid, u16 sgid);
89long sys32_getresgid16(u16 __user *rgid, u16 __user *egid, u16 __user *sgid); 89long compat_sys_s390_getresgid16(u16 __user *rgid, u16 __user *egid, u16 __user *sgid);
90long sys32_setfsuid16(u16 uid); 90long compat_sys_s390_setfsuid16(u16 uid);
91long sys32_setfsgid16(u16 gid); 91long compat_sys_s390_setfsgid16(u16 gid);
92long sys32_getgroups16(int gidsetsize, u16 __user *grouplist); 92long compat_sys_s390_getgroups16(int gidsetsize, u16 __user *grouplist);
93long sys32_setgroups16(int gidsetsize, u16 __user *grouplist); 93long compat_sys_s390_setgroups16(int gidsetsize, u16 __user *grouplist);
94long sys32_getuid16(void); 94long compat_sys_s390_getuid16(void);
95long sys32_geteuid16(void); 95long compat_sys_s390_geteuid16(void);
96long sys32_getgid16(void); 96long compat_sys_s390_getgid16(void);
97long sys32_getegid16(void); 97long compat_sys_s390_getegid16(void);
98long sys32_truncate64(const char __user * path, unsigned long high, 98long compat_sys_s390_truncate64(const char __user *path, u32 high, u32 low);
99 unsigned long low); 99long compat_sys_s390_ftruncate64(unsigned int fd, u32 high, u32 low);
100long sys32_ftruncate64(unsigned int fd, unsigned long high, unsigned long low); 100long compat_sys_s390_pread64(unsigned int fd, char __user *ubuf, compat_size_t count, u32 high, u32 low);
101long sys32_init_module(void __user *umod, unsigned long len, 101long compat_sys_s390_pwrite64(unsigned int fd, const char __user *ubuf, compat_size_t count, u32 high, u32 low);
102 const char __user *uargs); 102long compat_sys_s390_readahead(int fd, u32 high, u32 low, s32 count);
103long sys32_delete_module(const char __user *name_user, unsigned int flags); 103long compat_sys_s390_stat64(const char __user *filename, struct stat64_emu31 __user *statbuf);
104long sys32_pread64(unsigned int fd, char __user *ubuf, size_t count, 104long compat_sys_s390_lstat64(const char __user *filename, struct stat64_emu31 __user *statbuf);
105 u32 poshi, u32 poslo); 105long compat_sys_s390_fstat64(unsigned int fd, struct stat64_emu31 __user *statbuf);
106long sys32_pwrite64(unsigned int fd, const char __user *ubuf, 106long compat_sys_s390_fstatat64(unsigned int dfd, const char __user *filename, struct stat64_emu31 __user *statbuf, int flag);
107 size_t count, u32 poshi, u32 poslo); 107long compat_sys_s390_old_mmap(struct mmap_arg_struct_emu31 __user *arg);
108compat_ssize_t sys32_readahead(int fd, u32 offhi, u32 offlo, s32 count); 108long compat_sys_s390_mmap2(struct mmap_arg_struct_emu31 __user *arg);
109long sys32_stat64(const char __user * filename, struct stat64_emu31 __user * statbuf); 109long compat_sys_s390_read(unsigned int fd, char __user * buf, compat_size_t count);
110long sys32_lstat64(const char __user * filename, 110long compat_sys_s390_write(unsigned int fd, const char __user * buf, compat_size_t count);
111 struct stat64_emu31 __user * statbuf); 111long compat_sys_s390_fadvise64(int fd, u32 high, u32 low, compat_size_t len, int advise);
112long sys32_fstat64(unsigned long fd, struct stat64_emu31 __user * statbuf); 112long compat_sys_s390_fadvise64_64(struct fadvise64_64_args __user *args);
113long sys32_fstatat64(unsigned int dfd, const char __user *filename, 113long compat_sys_s390_sync_file_range(int fd, u32 offhigh, u32 offlow, u32 nhigh, u32 nlow, unsigned int flags);
114 struct stat64_emu31 __user* statbuf, int flag); 114long compat_sys_s390_fallocate(int fd, int mode, u32 offhigh, u32 offlow, u32 lenhigh, u32 lenlow);
115unsigned long old32_mmap(struct mmap_arg_struct_emu31 __user *arg); 115long compat_sys_sigreturn(void);
116long sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg); 116long compat_sys_rt_sigreturn(void);
117long sys32_read(unsigned int fd, char __user * buf, size_t count); 117
118long sys32_write(unsigned int fd, const char __user * buf, size_t count);
119long sys32_fadvise64(int fd, loff_t offset, size_t len, int advise);
120long sys32_fadvise64_64(struct fadvise64_64_args __user *args);
121#endif /* _ASM_S390X_S390_H */ 118#endif /* _ASM_S390X_S390_H */
diff --git a/arch/s390/kernel/compat_signal.c b/arch/s390/kernel/compat_signal.c
index 8b84bc373e94..7df5ed9f44d7 100644
--- a/arch/s390/kernel/compat_signal.c
+++ b/arch/s390/kernel/compat_signal.c
@@ -241,7 +241,7 @@ static int restore_sigregs_gprs_high(struct pt_regs *regs, __u32 __user *uregs)
241 return 0; 241 return 0;
242} 242}
243 243
244asmlinkage long sys32_sigreturn(void) 244COMPAT_SYSCALL_DEFINE0(sigreturn)
245{ 245{
246 struct pt_regs *regs = task_pt_regs(current); 246 struct pt_regs *regs = task_pt_regs(current);
247 sigframe32 __user *frame = (sigframe32 __user *)regs->gprs[15]; 247 sigframe32 __user *frame = (sigframe32 __user *)regs->gprs[15];
@@ -260,7 +260,7 @@ badframe:
260 return 0; 260 return 0;
261} 261}
262 262
263asmlinkage long sys32_rt_sigreturn(void) 263COMPAT_SYSCALL_DEFINE0(rt_sigreturn)
264{ 264{
265 struct pt_regs *regs = task_pt_regs(current); 265 struct pt_regs *regs = task_pt_regs(current);
266 rt_sigframe32 __user *frame = (rt_sigframe32 __user *)regs->gprs[15]; 266 rt_sigframe32 __user *frame = (rt_sigframe32 __user *)regs->gprs[15];
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S
deleted file mode 100644
index 0248949a756d..000000000000
--- a/arch/s390/kernel/compat_wrapper.S
+++ /dev/null
@@ -1,1425 +0,0 @@
1/*
2* wrapper for 31 bit compatible system calls.
3*
4* Copyright IBM Corp. 2000, 2006
5* Author(s): Gerhard Tonn (ton@de.ibm.com),
6* Thomas Spatzier (tspat@de.ibm.com)
7*/
8
9#include <linux/linkage.h>
10
11ENTRY(sys32_exit_wrapper)
12 lgfr %r2,%r2 # int
13 jg sys_exit # branch to sys_exit
14
15ENTRY(sys32_read_wrapper)
16 llgfr %r2,%r2 # unsigned int
17 llgtr %r3,%r3 # char *
18 llgfr %r4,%r4 # size_t
19 jg sys32_read # branch to sys_read
20
21ENTRY(sys32_write_wrapper)
22 llgfr %r2,%r2 # unsigned int
23 llgtr %r3,%r3 # const char *
24 llgfr %r4,%r4 # size_t
25 jg sys32_write # branch to system call
26
27ENTRY(sys32_close_wrapper)
28 llgfr %r2,%r2 # unsigned int
29 jg sys_close # branch to system call
30
31ENTRY(sys32_creat_wrapper)
32 llgtr %r2,%r2 # const char *
33 lgfr %r3,%r3 # int
34 jg sys_creat # branch to system call
35
36ENTRY(sys32_link_wrapper)
37 llgtr %r2,%r2 # const char *
38 llgtr %r3,%r3 # const char *
39 jg sys_link # branch to system call
40
41ENTRY(sys32_unlink_wrapper)
42 llgtr %r2,%r2 # const char *
43 jg sys_unlink # branch to system call
44
45ENTRY(sys32_chdir_wrapper)
46 llgtr %r2,%r2 # const char *
47 jg sys_chdir # branch to system call
48
49ENTRY(sys32_time_wrapper)
50 llgtr %r2,%r2 # int *
51 jg compat_sys_time # branch to system call
52
53ENTRY(sys32_mknod_wrapper)
54 llgtr %r2,%r2 # const char *
55 lgfr %r3,%r3 # int
56 llgfr %r4,%r4 # dev
57 jg sys_mknod # branch to system call
58
59ENTRY(sys32_chmod_wrapper)
60 llgtr %r2,%r2 # const char *
61 llgfr %r3,%r3 # mode_t
62 jg sys_chmod # branch to system call
63
64ENTRY(sys32_lchown16_wrapper)
65 llgtr %r2,%r2 # const char *
66 llgfr %r3,%r3 # __kernel_old_uid_emu31_t
67 llgfr %r4,%r4 # __kernel_old_uid_emu31_t
68 jg sys32_lchown16 # branch to system call
69
70#sys32_getpid_wrapper # void
71
72ENTRY(sys32_mount_wrapper)
73 llgtr %r2,%r2 # char *
74 llgtr %r3,%r3 # char *
75 llgtr %r4,%r4 # char *
76 llgfr %r5,%r5 # unsigned long
77 llgtr %r6,%r6 # void *
78 jg compat_sys_mount # branch to system call
79
80ENTRY(sys32_oldumount_wrapper)
81 llgtr %r2,%r2 # char *
82 jg sys_oldumount # branch to system call
83
84ENTRY(sys32_setuid16_wrapper)
85 llgfr %r2,%r2 # __kernel_old_uid_emu31_t
86 jg sys32_setuid16 # branch to system call
87
88#sys32_getuid16_wrapper # void
89
90ENTRY(sys32_ptrace_wrapper)
91 lgfr %r2,%r2 # long
92 lgfr %r3,%r3 # long
93 llgtr %r4,%r4 # long
94 llgfr %r5,%r5 # long
95 jg compat_sys_ptrace # branch to system call
96
97ENTRY(sys32_alarm_wrapper)
98 llgfr %r2,%r2 # unsigned int
99 jg sys_alarm # branch to system call
100
101ENTRY(compat_sys_utime_wrapper)
102 llgtr %r2,%r2 # char *
103 llgtr %r3,%r3 # struct compat_utimbuf *
104 jg compat_sys_utime # branch to system call
105
106ENTRY(sys32_access_wrapper)
107 llgtr %r2,%r2 # const char *
108 lgfr %r3,%r3 # int
109 jg sys_access # branch to system call
110
111ENTRY(sys32_nice_wrapper)
112 lgfr %r2,%r2 # int
113 jg sys_nice # branch to system call
114
115#sys32_sync_wrapper # void
116
117ENTRY(sys32_kill_wrapper)
118 lgfr %r2,%r2 # int
119 lgfr %r3,%r3 # int
120 jg sys_kill # branch to system call
121
122ENTRY(sys32_rename_wrapper)
123 llgtr %r2,%r2 # const char *
124 llgtr %r3,%r3 # const char *
125 jg sys_rename # branch to system call
126
127ENTRY(sys32_mkdir_wrapper)
128 llgtr %r2,%r2 # const char *
129 lgfr %r3,%r3 # int
130 jg sys_mkdir # branch to system call
131
132ENTRY(sys32_rmdir_wrapper)
133 llgtr %r2,%r2 # const char *
134 jg sys_rmdir # branch to system call
135
136ENTRY(sys32_dup_wrapper)
137 llgfr %r2,%r2 # unsigned int
138 jg sys_dup # branch to system call
139
140ENTRY(sys32_pipe_wrapper)
141 llgtr %r2,%r2 # u32 *
142 jg sys_pipe # branch to system call
143
144ENTRY(compat_sys_times_wrapper)
145 llgtr %r2,%r2 # struct compat_tms *
146 jg compat_sys_times # branch to system call
147
148ENTRY(sys32_brk_wrapper)
149 llgtr %r2,%r2 # unsigned long
150 jg sys_brk # branch to system call
151
152ENTRY(sys32_setgid16_wrapper)
153 llgfr %r2,%r2 # __kernel_old_gid_emu31_t
154 jg sys32_setgid16 # branch to system call
155
156#sys32_getgid16_wrapper # void
157
158ENTRY(sys32_signal_wrapper)
159 lgfr %r2,%r2 # int
160 llgtr %r3,%r3 # __sighandler_t
161 jg sys_signal
162
163#sys32_geteuid16_wrapper # void
164
165#sys32_getegid16_wrapper # void
166
167ENTRY(sys32_acct_wrapper)
168 llgtr %r2,%r2 # char *
169 jg sys_acct # branch to system call
170
171ENTRY(sys32_umount_wrapper)
172 llgtr %r2,%r2 # char *
173 lgfr %r3,%r3 # int
174 jg sys_umount # branch to system call
175
176ENTRY(compat_sys_ioctl_wrapper)
177 llgfr %r2,%r2 # unsigned int
178 llgfr %r3,%r3 # unsigned int
179 llgfr %r4,%r4 # unsigned int
180 jg compat_sys_ioctl # branch to system call
181
182ENTRY(compat_sys_fcntl_wrapper)
183 llgfr %r2,%r2 # unsigned int
184 llgfr %r3,%r3 # unsigned int
185 llgfr %r4,%r4 # unsigned long
186 jg compat_sys_fcntl # branch to system call
187
188ENTRY(sys32_setpgid_wrapper)
189 lgfr %r2,%r2 # pid_t
190 lgfr %r3,%r3 # pid_t
191 jg sys_setpgid # branch to system call
192
193ENTRY(sys32_umask_wrapper)
194 lgfr %r2,%r2 # int
195 jg sys_umask # branch to system call
196
197ENTRY(sys32_chroot_wrapper)
198 llgtr %r2,%r2 # char *
199 jg sys_chroot # branch to system call
200
201ENTRY(sys32_ustat_wrapper)
202 llgfr %r2,%r2 # dev_t
203 llgtr %r3,%r3 # struct ustat *
204 jg compat_sys_ustat
205
206ENTRY(sys32_dup2_wrapper)
207 llgfr %r2,%r2 # unsigned int
208 llgfr %r3,%r3 # unsigned int
209 jg sys_dup2 # branch to system call
210
211#sys32_getppid_wrapper # void
212
213#sys32_getpgrp_wrapper # void
214
215#sys32_setsid_wrapper # void
216
217ENTRY(sys32_setreuid16_wrapper)
218 llgfr %r2,%r2 # __kernel_old_uid_emu31_t
219 llgfr %r3,%r3 # __kernel_old_uid_emu31_t
220 jg sys32_setreuid16 # branch to system call
221
222ENTRY(sys32_setregid16_wrapper)
223 llgfr %r2,%r2 # __kernel_old_gid_emu31_t
224 llgfr %r3,%r3 # __kernel_old_gid_emu31_t
225 jg sys32_setregid16 # branch to system call
226
227ENTRY(sys_sigsuspend_wrapper)
228 lgfr %r2,%r2 # int
229 lgfr %r3,%r3 # int
230 llgfr %r4,%r4 # old_sigset_t
231 jg sys_sigsuspend
232
233ENTRY(compat_sys_sigpending_wrapper)
234 llgtr %r2,%r2 # compat_old_sigset_t *
235 jg compat_sys_sigpending # branch to system call
236
237ENTRY(sys32_sethostname_wrapper)
238 llgtr %r2,%r2 # char *
239 lgfr %r3,%r3 # int
240 jg sys_sethostname # branch to system call
241
242ENTRY(compat_sys_setrlimit_wrapper)
243 llgfr %r2,%r2 # unsigned int
244 llgtr %r3,%r3 # struct rlimit_emu31 *
245 jg compat_sys_setrlimit # branch to system call
246
247ENTRY(compat_sys_old_getrlimit_wrapper)
248 llgfr %r2,%r2 # unsigned int
249 llgtr %r3,%r3 # struct rlimit_emu31 *
250 jg compat_sys_old_getrlimit # branch to system call
251
252ENTRY(compat_sys_getrlimit_wrapper)
253 llgfr %r2,%r2 # unsigned int
254 llgtr %r3,%r3 # struct rlimit_emu31 *
255 jg compat_sys_getrlimit # branch to system call
256
257ENTRY(sys32_mmap2_wrapper)
258 llgtr %r2,%r2 # struct mmap_arg_struct_emu31 *
259 jg sys32_mmap2 # branch to system call
260
261ENTRY(compat_sys_gettimeofday_wrapper)
262 llgtr %r2,%r2 # struct timeval_emu31 *
263 llgtr %r3,%r3 # struct timezone *
264 jg compat_sys_gettimeofday # branch to system call
265
266ENTRY(compat_sys_settimeofday_wrapper)
267 llgtr %r2,%r2 # struct timeval_emu31 *
268 llgtr %r3,%r3 # struct timezone *
269 jg compat_sys_settimeofday # branch to system call
270
271ENTRY(sys32_getgroups16_wrapper)
272 lgfr %r2,%r2 # int
273 llgtr %r3,%r3 # __kernel_old_gid_emu31_t *
274 jg sys32_getgroups16 # branch to system call
275
276ENTRY(sys32_setgroups16_wrapper)
277 lgfr %r2,%r2 # int
278 llgtr %r3,%r3 # __kernel_old_gid_emu31_t *
279 jg sys32_setgroups16 # branch to system call
280
281ENTRY(sys32_symlink_wrapper)
282 llgtr %r2,%r2 # const char *
283 llgtr %r3,%r3 # const char *
284 jg sys_symlink # branch to system call
285
286ENTRY(sys32_readlink_wrapper)
287 llgtr %r2,%r2 # const char *
288 llgtr %r3,%r3 # char *
289 lgfr %r4,%r4 # int
290 jg sys_readlink # branch to system call
291
292ENTRY(sys32_uselib_wrapper)
293 llgtr %r2,%r2 # const char *
294 jg sys_uselib # branch to system call
295
296ENTRY(sys32_swapon_wrapper)
297 llgtr %r2,%r2 # const char *
298 lgfr %r3,%r3 # int
299 jg sys_swapon # branch to system call
300
301ENTRY(sys32_reboot_wrapper)
302 lgfr %r2,%r2 # int
303 lgfr %r3,%r3 # int
304 llgfr %r4,%r4 # unsigned int
305 llgtr %r5,%r5 # void *
306 jg sys_reboot # branch to system call
307
308ENTRY(old32_readdir_wrapper)
309 llgfr %r2,%r2 # unsigned int
310 llgtr %r3,%r3 # void *
311 llgfr %r4,%r4 # unsigned int
312 jg compat_sys_old_readdir # branch to system call
313
314ENTRY(old32_mmap_wrapper)
315 llgtr %r2,%r2 # struct mmap_arg_struct_emu31 *
316 jg old32_mmap # branch to system call
317
318ENTRY(sys32_munmap_wrapper)
319 llgfr %r2,%r2 # unsigned long
320 llgfr %r3,%r3 # size_t
321 jg sys_munmap # branch to system call
322
323ENTRY(sys32_fchmod_wrapper)
324 llgfr %r2,%r2 # unsigned int
325 llgfr %r3,%r3 # mode_t
326 jg sys_fchmod # branch to system call
327
328ENTRY(sys32_fchown16_wrapper)
329 llgfr %r2,%r2 # unsigned int
330 llgfr %r3,%r3 # compat_uid_t
331 llgfr %r4,%r4 # compat_uid_t
332 jg sys32_fchown16 # branch to system call
333
334ENTRY(sys32_getpriority_wrapper)
335 lgfr %r2,%r2 # int
336 lgfr %r3,%r3 # int
337 jg sys_getpriority # branch to system call
338
339ENTRY(sys32_setpriority_wrapper)
340 lgfr %r2,%r2 # int
341 lgfr %r3,%r3 # int
342 lgfr %r4,%r4 # int
343 jg sys_setpriority # branch to system call
344
345ENTRY(compat_sys_statfs_wrapper)
346 llgtr %r2,%r2 # char *
347 llgtr %r3,%r3 # struct compat_statfs *
348 jg compat_sys_statfs # branch to system call
349
350ENTRY(compat_sys_fstatfs_wrapper)
351 llgfr %r2,%r2 # unsigned int
352 llgtr %r3,%r3 # struct compat_statfs *
353 jg compat_sys_fstatfs # branch to system call
354
355ENTRY(compat_sys_socketcall_wrapper)
356 lgfr %r2,%r2 # int
357 llgtr %r3,%r3 # u32 *
358 jg compat_sys_socketcall # branch to system call
359
360ENTRY(sys32_syslog_wrapper)
361 lgfr %r2,%r2 # int
362 llgtr %r3,%r3 # char *
363 lgfr %r4,%r4 # int
364 jg sys_syslog # branch to system call
365
366ENTRY(compat_sys_newstat_wrapper)
367 llgtr %r2,%r2 # char *
368 llgtr %r3,%r3 # struct stat_emu31 *
369 jg compat_sys_newstat # branch to system call
370
371ENTRY(compat_sys_newlstat_wrapper)
372 llgtr %r2,%r2 # char *
373 llgtr %r3,%r3 # struct stat_emu31 *
374 jg compat_sys_newlstat # branch to system call
375
376ENTRY(compat_sys_newfstat_wrapper)
377 llgfr %r2,%r2 # unsigned int
378 llgtr %r3,%r3 # struct stat_emu31 *
379 jg compat_sys_newfstat # branch to system call
380
381#sys32_vhangup_wrapper # void
382
383ENTRY(sys32_swapoff_wrapper)
384 llgtr %r2,%r2 # const char *
385 jg sys_swapoff # branch to system call
386
387ENTRY(compat_sys_sysinfo_wrapper)
388 llgtr %r2,%r2 # struct sysinfo_emu31 *
389 jg compat_sys_sysinfo # branch to system call
390
391ENTRY(sys32_fsync_wrapper)
392 llgfr %r2,%r2 # unsigned int
393 jg sys_fsync # branch to system call
394
395#sys32_sigreturn_wrapper # done in sigreturn_glue
396
397#sys32_clone_wrapper # done in clone_glue
398
399ENTRY(sys32_setdomainname_wrapper)
400 llgtr %r2,%r2 # char *
401 lgfr %r3,%r3 # int
402 jg sys_setdomainname # branch to system call
403
404ENTRY(sys32_newuname_wrapper)
405 llgtr %r2,%r2 # struct new_utsname *
406 jg sys_newuname # branch to system call
407
408ENTRY(compat_sys_adjtimex_wrapper)
409 llgtr %r2,%r2 # struct compat_timex *
410 jg compat_sys_adjtimex # branch to system call
411
412ENTRY(sys32_mprotect_wrapper)
413 llgtr %r2,%r2 # unsigned long (actually pointer
414 llgfr %r3,%r3 # size_t
415 llgfr %r4,%r4 # unsigned long
416 jg sys_mprotect # branch to system call
417
418ENTRY(sys_init_module_wrapper)
419 llgtr %r2,%r2 # void *
420 llgfr %r3,%r3 # unsigned long
421 llgtr %r4,%r4 # char *
422 jg sys_init_module # branch to system call
423
424ENTRY(sys_delete_module_wrapper)
425 llgtr %r2,%r2 # const char *
426 llgfr %r3,%r3 # unsigned int
427 jg sys_delete_module # branch to system call
428
429ENTRY(sys32_quotactl_wrapper)
430 llgfr %r2,%r2 # unsigned int
431 llgtr %r3,%r3 # const char *
432 llgfr %r4,%r4 # qid_t
433 llgtr %r5,%r5 # caddr_t
434 jg sys_quotactl # branch to system call
435
436ENTRY(sys32_getpgid_wrapper)
437 lgfr %r2,%r2 # pid_t
438 jg sys_getpgid # branch to system call
439
440ENTRY(sys32_fchdir_wrapper)
441 llgfr %r2,%r2 # unsigned int
442 jg sys_fchdir # branch to system call
443
444ENTRY(sys32_bdflush_wrapper)
445 lgfr %r2,%r2 # int
446 lgfr %r3,%r3 # long
447 jg sys_bdflush # branch to system call
448
449ENTRY(sys32_sysfs_wrapper)
450 lgfr %r2,%r2 # int
451 llgfr %r3,%r3 # unsigned long
452 llgfr %r4,%r4 # unsigned long
453 jg sys_sysfs # branch to system call
454
455ENTRY(sys32_personality_wrapper)
456 llgfr %r2,%r2 # unsigned int
457 jg sys_s390_personality # branch to system call
458
459ENTRY(sys32_setfsuid16_wrapper)
460 llgfr %r2,%r2 # __kernel_old_uid_emu31_t
461 jg sys32_setfsuid16 # branch to system call
462
463ENTRY(sys32_setfsgid16_wrapper)
464 llgfr %r2,%r2 # __kernel_old_gid_emu31_t
465 jg sys32_setfsgid16 # branch to system call
466
467ENTRY(sys32_llseek_wrapper)
468 llgfr %r2,%r2 # unsigned int
469 llgfr %r3,%r3 # unsigned long
470 llgfr %r4,%r4 # unsigned long
471 llgtr %r5,%r5 # loff_t *
472 llgfr %r6,%r6 # unsigned int
473 jg sys_llseek # branch to system call
474
475ENTRY(sys32_getdents_wrapper)
476 llgfr %r2,%r2 # unsigned int
477 llgtr %r3,%r3 # void *
478 llgfr %r4,%r4 # unsigned int
479 jg compat_sys_getdents # branch to system call
480
481ENTRY(compat_sys_select_wrapper)
482 lgfr %r2,%r2 # int
483 llgtr %r3,%r3 # compat_fd_set *
484 llgtr %r4,%r4 # compat_fd_set *
485 llgtr %r5,%r5 # compat_fd_set *
486 llgtr %r6,%r6 # struct compat_timeval *
487 jg compat_sys_select # branch to system call
488
489ENTRY(sys32_flock_wrapper)
490 llgfr %r2,%r2 # unsigned int
491 llgfr %r3,%r3 # unsigned int
492 jg sys_flock # branch to system call
493
494ENTRY(sys32_msync_wrapper)
495 llgfr %r2,%r2 # unsigned long
496 llgfr %r3,%r3 # size_t
497 lgfr %r4,%r4 # int
498 jg sys_msync # branch to system call
499
500ENTRY(compat_sys_readv_wrapper)
501 lgfr %r2,%r2 # int
502 llgtr %r3,%r3 # const struct compat_iovec *
503 llgfr %r4,%r4 # unsigned long
504 jg compat_sys_readv # branch to system call
505
506ENTRY(compat_sys_writev_wrapper)
507 lgfr %r2,%r2 # int
508 llgtr %r3,%r3 # const struct compat_iovec *
509 llgfr %r4,%r4 # unsigned long
510 jg compat_sys_writev # branch to system call
511
512ENTRY(sys32_getsid_wrapper)
513 lgfr %r2,%r2 # pid_t
514 jg sys_getsid # branch to system call
515
516ENTRY(sys32_fdatasync_wrapper)
517 llgfr %r2,%r2 # unsigned int
518 jg sys_fdatasync # branch to system call
519
520ENTRY(sys32_mlock_wrapper)
521 llgfr %r2,%r2 # unsigned long
522 llgfr %r3,%r3 # size_t
523 jg sys_mlock # branch to system call
524
525ENTRY(sys32_munlock_wrapper)
526 llgfr %r2,%r2 # unsigned long
527 llgfr %r3,%r3 # size_t
528 jg sys_munlock # branch to system call
529
530ENTRY(sys32_mlockall_wrapper)
531 lgfr %r2,%r2 # int
532 jg sys_mlockall # branch to system call
533
534#sys32_munlockall_wrapper # void
535
536ENTRY(sys32_sched_setparam_wrapper)
537 lgfr %r2,%r2 # pid_t
538 llgtr %r3,%r3 # struct sched_param *
539 jg sys_sched_setparam # branch to system call
540
541ENTRY(sys32_sched_getparam_wrapper)
542 lgfr %r2,%r2 # pid_t
543 llgtr %r3,%r3 # struct sched_param *
544 jg sys_sched_getparam # branch to system call
545
546ENTRY(sys32_sched_setscheduler_wrapper)
547 lgfr %r2,%r2 # pid_t
548 lgfr %r3,%r3 # int
549 llgtr %r4,%r4 # struct sched_param *
550 jg sys_sched_setscheduler # branch to system call
551
552ENTRY(sys32_sched_getscheduler_wrapper)
553 lgfr %r2,%r2 # pid_t
554 jg sys_sched_getscheduler # branch to system call
555
556#sys32_sched_yield_wrapper # void
557
558ENTRY(sys32_sched_get_priority_max_wrapper)
559 lgfr %r2,%r2 # int
560 jg sys_sched_get_priority_max # branch to system call
561
562ENTRY(sys32_sched_get_priority_min_wrapper)
563 lgfr %r2,%r2 # int
564 jg sys_sched_get_priority_min # branch to system call
565
566ENTRY(compat_sys_nanosleep_wrapper)
567 llgtr %r2,%r2 # struct compat_timespec *
568 llgtr %r3,%r3 # struct compat_timespec *
569 jg compat_sys_nanosleep # branch to system call
570
571ENTRY(sys32_mremap_wrapper)
572 llgfr %r2,%r2 # unsigned long
573 llgfr %r3,%r3 # unsigned long
574 llgfr %r4,%r4 # unsigned long
575 llgfr %r5,%r5 # unsigned long
576 llgfr %r6,%r6 # unsigned long
577 jg sys_mremap # branch to system call
578
579ENTRY(sys32_setresuid16_wrapper)
580 llgfr %r2,%r2 # __kernel_old_uid_emu31_t
581 llgfr %r3,%r3 # __kernel_old_uid_emu31_t
582 llgfr %r4,%r4 # __kernel_old_uid_emu31_t
583 jg sys32_setresuid16 # branch to system call
584
585ENTRY(sys32_getresuid16_wrapper)
586 llgtr %r2,%r2 # __kernel_old_uid_emu31_t *
587 llgtr %r3,%r3 # __kernel_old_uid_emu31_t *
588 llgtr %r4,%r4 # __kernel_old_uid_emu31_t *
589 jg sys32_getresuid16 # branch to system call
590
591ENTRY(sys32_poll_wrapper)
592 llgtr %r2,%r2 # struct pollfd *
593 llgfr %r3,%r3 # unsigned int
594 lgfr %r4,%r4 # int
595 jg sys_poll # branch to system call
596
597ENTRY(sys32_setresgid16_wrapper)
598 llgfr %r2,%r2 # __kernel_old_gid_emu31_t
599 llgfr %r3,%r3 # __kernel_old_gid_emu31_t
600 llgfr %r4,%r4 # __kernel_old_gid_emu31_t
601 jg sys32_setresgid16 # branch to system call
602
603ENTRY(sys32_getresgid16_wrapper)
604 llgtr %r2,%r2 # __kernel_old_gid_emu31_t *
605 llgtr %r3,%r3 # __kernel_old_gid_emu31_t *
606 llgtr %r4,%r4 # __kernel_old_gid_emu31_t *
607 jg sys32_getresgid16 # branch to system call
608
609ENTRY(sys32_prctl_wrapper)
610 lgfr %r2,%r2 # int
611 llgfr %r3,%r3 # unsigned long
612 llgfr %r4,%r4 # unsigned long
613 llgfr %r5,%r5 # unsigned long
614 llgfr %r6,%r6 # unsigned long
615 jg sys_prctl # branch to system call
616
617#sys32_rt_sigreturn_wrapper # done in rt_sigreturn_glue
618
619ENTRY(sys32_pread64_wrapper)
620 llgfr %r2,%r2 # unsigned int
621 llgtr %r3,%r3 # char *
622 llgfr %r4,%r4 # size_t
623 llgfr %r5,%r5 # u32
624 llgfr %r6,%r6 # u32
625 jg sys32_pread64 # branch to system call
626
627ENTRY(sys32_pwrite64_wrapper)
628 llgfr %r2,%r2 # unsigned int
629 llgtr %r3,%r3 # const char *
630 llgfr %r4,%r4 # size_t
631 llgfr %r5,%r5 # u32
632 llgfr %r6,%r6 # u32
633 jg sys32_pwrite64 # branch to system call
634
635ENTRY(sys32_chown16_wrapper)
636 llgtr %r2,%r2 # const char *
637 llgfr %r3,%r3 # __kernel_old_uid_emu31_t
638 llgfr %r4,%r4 # __kernel_old_gid_emu31_t
639 jg sys32_chown16 # branch to system call
640
641ENTRY(sys32_getcwd_wrapper)
642 llgtr %r2,%r2 # char *
643 llgfr %r3,%r3 # unsigned long
644 jg sys_getcwd # branch to system call
645
646ENTRY(sys32_capget_wrapper)
647 llgtr %r2,%r2 # cap_user_header_t
648 llgtr %r3,%r3 # cap_user_data_t
649 jg sys_capget # branch to system call
650
651ENTRY(sys32_capset_wrapper)
652 llgtr %r2,%r2 # cap_user_header_t
653 llgtr %r3,%r3 # const cap_user_data_t
654 jg sys_capset # branch to system call
655
656#sys32_vfork_wrapper # done in vfork_glue
657
658ENTRY(sys32_truncate64_wrapper)
659 llgtr %r2,%r2 # const char *
660 llgfr %r3,%r3 # unsigned long
661 llgfr %r4,%r4 # unsigned long
662 jg sys32_truncate64 # branch to system call
663
664ENTRY(sys32_ftruncate64_wrapper)
665 llgfr %r2,%r2 # unsigned int
666 llgfr %r3,%r3 # unsigned long
667 llgfr %r4,%r4 # unsigned long
668 jg sys32_ftruncate64 # branch to system call
669
670ENTRY(sys32_lchown_wrapper)
671 llgtr %r2,%r2 # const char *
672 llgfr %r3,%r3 # uid_t
673 llgfr %r4,%r4 # gid_t
674 jg sys_lchown # branch to system call
675
676#sys32_getuid_wrapper # void
677#sys32_getgid_wrapper # void
678#sys32_geteuid_wrapper # void
679#sys32_getegid_wrapper # void
680
681ENTRY(sys32_setreuid_wrapper)
682 llgfr %r2,%r2 # uid_t
683 llgfr %r3,%r3 # uid_t
684 jg sys_setreuid # branch to system call
685
686ENTRY(sys32_setregid_wrapper)
687 llgfr %r2,%r2 # gid_t
688 llgfr %r3,%r3 # gid_t
689 jg sys_setregid # branch to system call
690
691ENTRY(sys32_getgroups_wrapper)
692 lgfr %r2,%r2 # int
693 llgtr %r3,%r3 # gid_t *
694 jg sys_getgroups # branch to system call
695
696ENTRY(sys32_setgroups_wrapper)
697 lgfr %r2,%r2 # int
698 llgtr %r3,%r3 # gid_t *
699 jg sys_setgroups # branch to system call
700
701ENTRY(sys32_fchown_wrapper)
702 llgfr %r2,%r2 # unsigned int
703 llgfr %r3,%r3 # uid_t
704 llgfr %r4,%r4 # gid_t
705 jg sys_fchown # branch to system call
706
707ENTRY(sys32_setresuid_wrapper)
708 llgfr %r2,%r2 # uid_t
709 llgfr %r3,%r3 # uid_t
710 llgfr %r4,%r4 # uid_t
711 jg sys_setresuid # branch to system call
712
713ENTRY(sys32_getresuid_wrapper)
714 llgtr %r2,%r2 # uid_t *
715 llgtr %r3,%r3 # uid_t *
716 llgtr %r4,%r4 # uid_t *
717 jg sys_getresuid # branch to system call
718
719ENTRY(sys32_setresgid_wrapper)
720 llgfr %r2,%r2 # gid_t
721 llgfr %r3,%r3 # gid_t
722 llgfr %r4,%r4 # gid_t
723 jg sys_setresgid # branch to system call
724
725ENTRY(sys32_getresgid_wrapper)
726 llgtr %r2,%r2 # gid_t *
727 llgtr %r3,%r3 # gid_t *
728 llgtr %r4,%r4 # gid_t *
729 jg sys_getresgid # branch to system call
730
731ENTRY(sys32_chown_wrapper)
732 llgtr %r2,%r2 # const char *
733 llgfr %r3,%r3 # uid_t
734 llgfr %r4,%r4 # gid_t
735 jg sys_chown # branch to system call
736
737ENTRY(sys32_setuid_wrapper)
738 llgfr %r2,%r2 # uid_t
739 jg sys_setuid # branch to system call
740
741ENTRY(sys32_setgid_wrapper)
742 llgfr %r2,%r2 # gid_t
743 jg sys_setgid # branch to system call
744
745ENTRY(sys32_setfsuid_wrapper)
746 llgfr %r2,%r2 # uid_t
747 jg sys_setfsuid # branch to system call
748
749ENTRY(sys32_setfsgid_wrapper)
750 llgfr %r2,%r2 # gid_t
751 jg sys_setfsgid # branch to system call
752
753ENTRY(sys32_pivot_root_wrapper)
754 llgtr %r2,%r2 # const char *
755 llgtr %r3,%r3 # const char *
756 jg sys_pivot_root # branch to system call
757
758ENTRY(sys32_mincore_wrapper)
759 llgfr %r2,%r2 # unsigned long
760 llgfr %r3,%r3 # size_t
761 llgtr %r4,%r4 # unsigned char *
762 jg sys_mincore # branch to system call
763
764ENTRY(sys32_madvise_wrapper)
765 llgfr %r2,%r2 # unsigned long
766 llgfr %r3,%r3 # size_t
767 lgfr %r4,%r4 # int
768 jg sys_madvise # branch to system call
769
770ENTRY(sys32_getdents64_wrapper)
771 llgfr %r2,%r2 # unsigned int
772 llgtr %r3,%r3 # void *
773 llgfr %r4,%r4 # unsigned int
774 jg sys_getdents64 # branch to system call
775
776ENTRY(compat_sys_fcntl64_wrapper)
777 llgfr %r2,%r2 # unsigned int
778 llgfr %r3,%r3 # unsigned int
779 llgfr %r4,%r4 # unsigned long
780 jg compat_sys_fcntl64 # branch to system call
781
782ENTRY(sys32_stat64_wrapper)
783 llgtr %r2,%r2 # char *
784 llgtr %r3,%r3 # struct stat64 *
785 jg sys32_stat64 # branch to system call
786
787ENTRY(sys32_lstat64_wrapper)
788 llgtr %r2,%r2 # char *
789 llgtr %r3,%r3 # struct stat64 *
790 jg sys32_lstat64 # branch to system call
791
792ENTRY(sys32_stime_wrapper)
793 llgtr %r2,%r2 # long *
794 jg compat_sys_stime # branch to system call
795
796ENTRY(sys32_fstat64_wrapper)
797 llgfr %r2,%r2 # unsigned long
798 llgtr %r3,%r3 # struct stat64 *
799 jg sys32_fstat64 # branch to system call
800
801ENTRY(sys32_setxattr_wrapper)
802 llgtr %r2,%r2 # char *
803 llgtr %r3,%r3 # char *
804 llgtr %r4,%r4 # void *
805 llgfr %r5,%r5 # size_t
806 lgfr %r6,%r6 # int
807 jg sys_setxattr
808
809ENTRY(sys32_lsetxattr_wrapper)
810 llgtr %r2,%r2 # char *
811 llgtr %r3,%r3 # char *
812 llgtr %r4,%r4 # void *
813 llgfr %r5,%r5 # size_t
814 lgfr %r6,%r6 # int
815 jg sys_lsetxattr
816
817ENTRY(sys32_fsetxattr_wrapper)
818 lgfr %r2,%r2 # int
819 llgtr %r3,%r3 # char *
820 llgtr %r4,%r4 # void *
821 llgfr %r5,%r5 # size_t
822 lgfr %r6,%r6 # int
823 jg sys_fsetxattr
824
825ENTRY(sys32_getxattr_wrapper)
826 llgtr %r2,%r2 # char *
827 llgtr %r3,%r3 # char *
828 llgtr %r4,%r4 # void *
829 llgfr %r5,%r5 # size_t
830 jg sys_getxattr
831
832ENTRY(sys32_lgetxattr_wrapper)
833 llgtr %r2,%r2 # char *
834 llgtr %r3,%r3 # char *
835 llgtr %r4,%r4 # void *
836 llgfr %r5,%r5 # size_t
837 jg sys_lgetxattr
838
839ENTRY(sys32_fgetxattr_wrapper)
840 lgfr %r2,%r2 # int
841 llgtr %r3,%r3 # char *
842 llgtr %r4,%r4 # void *
843 llgfr %r5,%r5 # size_t
844 jg sys_fgetxattr
845
846ENTRY(sys32_listxattr_wrapper)
847 llgtr %r2,%r2 # char *
848 llgtr %r3,%r3 # char *
849 llgfr %r4,%r4 # size_t
850 jg sys_listxattr
851
852ENTRY(sys32_llistxattr_wrapper)
853 llgtr %r2,%r2 # char *
854 llgtr %r3,%r3 # char *
855 llgfr %r4,%r4 # size_t
856 jg sys_llistxattr
857
858ENTRY(sys32_flistxattr_wrapper)
859 lgfr %r2,%r2 # int
860 llgtr %r3,%r3 # char *
861 llgfr %r4,%r4 # size_t
862 jg sys_flistxattr
863
864ENTRY(sys32_removexattr_wrapper)
865 llgtr %r2,%r2 # char *
866 llgtr %r3,%r3 # char *
867 jg sys_removexattr
868
869ENTRY(sys32_lremovexattr_wrapper)
870 llgtr %r2,%r2 # char *
871 llgtr %r3,%r3 # char *
872 jg sys_lremovexattr
873
874ENTRY(sys32_fremovexattr_wrapper)
875 lgfr %r2,%r2 # int
876 llgtr %r3,%r3 # char *
877 jg sys_fremovexattr
878
879ENTRY(sys32_sched_setaffinity_wrapper)
880 lgfr %r2,%r2 # int
881 llgfr %r3,%r3 # unsigned int
882 llgtr %r4,%r4 # unsigned long *
883 jg compat_sys_sched_setaffinity
884
885ENTRY(sys32_sched_getaffinity_wrapper)
886 lgfr %r2,%r2 # int
887 llgfr %r3,%r3 # unsigned int
888 llgtr %r4,%r4 # unsigned long *
889 jg compat_sys_sched_getaffinity
890
891ENTRY(sys32_exit_group_wrapper)
892 lgfr %r2,%r2 # int
893 jg sys_exit_group # branch to system call
894
895ENTRY(sys32_set_tid_address_wrapper)
896 llgtr %r2,%r2 # int *
897 jg sys_set_tid_address # branch to system call
898
899ENTRY(sys_epoll_create_wrapper)
900 lgfr %r2,%r2 # int
901 jg sys_epoll_create # branch to system call
902
903ENTRY(sys_epoll_ctl_wrapper)
904 lgfr %r2,%r2 # int
905 lgfr %r3,%r3 # int
906 lgfr %r4,%r4 # int
907 llgtr %r5,%r5 # struct epoll_event *
908 jg sys_epoll_ctl # branch to system call
909
910ENTRY(sys_epoll_wait_wrapper)
911 lgfr %r2,%r2 # int
912 llgtr %r3,%r3 # struct epoll_event *
913 lgfr %r4,%r4 # int
914 lgfr %r5,%r5 # int
915 jg sys_epoll_wait # branch to system call
916
917ENTRY(sys32_fadvise64_wrapper)
918 lgfr %r2,%r2 # int
919 sllg %r3,%r3,32 # get high word of 64bit loff_t
920 or %r3,%r4 # get low word of 64bit loff_t
921 llgfr %r4,%r5 # size_t (unsigned long)
922 lgfr %r5,%r6 # int
923 jg sys32_fadvise64
924
925ENTRY(sys32_fadvise64_64_wrapper)
926 llgtr %r2,%r2 # struct fadvise64_64_args *
927 jg sys32_fadvise64_64
928
929ENTRY(sys32_clock_settime_wrapper)
930 lgfr %r2,%r2 # clockid_t (int)
931 llgtr %r3,%r3 # struct compat_timespec *
932 jg compat_sys_clock_settime
933
934ENTRY(sys32_clock_gettime_wrapper)
935 lgfr %r2,%r2 # clockid_t (int)
936 llgtr %r3,%r3 # struct compat_timespec *
937 jg compat_sys_clock_gettime
938
939ENTRY(sys32_clock_getres_wrapper)
940 lgfr %r2,%r2 # clockid_t (int)
941 llgtr %r3,%r3 # struct compat_timespec *
942 jg compat_sys_clock_getres
943
944ENTRY(sys32_clock_nanosleep_wrapper)
945 lgfr %r2,%r2 # clockid_t (int)
946 lgfr %r3,%r3 # int
947 llgtr %r4,%r4 # struct compat_timespec *
948 llgtr %r5,%r5 # struct compat_timespec *
949 jg compat_sys_clock_nanosleep
950
951ENTRY(sys32_timer_create_wrapper)
952 lgfr %r2,%r2 # timer_t (int)
953 llgtr %r3,%r3 # struct compat_sigevent *
954 llgtr %r4,%r4 # timer_t *
955 jg compat_sys_timer_create
956
957ENTRY(sys32_timer_settime_wrapper)
958 lgfr %r2,%r2 # timer_t (int)
959 lgfr %r3,%r3 # int
960 llgtr %r4,%r4 # struct compat_itimerspec *
961 llgtr %r5,%r5 # struct compat_itimerspec *
962 jg compat_sys_timer_settime
963
964ENTRY(sys32_timer_gettime_wrapper)
965 lgfr %r2,%r2 # timer_t (int)
966 llgtr %r3,%r3 # struct compat_itimerspec *
967 jg compat_sys_timer_gettime
968
969ENTRY(sys32_timer_getoverrun_wrapper)
970 lgfr %r2,%r2 # timer_t (int)
971 jg sys_timer_getoverrun
972
973ENTRY(sys32_timer_delete_wrapper)
974 lgfr %r2,%r2 # timer_t (int)
975 jg sys_timer_delete
976
977ENTRY(sys32_io_setup_wrapper)
978 llgfr %r2,%r2 # unsigned int
979 llgtr %r3,%r3 # u32 *
980 jg compat_sys_io_setup
981
982ENTRY(sys32_io_destroy_wrapper)
983 llgfr %r2,%r2 # (aio_context_t) u32
984 jg sys_io_destroy
985
986ENTRY(sys32_io_getevents_wrapper)
987 llgfr %r2,%r2 # (aio_context_t) u32
988 lgfr %r3,%r3 # long
989 lgfr %r4,%r4 # long
990 llgtr %r5,%r5 # struct io_event *
991 llgtr %r6,%r6 # struct compat_timespec *
992 jg compat_sys_io_getevents
993
994ENTRY(sys32_io_submit_wrapper)
995 llgfr %r2,%r2 # (aio_context_t) u32
996 lgfr %r3,%r3 # long
997 llgtr %r4,%r4 # struct iocb **
998 jg compat_sys_io_submit
999
1000ENTRY(sys32_io_cancel_wrapper)
1001 llgfr %r2,%r2 # (aio_context_t) u32
1002 llgtr %r3,%r3 # struct iocb *
1003 llgtr %r4,%r4 # struct io_event *
1004 jg sys_io_cancel
1005
1006ENTRY(compat_sys_statfs64_wrapper)
1007 llgtr %r2,%r2 # const char *
1008 llgfr %r3,%r3 # compat_size_t
1009 llgtr %r4,%r4 # struct compat_statfs64 *
1010 jg compat_sys_statfs64
1011
1012ENTRY(compat_sys_fstatfs64_wrapper)
1013 llgfr %r2,%r2 # unsigned int fd
1014 llgfr %r3,%r3 # compat_size_t
1015 llgtr %r4,%r4 # struct compat_statfs64 *
1016 jg compat_sys_fstatfs64
1017
1018ENTRY(compat_sys_mq_open_wrapper)
1019 llgtr %r2,%r2 # const char *
1020 lgfr %r3,%r3 # int
1021 llgfr %r4,%r4 # mode_t
1022 llgtr %r5,%r5 # struct compat_mq_attr *
1023 jg compat_sys_mq_open
1024
1025ENTRY(sys32_mq_unlink_wrapper)
1026 llgtr %r2,%r2 # const char *
1027 jg sys_mq_unlink
1028
1029ENTRY(compat_sys_mq_timedsend_wrapper)
1030 lgfr %r2,%r2 # mqd_t
1031 llgtr %r3,%r3 # const char *
1032 llgfr %r4,%r4 # size_t
1033 llgfr %r5,%r5 # unsigned int
1034 llgtr %r6,%r6 # const struct compat_timespec *
1035 jg compat_sys_mq_timedsend
1036
1037ENTRY(compat_sys_mq_timedreceive_wrapper)
1038 lgfr %r2,%r2 # mqd_t
1039 llgtr %r3,%r3 # char *
1040 llgfr %r4,%r4 # size_t
1041 llgtr %r5,%r5 # unsigned int *
1042 llgtr %r6,%r6 # const struct compat_timespec *
1043 jg compat_sys_mq_timedreceive
1044
1045ENTRY(compat_sys_mq_notify_wrapper)
1046 lgfr %r2,%r2 # mqd_t
1047 llgtr %r3,%r3 # struct compat_sigevent *
1048 jg compat_sys_mq_notify
1049
1050ENTRY(compat_sys_mq_getsetattr_wrapper)
1051 lgfr %r2,%r2 # mqd_t
1052 llgtr %r3,%r3 # struct compat_mq_attr *
1053 llgtr %r4,%r4 # struct compat_mq_attr *
1054 jg compat_sys_mq_getsetattr
1055
1056ENTRY(compat_sys_add_key_wrapper)
1057 llgtr %r2,%r2 # const char *
1058 llgtr %r3,%r3 # const char *
1059 llgtr %r4,%r4 # const void *
1060 llgfr %r5,%r5 # size_t
1061 llgfr %r6,%r6 # (key_serial_t) u32
1062 jg sys_add_key
1063
1064ENTRY(compat_sys_request_key_wrapper)
1065 llgtr %r2,%r2 # const char *
1066 llgtr %r3,%r3 # const char *
1067 llgtr %r4,%r4 # const void *
1068 llgfr %r5,%r5 # (key_serial_t) u32
1069 jg sys_request_key
1070
1071ENTRY(sys32_remap_file_pages_wrapper)
1072 llgfr %r2,%r2 # unsigned long
1073 llgfr %r3,%r3 # unsigned long
1074 llgfr %r4,%r4 # unsigned long
1075 llgfr %r5,%r5 # unsigned long
1076 llgfr %r6,%r6 # unsigned long
1077 jg sys_remap_file_pages
1078
1079ENTRY(compat_sys_kexec_load_wrapper)
1080 llgfr %r2,%r2 # unsigned long
1081 llgfr %r3,%r3 # unsigned long
1082 llgtr %r4,%r4 # struct kexec_segment *
1083 llgfr %r5,%r5 # unsigned long
1084 jg compat_sys_kexec_load
1085
1086ENTRY(sys_ioprio_set_wrapper)
1087 lgfr %r2,%r2 # int
1088 lgfr %r3,%r3 # int
1089 lgfr %r4,%r4 # int
1090 jg sys_ioprio_set
1091
1092ENTRY(sys_ioprio_get_wrapper)
1093 lgfr %r2,%r2 # int
1094 lgfr %r3,%r3 # int
1095 jg sys_ioprio_get
1096
1097ENTRY(sys_inotify_add_watch_wrapper)
1098 lgfr %r2,%r2 # int
1099 llgtr %r3,%r3 # const char *
1100 llgfr %r4,%r4 # u32
1101 jg sys_inotify_add_watch
1102
1103ENTRY(sys_inotify_rm_watch_wrapper)
1104 lgfr %r2,%r2 # int
1105 llgfr %r3,%r3 # u32
1106 jg sys_inotify_rm_watch
1107
1108ENTRY(sys_mkdirat_wrapper)
1109 lgfr %r2,%r2 # int
1110 llgtr %r3,%r3 # const char *
1111 lgfr %r4,%r4 # int
1112 jg sys_mkdirat
1113
1114ENTRY(sys_mknodat_wrapper)
1115 lgfr %r2,%r2 # int
1116 llgtr %r3,%r3 # const char *
1117 lgfr %r4,%r4 # int
1118 llgfr %r5,%r5 # unsigned int
1119 jg sys_mknodat
1120
1121ENTRY(sys_fchownat_wrapper)
1122 lgfr %r2,%r2 # int
1123 llgtr %r3,%r3 # const char *
1124 llgfr %r4,%r4 # uid_t
1125 llgfr %r5,%r5 # gid_t
1126 lgfr %r6,%r6 # int
1127 jg sys_fchownat
1128
1129ENTRY(compat_sys_futimesat_wrapper)
1130 llgfr %r2,%r2 # unsigned int
1131 llgtr %r3,%r3 # char *
1132 llgtr %r4,%r4 # struct timeval *
1133 jg compat_sys_futimesat
1134
1135ENTRY(sys32_fstatat64_wrapper)
1136 llgfr %r2,%r2 # unsigned int
1137 llgtr %r3,%r3 # char *
1138 llgtr %r4,%r4 # struct stat64 *
1139 lgfr %r5,%r5 # int
1140 jg sys32_fstatat64
1141
1142ENTRY(sys_unlinkat_wrapper)
1143 lgfr %r2,%r2 # int
1144 llgtr %r3,%r3 # const char *
1145 lgfr %r4,%r4 # int
1146 jg sys_unlinkat
1147
1148ENTRY(sys_renameat_wrapper)
1149 lgfr %r2,%r2 # int
1150 llgtr %r3,%r3 # const char *
1151 lgfr %r4,%r4 # int
1152 llgtr %r5,%r5 # const char *
1153 jg sys_renameat
1154
1155ENTRY(sys_linkat_wrapper)
1156 lgfr %r2,%r2 # int
1157 llgtr %r3,%r3 # const char *
1158 lgfr %r4,%r4 # int
1159 llgtr %r5,%r5 # const char *
1160 lgfr %r6,%r6 # int
1161 jg sys_linkat
1162
1163ENTRY(sys_symlinkat_wrapper)
1164 llgtr %r2,%r2 # const char *
1165 lgfr %r3,%r3 # int
1166 llgtr %r4,%r4 # const char *
1167 jg sys_symlinkat
1168
1169ENTRY(sys_readlinkat_wrapper)
1170 lgfr %r2,%r2 # int
1171 llgtr %r3,%r3 # const char *
1172 llgtr %r4,%r4 # char *
1173 lgfr %r5,%r5 # int
1174 jg sys_readlinkat
1175
1176ENTRY(sys_fchmodat_wrapper)
1177 lgfr %r2,%r2 # int
1178 llgtr %r3,%r3 # const char *
1179 llgfr %r4,%r4 # mode_t
1180 jg sys_fchmodat
1181
1182ENTRY(sys_faccessat_wrapper)
1183 lgfr %r2,%r2 # int
1184 llgtr %r3,%r3 # const char *
1185 lgfr %r4,%r4 # int
1186 jg sys_faccessat
1187
1188ENTRY(compat_sys_pselect6_wrapper)
1189 lgfr %r2,%r2 # int
1190 llgtr %r3,%r3 # fd_set *
1191 llgtr %r4,%r4 # fd_set *
1192 llgtr %r5,%r5 # fd_set *
1193 llgtr %r6,%r6 # struct timespec *
1194 llgt %r0,164(%r15) # void *
1195 stg %r0,160(%r15)
1196 jg compat_sys_pselect6
1197
1198ENTRY(compat_sys_ppoll_wrapper)
1199 llgtr %r2,%r2 # struct pollfd *
1200 llgfr %r3,%r3 # unsigned int
1201 llgtr %r4,%r4 # struct timespec *
1202 llgtr %r5,%r5 # const sigset_t *
1203 llgfr %r6,%r6 # size_t
1204 jg compat_sys_ppoll
1205
1206ENTRY(sys_unshare_wrapper)
1207 llgfr %r2,%r2 # unsigned long
1208 jg sys_unshare
1209
1210ENTRY(sys_splice_wrapper)
1211 lgfr %r2,%r2 # int
1212 llgtr %r3,%r3 # loff_t *
1213 lgfr %r4,%r4 # int
1214 llgtr %r5,%r5 # loff_t *
1215 llgfr %r6,%r6 # size_t
1216 llgf %r0,164(%r15) # unsigned int
1217 stg %r0,160(%r15)
1218 jg sys_splice
1219
1220ENTRY(sys_sync_file_range_wrapper)
1221 lgfr %r2,%r2 # int
1222 sllg %r3,%r3,32 # get high word of 64bit loff_t
1223 or %r3,%r4 # get low word of 64bit loff_t
1224 sllg %r4,%r5,32 # get high word of 64bit loff_t
1225 or %r4,%r6 # get low word of 64bit loff_t
1226 llgf %r5,164(%r15) # unsigned int
1227 jg sys_sync_file_range
1228
1229ENTRY(sys_tee_wrapper)
1230 lgfr %r2,%r2 # int
1231 lgfr %r3,%r3 # int
1232 llgfr %r4,%r4 # size_t
1233 llgfr %r5,%r5 # unsigned int
1234 jg sys_tee
1235
1236ENTRY(sys_getcpu_wrapper)
1237 llgtr %r2,%r2 # unsigned *
1238 llgtr %r3,%r3 # unsigned *
1239 llgtr %r4,%r4 # struct getcpu_cache *
1240 jg sys_getcpu
1241
1242ENTRY(compat_sys_utimes_wrapper)
1243 llgtr %r2,%r2 # char *
1244 llgtr %r3,%r3 # struct compat_timeval *
1245 jg compat_sys_utimes
1246
1247ENTRY(compat_sys_utimensat_wrapper)
1248 llgfr %r2,%r2 # unsigned int
1249 llgtr %r3,%r3 # char *
1250 llgtr %r4,%r4 # struct compat_timespec *
1251 lgfr %r5,%r5 # int
1252 jg compat_sys_utimensat
1253
1254ENTRY(sys_eventfd_wrapper)
1255 llgfr %r2,%r2 # unsigned int
1256 jg sys_eventfd
1257
1258ENTRY(sys_fallocate_wrapper)
1259 lgfr %r2,%r2 # int
1260 lgfr %r3,%r3 # int
1261 sllg %r4,%r4,32 # get high word of 64bit loff_t
1262 lr %r4,%r5 # get low word of 64bit loff_t
1263 sllg %r5,%r6,32 # get high word of 64bit loff_t
1264 l %r5,164(%r15) # get low word of 64bit loff_t
1265 jg sys_fallocate
1266
1267ENTRY(sys_timerfd_create_wrapper)
1268 lgfr %r2,%r2 # int
1269 lgfr %r3,%r3 # int
1270 jg sys_timerfd_create
1271
1272ENTRY(sys_eventfd2_wrapper)
1273 llgfr %r2,%r2 # unsigned int
1274 lgfr %r3,%r3 # int
1275 jg sys_eventfd2
1276
1277ENTRY(sys_inotify_init1_wrapper)
1278 lgfr %r2,%r2 # int
1279 jg sys_inotify_init1
1280
1281ENTRY(sys_pipe2_wrapper)
1282 llgtr %r2,%r2 # u32 *
1283 lgfr %r3,%r3 # int
1284 jg sys_pipe2 # branch to system call
1285
1286ENTRY(sys_dup3_wrapper)
1287 llgfr %r2,%r2 # unsigned int
1288 llgfr %r3,%r3 # unsigned int
1289 lgfr %r4,%r4 # int
1290 jg sys_dup3 # branch to system call
1291
1292ENTRY(sys_epoll_create1_wrapper)
1293 lgfr %r2,%r2 # int
1294 jg sys_epoll_create1 # branch to system call
1295
1296ENTRY(sys32_readahead_wrapper)
1297 lgfr %r2,%r2 # int
1298 llgfr %r3,%r3 # u32
1299 llgfr %r4,%r4 # u32
1300 lgfr %r5,%r5 # s32
1301 jg sys32_readahead # branch to system call
1302
1303ENTRY(sys_tkill_wrapper)
1304 lgfr %r2,%r2 # pid_t
1305 lgfr %r3,%r3 # int
1306 jg sys_tkill # branch to system call
1307
1308ENTRY(sys_tgkill_wrapper)
1309 lgfr %r2,%r2 # pid_t
1310 lgfr %r3,%r3 # pid_t
1311 lgfr %r4,%r4 # int
1312 jg sys_tgkill # branch to system call
1313
1314ENTRY(compat_sys_keyctl_wrapper)
1315 llgfr %r2,%r2 # u32
1316 llgfr %r3,%r3 # u32
1317 llgfr %r4,%r4 # u32
1318 llgfr %r5,%r5 # u32
1319 llgfr %r6,%r6 # u32
1320 jg compat_sys_keyctl # branch to system call
1321
1322ENTRY(sys_perf_event_open_wrapper)
1323 llgtr %r2,%r2 # const struct perf_event_attr *
1324 lgfr %r3,%r3 # pid_t
1325 lgfr %r4,%r4 # int
1326 lgfr %r5,%r5 # int
1327 llgfr %r6,%r6 # unsigned long
1328 jg sys_perf_event_open # branch to system call
1329
1330ENTRY(sys_clone_wrapper)
1331 llgfr %r2,%r2 # unsigned long
1332 llgfr %r3,%r3 # unsigned long
1333 llgtr %r4,%r4 # int *
1334 llgtr %r5,%r5 # int *
1335 jg sys_clone # branch to system call
1336
1337ENTRY(sys32_execve_wrapper)
1338 llgtr %r2,%r2 # char *
1339 llgtr %r3,%r3 # compat_uptr_t *
1340 llgtr %r4,%r4 # compat_uptr_t *
1341 jg compat_sys_execve # branch to system call
1342
1343ENTRY(sys_fanotify_init_wrapper)
1344 llgfr %r2,%r2 # unsigned int
1345 llgfr %r3,%r3 # unsigned int
1346 jg sys_fanotify_init # branch to system call
1347
1348ENTRY(sys_prlimit64_wrapper)
1349 lgfr %r2,%r2 # pid_t
1350 llgfr %r3,%r3 # unsigned int
1351 llgtr %r4,%r4 # const struct rlimit64 __user *
1352 llgtr %r5,%r5 # struct rlimit64 __user *
1353 jg sys_prlimit64 # branch to system call
1354
1355ENTRY(sys_name_to_handle_at_wrapper)
1356 lgfr %r2,%r2 # int
1357 llgtr %r3,%r3 # const char __user *
1358 llgtr %r4,%r4 # struct file_handle __user *
1359 llgtr %r5,%r5 # int __user *
1360 lgfr %r6,%r6 # int
1361 jg sys_name_to_handle_at
1362
1363ENTRY(compat_sys_clock_adjtime_wrapper)
1364 lgfr %r2,%r2 # clockid_t (int)
1365 llgtr %r3,%r3 # struct compat_timex __user *
1366 jg compat_sys_clock_adjtime
1367
1368ENTRY(sys_syncfs_wrapper)
1369 lgfr %r2,%r2 # int
1370 jg sys_syncfs
1371
1372ENTRY(sys_setns_wrapper)
1373 lgfr %r2,%r2 # int
1374 lgfr %r3,%r3 # int
1375 jg sys_setns
1376
1377ENTRY(compat_sys_process_vm_readv_wrapper)
1378 lgfr %r2,%r2 # compat_pid_t
1379 llgtr %r3,%r3 # struct compat_iovec __user *
1380 llgfr %r4,%r4 # unsigned long
1381 llgtr %r5,%r5 # struct compat_iovec __user *
1382 llgfr %r6,%r6 # unsigned long
1383 llgf %r0,164(%r15) # unsigned long
1384 stg %r0,160(%r15)
1385 jg compat_sys_process_vm_readv
1386
1387ENTRY(compat_sys_process_vm_writev_wrapper)
1388 lgfr %r2,%r2 # compat_pid_t
1389 llgtr %r3,%r3 # struct compat_iovec __user *
1390 llgfr %r4,%r4 # unsigned long
1391 llgtr %r5,%r5 # struct compat_iovec __user *
1392 llgfr %r6,%r6 # unsigned long
1393 llgf %r0,164(%r15) # unsigned long
1394 stg %r0,160(%r15)
1395 jg compat_sys_process_vm_writev
1396
1397ENTRY(sys_s390_runtime_instr_wrapper)
1398 lgfr %r2,%r2 # int
1399 lgfr %r3,%r3 # int
1400 jg sys_s390_runtime_instr
1401
1402ENTRY(sys_kcmp_wrapper)
1403 lgfr %r2,%r2 # pid_t
1404 lgfr %r3,%r3 # pid_t
1405 lgfr %r4,%r4 # int
1406 llgfr %r5,%r5 # unsigned long
1407 llgfr %r6,%r6 # unsigned long
1408 jg sys_kcmp
1409
1410ENTRY(sys_finit_module_wrapper)
1411 lgfr %r2,%r2 # int
1412 llgtr %r3,%r3 # const char __user *
1413 lgfr %r4,%r4 # int
1414 jg sys_finit_module
1415
1416ENTRY(sys_sched_setattr_wrapper)
1417 lgfr %r2,%r2 # pid_t
1418 llgtr %r3,%r3 # struct sched_attr __user *
1419 jg sys_sched_setattr
1420
1421ENTRY(sys_sched_getattr_wrapper)
1422 lgfr %r2,%r2 # pid_t
1423 llgtr %r3,%r3 # const char __user *
1424 llgfr %r4,%r4 # unsigned int
1425 jg sys_sched_getattr
diff --git a/arch/s390/kernel/compat_wrapper.c b/arch/s390/kernel/compat_wrapper.c
new file mode 100644
index 000000000000..824c39dfddfc
--- /dev/null
+++ b/arch/s390/kernel/compat_wrapper.c
@@ -0,0 +1,215 @@
1/*
2 * Compat sytem call wrappers.
3 *
4 * Copyright IBM Corp. 2014
5 */
6
7#include <linux/syscalls.h>
8#include <linux/compat.h>
9#include "entry.h"
10
11#define COMPAT_SYSCALL_WRAP1(name, ...) \
12 COMPAT_SYSCALL_WRAPx(1, _##name, __VA_ARGS__)
13#define COMPAT_SYSCALL_WRAP2(name, ...) \
14 COMPAT_SYSCALL_WRAPx(2, _##name, __VA_ARGS__)
15#define COMPAT_SYSCALL_WRAP3(name, ...) \
16 COMPAT_SYSCALL_WRAPx(3, _##name, __VA_ARGS__)
17#define COMPAT_SYSCALL_WRAP4(name, ...) \
18 COMPAT_SYSCALL_WRAPx(4, _##name, __VA_ARGS__)
19#define COMPAT_SYSCALL_WRAP5(name, ...) \
20 COMPAT_SYSCALL_WRAPx(5, _##name, __VA_ARGS__)
21#define COMPAT_SYSCALL_WRAP6(name, ...) \
22 COMPAT_SYSCALL_WRAPx(6, _##name, __VA_ARGS__)
23
24#define __SC_COMPAT_TYPE(t, a) \
25 __typeof(__builtin_choose_expr(sizeof(t) > 4, 0L, (t)0)) a
26
27#define __SC_COMPAT_CAST(t, a) \
28({ \
29 long __ReS = a; \
30 \
31 BUILD_BUG_ON((sizeof(t) > 4) && !__TYPE_IS_L(t) && \
32 !__TYPE_IS_UL(t) && !__TYPE_IS_PTR(t)); \
33 if (__TYPE_IS_L(t)) \
34 __ReS = (s32)a; \
35 if (__TYPE_IS_UL(t)) \
36 __ReS = (u32)a; \
37 if (__TYPE_IS_PTR(t)) \
38 __ReS = a & 0x7fffffff; \
39 (t)__ReS; \
40})
41
42/*
43 * The COMPAT_SYSCALL_WRAP macro generates system call wrappers to be used by
44 * compat tasks. These wrappers will only be used for system calls where only
45 * the system call arguments need sign or zero extension or zeroing of the upper
46 * 33 bits of pointers.
47 * Note: since the wrapper function will afterwards call a system call which
48 * again performs zero and sign extension for all system call arguments with
49 * a size of less than eight bytes, these compat wrappers only touch those
50 * system call arguments with a size of eight bytes ((unsigned) long and
51 * pointers). Zero and sign extension for e.g. int parameters will be done by
52 * the regular system call wrappers.
53 */
54#define COMPAT_SYSCALL_WRAPx(x, name, ...) \
55 asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \
56 asmlinkage long compat_sys##name(__MAP(x,__SC_COMPAT_TYPE,__VA_ARGS__));\
57 asmlinkage long compat_sys##name(__MAP(x,__SC_COMPAT_TYPE,__VA_ARGS__)) \
58 { \
59 return sys##name(__MAP(x,__SC_COMPAT_CAST,__VA_ARGS__)); \
60 }
61
62COMPAT_SYSCALL_WRAP1(exit, int, error_code);
63COMPAT_SYSCALL_WRAP1(close, unsigned int, fd);
64COMPAT_SYSCALL_WRAP2(creat, const char __user *, pathname, umode_t, mode);
65COMPAT_SYSCALL_WRAP2(link, const char __user *, oldname, const char __user *, newname);
66COMPAT_SYSCALL_WRAP1(unlink, const char __user *, pathname);
67COMPAT_SYSCALL_WRAP1(chdir, const char __user *, filename);
68COMPAT_SYSCALL_WRAP3(mknod, const char __user *, filename, umode_t, mode, unsigned, dev);
69COMPAT_SYSCALL_WRAP2(chmod, const char __user *, filename, umode_t, mode);
70COMPAT_SYSCALL_WRAP1(oldumount, char __user *, name);
71COMPAT_SYSCALL_WRAP1(alarm, unsigned int, seconds);
72COMPAT_SYSCALL_WRAP2(access, const char __user *, filename, int, mode);
73COMPAT_SYSCALL_WRAP1(nice, int, increment);
74COMPAT_SYSCALL_WRAP2(kill, int, pid, int, sig);
75COMPAT_SYSCALL_WRAP2(rename, const char __user *, oldname, const char __user *, newname);
76COMPAT_SYSCALL_WRAP2(mkdir, const char __user *, pathname, umode_t, mode);
77COMPAT_SYSCALL_WRAP1(rmdir, const char __user *, pathname);
78COMPAT_SYSCALL_WRAP1(dup, unsigned int, fildes);
79COMPAT_SYSCALL_WRAP1(pipe, int __user *, fildes);
80COMPAT_SYSCALL_WRAP1(brk, unsigned long, brk);
81COMPAT_SYSCALL_WRAP2(signal, int, sig, __sighandler_t, handler);
82COMPAT_SYSCALL_WRAP1(acct, const char __user *, name);
83COMPAT_SYSCALL_WRAP2(umount, char __user *, name, int, flags);
84COMPAT_SYSCALL_WRAP2(setpgid, pid_t, pid, pid_t, pgid);
85COMPAT_SYSCALL_WRAP1(umask, int, mask);
86COMPAT_SYSCALL_WRAP1(chroot, const char __user *, filename);
87COMPAT_SYSCALL_WRAP2(dup2, unsigned int, oldfd, unsigned int, newfd);
88COMPAT_SYSCALL_WRAP3(sigsuspend, int, unused1, int, unused2, old_sigset_t, mask);
89COMPAT_SYSCALL_WRAP2(sethostname, char __user *, name, int, len);
90COMPAT_SYSCALL_WRAP2(symlink, const char __user *, old, const char __user *, new);
91COMPAT_SYSCALL_WRAP3(readlink, const char __user *, path, char __user *, buf, int, bufsiz);
92COMPAT_SYSCALL_WRAP1(uselib, const char __user *, library);
93COMPAT_SYSCALL_WRAP2(swapon, const char __user *, specialfile, int, swap_flags);
94COMPAT_SYSCALL_WRAP4(reboot, int, magic1, int, magic2, unsigned int, cmd, void __user *, arg);
95COMPAT_SYSCALL_WRAP2(munmap, unsigned long, addr, size_t, len);
96COMPAT_SYSCALL_WRAP2(fchmod, unsigned int, fd, umode_t, mode);
97COMPAT_SYSCALL_WRAP2(getpriority, int, which, int, who);
98COMPAT_SYSCALL_WRAP3(setpriority, int, which, int, who, int, niceval);
99COMPAT_SYSCALL_WRAP3(syslog, int, type, char __user *, buf, int, len);
100COMPAT_SYSCALL_WRAP1(swapoff, const char __user *, specialfile);
101COMPAT_SYSCALL_WRAP1(fsync, unsigned int, fd);
102COMPAT_SYSCALL_WRAP2(setdomainname, char __user *, name, int, len);
103COMPAT_SYSCALL_WRAP1(newuname, struct new_utsname __user *, name);
104COMPAT_SYSCALL_WRAP3(mprotect, unsigned long, start, size_t, len, unsigned long, prot);
105COMPAT_SYSCALL_WRAP3(init_module, void __user *, umod, unsigned long, len, const char __user *, uargs);
106COMPAT_SYSCALL_WRAP2(delete_module, const char __user *, name_user, unsigned int, flags);
107COMPAT_SYSCALL_WRAP4(quotactl, unsigned int, cmd, const char __user *, special, qid_t, id, void __user *, addr);
108COMPAT_SYSCALL_WRAP1(getpgid, pid_t, pid);
109COMPAT_SYSCALL_WRAP1(fchdir, unsigned int, fd);
110COMPAT_SYSCALL_WRAP2(bdflush, int, func, long, data);
111COMPAT_SYSCALL_WRAP3(sysfs, int, option, unsigned long, arg1, unsigned long, arg2);
112COMPAT_SYSCALL_WRAP1(s390_personality, unsigned int, personality);
113COMPAT_SYSCALL_WRAP5(llseek, unsigned int, fd, unsigned long, high, unsigned long, low, loff_t __user *, result, unsigned int, whence);
114COMPAT_SYSCALL_WRAP2(flock, unsigned int, fd, unsigned int, cmd);
115COMPAT_SYSCALL_WRAP3(msync, unsigned long, start, size_t, len, int, flags);
116COMPAT_SYSCALL_WRAP1(getsid, pid_t, pid);
117COMPAT_SYSCALL_WRAP1(fdatasync, unsigned int, fd);
118COMPAT_SYSCALL_WRAP2(mlock, unsigned long, start, size_t, len);
119COMPAT_SYSCALL_WRAP2(munlock, unsigned long, start, size_t, len);
120COMPAT_SYSCALL_WRAP1(mlockall, int, flags);
121COMPAT_SYSCALL_WRAP2(sched_setparam, pid_t, pid, struct sched_param __user *, param);
122COMPAT_SYSCALL_WRAP2(sched_getparam, pid_t, pid, struct sched_param __user *, param);
123COMPAT_SYSCALL_WRAP3(sched_setscheduler, pid_t, pid, int, policy, struct sched_param __user *, param);
124COMPAT_SYSCALL_WRAP1(sched_getscheduler, pid_t, pid);
125COMPAT_SYSCALL_WRAP1(sched_get_priority_max, int, policy);
126COMPAT_SYSCALL_WRAP1(sched_get_priority_min, int, policy);
127COMPAT_SYSCALL_WRAP5(mremap, unsigned long, addr, unsigned long, old_len, unsigned long, new_len, unsigned long, flags, unsigned long, new_addr);
128COMPAT_SYSCALL_WRAP3(poll, struct pollfd __user *, ufds, unsigned int, nfds, int, timeout);
129COMPAT_SYSCALL_WRAP5(prctl, int, option, unsigned long, arg2, unsigned long, arg3, unsigned long, arg4, unsigned long, arg5);
130COMPAT_SYSCALL_WRAP2(getcwd, char __user *, buf, unsigned long, size);
131COMPAT_SYSCALL_WRAP2(capget, cap_user_header_t, header, cap_user_data_t, dataptr);
132COMPAT_SYSCALL_WRAP2(capset, cap_user_header_t, header, const cap_user_data_t, data);
133COMPAT_SYSCALL_WRAP3(lchown, const char __user *, filename, uid_t, user, gid_t, group);
134COMPAT_SYSCALL_WRAP2(setreuid, uid_t, ruid, uid_t, euid);
135COMPAT_SYSCALL_WRAP2(setregid, gid_t, rgid, gid_t, egid);
136COMPAT_SYSCALL_WRAP2(getgroups, int, gidsetsize, gid_t __user *, grouplist);
137COMPAT_SYSCALL_WRAP2(setgroups, int, gidsetsize, gid_t __user *, grouplist);
138COMPAT_SYSCALL_WRAP3(fchown, unsigned int, fd, uid_t, user, gid_t, group);
139COMPAT_SYSCALL_WRAP3(setresuid, uid_t, ruid, uid_t, euid, uid_t, suid);
140COMPAT_SYSCALL_WRAP3(getresuid, uid_t __user *, ruid, uid_t __user *, euid, uid_t __user *, suid);
141COMPAT_SYSCALL_WRAP3(setresgid, gid_t, rgid, gid_t, egid, gid_t, sgid);
142COMPAT_SYSCALL_WRAP3(getresgid, gid_t __user *, rgid, gid_t __user *, egid, gid_t __user *, sgid);
143COMPAT_SYSCALL_WRAP3(chown, const char __user *, filename, uid_t, user, gid_t, group);
144COMPAT_SYSCALL_WRAP1(setuid, uid_t, uid);
145COMPAT_SYSCALL_WRAP1(setgid, gid_t, gid);
146COMPAT_SYSCALL_WRAP1(setfsuid, uid_t, uid);
147COMPAT_SYSCALL_WRAP1(setfsgid, gid_t, gid);
148COMPAT_SYSCALL_WRAP2(pivot_root, const char __user *, new_root, const char __user *, put_old);
149COMPAT_SYSCALL_WRAP3(mincore, unsigned long, start, size_t, len, unsigned char __user *, vec);
150COMPAT_SYSCALL_WRAP3(madvise, unsigned long, start, size_t, len, int, behavior);
151COMPAT_SYSCALL_WRAP5(setxattr, const char __user *, path, const char __user *, name, const void __user *, value, size_t, size, int, flags);
152COMPAT_SYSCALL_WRAP5(lsetxattr, const char __user *, path, const char __user *, name, const void __user *, value, size_t, size, int, flags);
153COMPAT_SYSCALL_WRAP5(fsetxattr, int, fd, const char __user *, name, const void __user *, value, size_t, size, int, flags);
154COMPAT_SYSCALL_WRAP3(getdents64, unsigned int, fd, struct linux_dirent64 __user *, dirent, unsigned int, count);
155COMPAT_SYSCALL_WRAP4(getxattr, const char __user *, path, const char __user *, name, void __user *, value, size_t, size);
156COMPAT_SYSCALL_WRAP4(lgetxattr, const char __user *, path, const char __user *, name, void __user *, value, size_t, size);
157COMPAT_SYSCALL_WRAP4(fgetxattr, int, fd, const char __user *, name, void __user *, value, size_t, size);
158COMPAT_SYSCALL_WRAP3(listxattr, const char __user *, path, char __user *, list, size_t, size);
159COMPAT_SYSCALL_WRAP3(llistxattr, const char __user *, path, char __user *, list, size_t, size);
160COMPAT_SYSCALL_WRAP3(flistxattr, int, fd, char __user *, list, size_t, size);
161COMPAT_SYSCALL_WRAP2(removexattr, const char __user *, path, const char __user *, name);
162COMPAT_SYSCALL_WRAP2(lremovexattr, const char __user *, path, const char __user *, name);
163COMPAT_SYSCALL_WRAP2(fremovexattr, int, fd, const char __user *, name);
164COMPAT_SYSCALL_WRAP1(exit_group, int, error_code);
165COMPAT_SYSCALL_WRAP1(set_tid_address, int __user *, tidptr);
166COMPAT_SYSCALL_WRAP1(epoll_create, int, size);
167COMPAT_SYSCALL_WRAP4(epoll_ctl, int, epfd, int, op, int, fd, struct epoll_event __user *, event);
168COMPAT_SYSCALL_WRAP4(epoll_wait, int, epfd, struct epoll_event __user *, events, int, maxevents, int, timeout);
169COMPAT_SYSCALL_WRAP1(timer_getoverrun, timer_t, timer_id);
170COMPAT_SYSCALL_WRAP1(timer_delete, compat_timer_t, compat_timer_id);
171COMPAT_SYSCALL_WRAP1(io_destroy, aio_context_t, ctx);
172COMPAT_SYSCALL_WRAP3(io_cancel, aio_context_t, ctx_id, struct iocb __user *, iocb, struct io_event __user *, result);
173COMPAT_SYSCALL_WRAP1(mq_unlink, const char __user *, name);
174COMPAT_SYSCALL_WRAP5(add_key, const char __user *, tp, const char __user *, dsc, const void __user *, pld, size_t, len, key_serial_t, id);
175COMPAT_SYSCALL_WRAP4(request_key, const char __user *, tp, const char __user *, dsc, const char __user *, info, key_serial_t, id);
176COMPAT_SYSCALL_WRAP5(remap_file_pages, unsigned long, start, unsigned long, size, unsigned long, prot, unsigned long, pgoff, unsigned long, flags);
177COMPAT_SYSCALL_WRAP3(ioprio_set, int, which, int, who, int, ioprio);
178COMPAT_SYSCALL_WRAP2(ioprio_get, int, which, int, who);
179COMPAT_SYSCALL_WRAP3(inotify_add_watch, int, fd, const char __user *, path, u32, mask);
180COMPAT_SYSCALL_WRAP2(inotify_rm_watch, int, fd, __s32, wd);
181COMPAT_SYSCALL_WRAP3(mkdirat, int, dfd, const char __user *, pathname, umode_t, mode);
182COMPAT_SYSCALL_WRAP4(mknodat, int, dfd, const char __user *, filename, umode_t, mode, unsigned, dev);
183COMPAT_SYSCALL_WRAP5(fchownat, int, dfd, const char __user *, filename, uid_t, user, gid_t, group, int, flag);
184COMPAT_SYSCALL_WRAP3(unlinkat, int, dfd, const char __user *, pathname, int, flag);
185COMPAT_SYSCALL_WRAP4(renameat, int, olddfd, const char __user *, oldname, int, newdfd, const char __user *, newname);
186COMPAT_SYSCALL_WRAP5(linkat, int, olddfd, const char __user *, oldname, int, newdfd, const char __user *, newname, int, flags);
187COMPAT_SYSCALL_WRAP3(symlinkat, const char __user *, oldname, int, newdfd, const char __user *, newname);
188COMPAT_SYSCALL_WRAP4(readlinkat, int, dfd, const char __user *, path, char __user *, buf, int, bufsiz);
189COMPAT_SYSCALL_WRAP3(fchmodat, int, dfd, const char __user *, filename, umode_t, mode);
190COMPAT_SYSCALL_WRAP3(faccessat, int, dfd, const char __user *, filename, int, mode);
191COMPAT_SYSCALL_WRAP1(unshare, unsigned long, unshare_flags);
192COMPAT_SYSCALL_WRAP6(splice, int, fd_in, loff_t __user *, off_in, int, fd_out, loff_t __user *, off_out, size_t, len, unsigned int, flags);
193COMPAT_SYSCALL_WRAP4(tee, int, fdin, int, fdout, size_t, len, unsigned int, flags);
194COMPAT_SYSCALL_WRAP3(getcpu, unsigned __user *, cpu, unsigned __user *, node, struct getcpu_cache __user *, cache);
195COMPAT_SYSCALL_WRAP1(eventfd, unsigned int, count);
196COMPAT_SYSCALL_WRAP2(timerfd_create, int, clockid, int, flags);
197COMPAT_SYSCALL_WRAP2(eventfd2, unsigned int, count, int, flags);
198COMPAT_SYSCALL_WRAP1(inotify_init1, int, flags);
199COMPAT_SYSCALL_WRAP2(pipe2, int __user *, fildes, int, flags);
200COMPAT_SYSCALL_WRAP3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags);
201COMPAT_SYSCALL_WRAP1(epoll_create1, int, flags);
202COMPAT_SYSCALL_WRAP2(tkill, int, pid, int, sig);
203COMPAT_SYSCALL_WRAP3(tgkill, int, tgid, int, pid, int, sig);
204COMPAT_SYSCALL_WRAP5(perf_event_open, struct perf_event_attr __user *, attr_uptr, pid_t, pid, int, cpu, int, group_fd, unsigned long, flags);
205COMPAT_SYSCALL_WRAP5(clone, unsigned long, newsp, unsigned long, clone_flags, int __user *, parent_tidptr, int __user *, child_tidptr, int, tls_val);
206COMPAT_SYSCALL_WRAP2(fanotify_init, unsigned int, flags, unsigned int, event_f_flags);
207COMPAT_SYSCALL_WRAP4(prlimit64, pid_t, pid, unsigned int, resource, const struct rlimit64 __user *, new_rlim, struct rlimit64 __user *, old_rlim);
208COMPAT_SYSCALL_WRAP5(name_to_handle_at, int, dfd, const char __user *, name, struct file_handle __user *, handle, int __user *, mnt_id, int, flag);
209COMPAT_SYSCALL_WRAP1(syncfs, int, fd);
210COMPAT_SYSCALL_WRAP2(setns, int, fd, int, nstype);
211COMPAT_SYSCALL_WRAP2(s390_runtime_instr, int, command, int, signum);
212COMPAT_SYSCALL_WRAP5(kcmp, pid_t, pid1, pid_t, pid2, int, type, unsigned long, idx1, unsigned long, idx2);
213COMPAT_SYSCALL_WRAP3(finit_module, int, fd, const char __user *, uargs, int, flags);
214COMPAT_SYSCALL_WRAP3(sched_setattr, pid_t, pid, struct sched_attr __user *, attr, unsigned int, flags);
215COMPAT_SYSCALL_WRAP4(sched_getattr, pid_t, pid, struct sched_attr __user *, attr, unsigned int, size, unsigned int, flags);
diff --git a/arch/s390/kernel/entry.h b/arch/s390/kernel/entry.h
index cb533f78c09e..6ac78192455f 100644
--- a/arch/s390/kernel/entry.h
+++ b/arch/s390/kernel/entry.h
@@ -67,9 +67,7 @@ struct s390_mmap_arg_struct;
67struct fadvise64_64_args; 67struct fadvise64_64_args;
68struct old_sigaction; 68struct old_sigaction;
69 69
70long sys_sigreturn(void); 70long sys_s390_personality(unsigned int personality);
71long sys_rt_sigreturn(void); 71long sys_s390_runtime_instr(int command, int signum);
72long sys32_sigreturn(void);
73long sys32_rt_sigreturn(void);
74 72
75#endif /* _ENTRY_H */ 73#endif /* _ENTRY_H */
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S
index 143992152ec9..542ef488bac1 100644
--- a/arch/s390/kernel/syscalls.S
+++ b/arch/s390/kernel/syscalls.S
@@ -9,349 +9,349 @@
9#define NI_SYSCALL SYSCALL(sys_ni_syscall,sys_ni_syscall,sys_ni_syscall) 9#define NI_SYSCALL SYSCALL(sys_ni_syscall,sys_ni_syscall,sys_ni_syscall)
10 10
11NI_SYSCALL /* 0 */ 11NI_SYSCALL /* 0 */
12SYSCALL(sys_exit,sys_exit,sys32_exit_wrapper) 12SYSCALL(sys_exit,sys_exit,compat_sys_exit)
13SYSCALL(sys_fork,sys_fork,sys_fork) 13SYSCALL(sys_fork,sys_fork,sys_fork)
14SYSCALL(sys_read,sys_read,sys32_read_wrapper) 14SYSCALL(sys_read,sys_read,compat_sys_s390_read)
15SYSCALL(sys_write,sys_write,sys32_write_wrapper) 15SYSCALL(sys_write,sys_write,compat_sys_s390_write)
16SYSCALL(sys_open,sys_open,compat_sys_open) /* 5 */ 16SYSCALL(sys_open,sys_open,compat_sys_open) /* 5 */
17SYSCALL(sys_close,sys_close,sys32_close_wrapper) 17SYSCALL(sys_close,sys_close,compat_sys_close)
18SYSCALL(sys_restart_syscall,sys_restart_syscall,sys_restart_syscall) 18SYSCALL(sys_restart_syscall,sys_restart_syscall,sys_restart_syscall)
19SYSCALL(sys_creat,sys_creat,sys32_creat_wrapper) 19SYSCALL(sys_creat,sys_creat,compat_sys_creat)
20SYSCALL(sys_link,sys_link,sys32_link_wrapper) 20SYSCALL(sys_link,sys_link,compat_sys_link)
21SYSCALL(sys_unlink,sys_unlink,sys32_unlink_wrapper) /* 10 */ 21SYSCALL(sys_unlink,sys_unlink,compat_sys_unlink) /* 10 */
22SYSCALL(sys_execve,sys_execve,sys32_execve_wrapper) 22SYSCALL(sys_execve,sys_execve,compat_sys_execve)
23SYSCALL(sys_chdir,sys_chdir,sys32_chdir_wrapper) 23SYSCALL(sys_chdir,sys_chdir,compat_sys_chdir)
24SYSCALL(sys_time,sys_ni_syscall,sys32_time_wrapper) /* old time syscall */ 24SYSCALL(sys_time,sys_ni_syscall,compat_sys_time) /* old time syscall */
25SYSCALL(sys_mknod,sys_mknod,sys32_mknod_wrapper) 25SYSCALL(sys_mknod,sys_mknod,compat_sys_mknod)
26SYSCALL(sys_chmod,sys_chmod,sys32_chmod_wrapper) /* 15 */ 26SYSCALL(sys_chmod,sys_chmod,compat_sys_chmod) /* 15 */
27SYSCALL(sys_lchown16,sys_ni_syscall,sys32_lchown16_wrapper) /* old lchown16 syscall*/ 27SYSCALL(sys_lchown16,sys_ni_syscall,compat_sys_s390_lchown16) /* old lchown16 syscall*/
28NI_SYSCALL /* old break syscall holder */ 28NI_SYSCALL /* old break syscall holder */
29NI_SYSCALL /* old stat syscall holder */ 29NI_SYSCALL /* old stat syscall holder */
30SYSCALL(sys_lseek,sys_lseek,compat_sys_lseek) 30SYSCALL(sys_lseek,sys_lseek,compat_sys_lseek)
31SYSCALL(sys_getpid,sys_getpid,sys_getpid) /* 20 */ 31SYSCALL(sys_getpid,sys_getpid,sys_getpid) /* 20 */
32SYSCALL(sys_mount,sys_mount,sys32_mount_wrapper) 32SYSCALL(sys_mount,sys_mount,compat_sys_mount)
33SYSCALL(sys_oldumount,sys_oldumount,sys32_oldumount_wrapper) 33SYSCALL(sys_oldumount,sys_oldumount,compat_sys_oldumount)
34SYSCALL(sys_setuid16,sys_ni_syscall,sys32_setuid16_wrapper) /* old setuid16 syscall*/ 34SYSCALL(sys_setuid16,sys_ni_syscall,compat_sys_s390_setuid16) /* old setuid16 syscall*/
35SYSCALL(sys_getuid16,sys_ni_syscall,sys32_getuid16) /* old getuid16 syscall*/ 35SYSCALL(sys_getuid16,sys_ni_syscall,compat_sys_s390_getuid16) /* old getuid16 syscall*/
36SYSCALL(sys_stime,sys_ni_syscall,sys32_stime_wrapper) /* 25 old stime syscall */ 36SYSCALL(sys_stime,sys_ni_syscall,compat_sys_stime) /* 25 old stime syscall */
37SYSCALL(sys_ptrace,sys_ptrace,sys32_ptrace_wrapper) 37SYSCALL(sys_ptrace,sys_ptrace,compat_sys_ptrace)
38SYSCALL(sys_alarm,sys_alarm,sys32_alarm_wrapper) 38SYSCALL(sys_alarm,sys_alarm,compat_sys_alarm)
39NI_SYSCALL /* old fstat syscall */ 39NI_SYSCALL /* old fstat syscall */
40SYSCALL(sys_pause,sys_pause,sys_pause) 40SYSCALL(sys_pause,sys_pause,sys_pause)
41SYSCALL(sys_utime,sys_utime,compat_sys_utime_wrapper) /* 30 */ 41SYSCALL(sys_utime,sys_utime,compat_sys_utime) /* 30 */
42NI_SYSCALL /* old stty syscall */ 42NI_SYSCALL /* old stty syscall */
43NI_SYSCALL /* old gtty syscall */ 43NI_SYSCALL /* old gtty syscall */
44SYSCALL(sys_access,sys_access,sys32_access_wrapper) 44SYSCALL(sys_access,sys_access,compat_sys_access)
45SYSCALL(sys_nice,sys_nice,sys32_nice_wrapper) 45SYSCALL(sys_nice,sys_nice,compat_sys_nice)
46NI_SYSCALL /* 35 old ftime syscall */ 46NI_SYSCALL /* 35 old ftime syscall */
47SYSCALL(sys_sync,sys_sync,sys_sync) 47SYSCALL(sys_sync,sys_sync,sys_sync)
48SYSCALL(sys_kill,sys_kill,sys32_kill_wrapper) 48SYSCALL(sys_kill,sys_kill,compat_sys_kill)
49SYSCALL(sys_rename,sys_rename,sys32_rename_wrapper) 49SYSCALL(sys_rename,sys_rename,compat_sys_rename)
50SYSCALL(sys_mkdir,sys_mkdir,sys32_mkdir_wrapper) 50SYSCALL(sys_mkdir,sys_mkdir,compat_sys_mkdir)
51SYSCALL(sys_rmdir,sys_rmdir,sys32_rmdir_wrapper) /* 40 */ 51SYSCALL(sys_rmdir,sys_rmdir,compat_sys_rmdir) /* 40 */
52SYSCALL(sys_dup,sys_dup,sys32_dup_wrapper) 52SYSCALL(sys_dup,sys_dup,compat_sys_dup)
53SYSCALL(sys_pipe,sys_pipe,sys32_pipe_wrapper) 53SYSCALL(sys_pipe,sys_pipe,compat_sys_pipe)
54SYSCALL(sys_times,sys_times,compat_sys_times_wrapper) 54SYSCALL(sys_times,sys_times,compat_sys_times)
55NI_SYSCALL /* old prof syscall */ 55NI_SYSCALL /* old prof syscall */
56SYSCALL(sys_brk,sys_brk,sys32_brk_wrapper) /* 45 */ 56SYSCALL(sys_brk,sys_brk,compat_sys_brk) /* 45 */
57SYSCALL(sys_setgid16,sys_ni_syscall,sys32_setgid16_wrapper) /* old setgid16 syscall*/ 57SYSCALL(sys_setgid16,sys_ni_syscall,compat_sys_s390_setgid16) /* old setgid16 syscall*/
58SYSCALL(sys_getgid16,sys_ni_syscall,sys32_getgid16) /* old getgid16 syscall*/ 58SYSCALL(sys_getgid16,sys_ni_syscall,compat_sys_s390_getgid16) /* old getgid16 syscall*/
59SYSCALL(sys_signal,sys_signal,sys32_signal_wrapper) 59SYSCALL(sys_signal,sys_signal,compat_sys_signal)
60SYSCALL(sys_geteuid16,sys_ni_syscall,sys32_geteuid16) /* old geteuid16 syscall */ 60SYSCALL(sys_geteuid16,sys_ni_syscall,compat_sys_s390_geteuid16) /* old geteuid16 syscall */
61SYSCALL(sys_getegid16,sys_ni_syscall,sys32_getegid16) /* 50 old getegid16 syscall */ 61SYSCALL(sys_getegid16,sys_ni_syscall,compat_sys_s390_getegid16) /* 50 old getegid16 syscall */
62SYSCALL(sys_acct,sys_acct,sys32_acct_wrapper) 62SYSCALL(sys_acct,sys_acct,compat_sys_acct)
63SYSCALL(sys_umount,sys_umount,sys32_umount_wrapper) 63SYSCALL(sys_umount,sys_umount,compat_sys_umount)
64NI_SYSCALL /* old lock syscall */ 64NI_SYSCALL /* old lock syscall */
65SYSCALL(sys_ioctl,sys_ioctl,compat_sys_ioctl_wrapper) 65SYSCALL(sys_ioctl,sys_ioctl,compat_sys_ioctl)
66SYSCALL(sys_fcntl,sys_fcntl,compat_sys_fcntl_wrapper) /* 55 */ 66SYSCALL(sys_fcntl,sys_fcntl,compat_sys_fcntl) /* 55 */
67NI_SYSCALL /* intel mpx syscall */ 67NI_SYSCALL /* intel mpx syscall */
68SYSCALL(sys_setpgid,sys_setpgid,sys32_setpgid_wrapper) 68SYSCALL(sys_setpgid,sys_setpgid,compat_sys_setpgid)
69NI_SYSCALL /* old ulimit syscall */ 69NI_SYSCALL /* old ulimit syscall */
70NI_SYSCALL /* old uname syscall */ 70NI_SYSCALL /* old uname syscall */
71SYSCALL(sys_umask,sys_umask,sys32_umask_wrapper) /* 60 */ 71SYSCALL(sys_umask,sys_umask,compat_sys_umask) /* 60 */
72SYSCALL(sys_chroot,sys_chroot,sys32_chroot_wrapper) 72SYSCALL(sys_chroot,sys_chroot,compat_sys_chroot)
73SYSCALL(sys_ustat,sys_ustat,sys32_ustat_wrapper) 73SYSCALL(sys_ustat,sys_ustat,compat_sys_ustat)
74SYSCALL(sys_dup2,sys_dup2,sys32_dup2_wrapper) 74SYSCALL(sys_dup2,sys_dup2,compat_sys_dup2)
75SYSCALL(sys_getppid,sys_getppid,sys_getppid) 75SYSCALL(sys_getppid,sys_getppid,sys_getppid)
76SYSCALL(sys_getpgrp,sys_getpgrp,sys_getpgrp) /* 65 */ 76SYSCALL(sys_getpgrp,sys_getpgrp,sys_getpgrp) /* 65 */
77SYSCALL(sys_setsid,sys_setsid,sys_setsid) 77SYSCALL(sys_setsid,sys_setsid,sys_setsid)
78SYSCALL(sys_sigaction,sys_sigaction,compat_sys_sigaction) 78SYSCALL(sys_sigaction,sys_sigaction,compat_sys_sigaction)
79NI_SYSCALL /* old sgetmask syscall*/ 79NI_SYSCALL /* old sgetmask syscall*/
80NI_SYSCALL /* old ssetmask syscall*/ 80NI_SYSCALL /* old ssetmask syscall*/
81SYSCALL(sys_setreuid16,sys_ni_syscall,sys32_setreuid16_wrapper) /* old setreuid16 syscall */ 81SYSCALL(sys_setreuid16,sys_ni_syscall,compat_sys_s390_setreuid16) /* old setreuid16 syscall */
82SYSCALL(sys_setregid16,sys_ni_syscall,sys32_setregid16_wrapper) /* old setregid16 syscall */ 82SYSCALL(sys_setregid16,sys_ni_syscall,compat_sys_s390_setregid16) /* old setregid16 syscall */
83SYSCALL(sys_sigsuspend,sys_sigsuspend,sys_sigsuspend_wrapper) 83SYSCALL(sys_sigsuspend,sys_sigsuspend,compat_sys_sigsuspend)
84SYSCALL(sys_sigpending,sys_sigpending,compat_sys_sigpending_wrapper) 84SYSCALL(sys_sigpending,sys_sigpending,compat_sys_sigpending)
85SYSCALL(sys_sethostname,sys_sethostname,sys32_sethostname_wrapper) 85SYSCALL(sys_sethostname,sys_sethostname,compat_sys_sethostname)
86SYSCALL(sys_setrlimit,sys_setrlimit,compat_sys_setrlimit_wrapper) /* 75 */ 86SYSCALL(sys_setrlimit,sys_setrlimit,compat_sys_setrlimit) /* 75 */
87SYSCALL(sys_old_getrlimit,sys_getrlimit,compat_sys_old_getrlimit_wrapper) 87SYSCALL(sys_old_getrlimit,sys_getrlimit,compat_sys_old_getrlimit)
88SYSCALL(sys_getrusage,sys_getrusage,compat_sys_getrusage) 88SYSCALL(sys_getrusage,sys_getrusage,compat_sys_getrusage)
89SYSCALL(sys_gettimeofday,sys_gettimeofday,compat_sys_gettimeofday_wrapper) 89SYSCALL(sys_gettimeofday,sys_gettimeofday,compat_sys_gettimeofday)
90SYSCALL(sys_settimeofday,sys_settimeofday,compat_sys_settimeofday_wrapper) 90SYSCALL(sys_settimeofday,sys_settimeofday,compat_sys_settimeofday)
91SYSCALL(sys_getgroups16,sys_ni_syscall,sys32_getgroups16_wrapper) /* 80 old getgroups16 syscall */ 91SYSCALL(sys_getgroups16,sys_ni_syscall,compat_sys_s390_getgroups16) /* 80 old getgroups16 syscall */
92SYSCALL(sys_setgroups16,sys_ni_syscall,sys32_setgroups16_wrapper) /* old setgroups16 syscall */ 92SYSCALL(sys_setgroups16,sys_ni_syscall,compat_sys_s390_setgroups16) /* old setgroups16 syscall */
93NI_SYSCALL /* old select syscall */ 93NI_SYSCALL /* old select syscall */
94SYSCALL(sys_symlink,sys_symlink,sys32_symlink_wrapper) 94SYSCALL(sys_symlink,sys_symlink,compat_sys_symlink)
95NI_SYSCALL /* old lstat syscall */ 95NI_SYSCALL /* old lstat syscall */
96SYSCALL(sys_readlink,sys_readlink,sys32_readlink_wrapper) /* 85 */ 96SYSCALL(sys_readlink,sys_readlink,compat_sys_readlink) /* 85 */
97SYSCALL(sys_uselib,sys_uselib,sys32_uselib_wrapper) 97SYSCALL(sys_uselib,sys_uselib,compat_sys_uselib)
98SYSCALL(sys_swapon,sys_swapon,sys32_swapon_wrapper) 98SYSCALL(sys_swapon,sys_swapon,compat_sys_swapon)
99SYSCALL(sys_reboot,sys_reboot,sys32_reboot_wrapper) 99SYSCALL(sys_reboot,sys_reboot,compat_sys_reboot)
100SYSCALL(sys_ni_syscall,sys_ni_syscall,old32_readdir_wrapper) /* old readdir syscall */ 100SYSCALL(sys_ni_syscall,sys_ni_syscall,compat_sys_old_readdir) /* old readdir syscall */
101SYSCALL(sys_old_mmap,sys_old_mmap,old32_mmap_wrapper) /* 90 */ 101SYSCALL(sys_old_mmap,sys_old_mmap,compat_sys_s390_old_mmap) /* 90 */
102SYSCALL(sys_munmap,sys_munmap,sys32_munmap_wrapper) 102SYSCALL(sys_munmap,sys_munmap,compat_sys_munmap)
103SYSCALL(sys_truncate,sys_truncate,compat_sys_truncate) 103SYSCALL(sys_truncate,sys_truncate,compat_sys_truncate)
104SYSCALL(sys_ftruncate,sys_ftruncate,compat_sys_ftruncate) 104SYSCALL(sys_ftruncate,sys_ftruncate,compat_sys_ftruncate)
105SYSCALL(sys_fchmod,sys_fchmod,sys32_fchmod_wrapper) 105SYSCALL(sys_fchmod,sys_fchmod,compat_sys_fchmod)
106SYSCALL(sys_fchown16,sys_ni_syscall,sys32_fchown16_wrapper) /* 95 old fchown16 syscall*/ 106SYSCALL(sys_fchown16,sys_ni_syscall,compat_sys_s390_fchown16) /* 95 old fchown16 syscall*/
107SYSCALL(sys_getpriority,sys_getpriority,sys32_getpriority_wrapper) 107SYSCALL(sys_getpriority,sys_getpriority,compat_sys_getpriority)
108SYSCALL(sys_setpriority,sys_setpriority,sys32_setpriority_wrapper) 108SYSCALL(sys_setpriority,sys_setpriority,compat_sys_setpriority)
109NI_SYSCALL /* old profil syscall */ 109NI_SYSCALL /* old profil syscall */
110SYSCALL(sys_statfs,sys_statfs,compat_sys_statfs_wrapper) 110SYSCALL(sys_statfs,sys_statfs,compat_sys_statfs)
111SYSCALL(sys_fstatfs,sys_fstatfs,compat_sys_fstatfs_wrapper) /* 100 */ 111SYSCALL(sys_fstatfs,sys_fstatfs,compat_sys_fstatfs) /* 100 */
112NI_SYSCALL /* ioperm for i386 */ 112NI_SYSCALL /* ioperm for i386 */
113SYSCALL(sys_socketcall,sys_socketcall,compat_sys_socketcall_wrapper) 113SYSCALL(sys_socketcall,sys_socketcall,compat_sys_socketcall)
114SYSCALL(sys_syslog,sys_syslog,sys32_syslog_wrapper) 114SYSCALL(sys_syslog,sys_syslog,compat_sys_syslog)
115SYSCALL(sys_setitimer,sys_setitimer,compat_sys_setitimer) 115SYSCALL(sys_setitimer,sys_setitimer,compat_sys_setitimer)
116SYSCALL(sys_getitimer,sys_getitimer,compat_sys_getitimer) /* 105 */ 116SYSCALL(sys_getitimer,sys_getitimer,compat_sys_getitimer) /* 105 */
117SYSCALL(sys_newstat,sys_newstat,compat_sys_newstat_wrapper) 117SYSCALL(sys_newstat,sys_newstat,compat_sys_newstat)
118SYSCALL(sys_newlstat,sys_newlstat,compat_sys_newlstat_wrapper) 118SYSCALL(sys_newlstat,sys_newlstat,compat_sys_newlstat)
119SYSCALL(sys_newfstat,sys_newfstat,compat_sys_newfstat_wrapper) 119SYSCALL(sys_newfstat,sys_newfstat,compat_sys_newfstat)
120NI_SYSCALL /* old uname syscall */ 120NI_SYSCALL /* old uname syscall */
121SYSCALL(sys_lookup_dcookie,sys_lookup_dcookie,compat_sys_lookup_dcookie) /* 110 */ 121SYSCALL(sys_lookup_dcookie,sys_lookup_dcookie,compat_sys_lookup_dcookie) /* 110 */
122SYSCALL(sys_vhangup,sys_vhangup,sys_vhangup) 122SYSCALL(sys_vhangup,sys_vhangup,sys_vhangup)
123NI_SYSCALL /* old "idle" system call */ 123NI_SYSCALL /* old "idle" system call */
124NI_SYSCALL /* vm86old for i386 */ 124NI_SYSCALL /* vm86old for i386 */
125SYSCALL(sys_wait4,sys_wait4,compat_sys_wait4) 125SYSCALL(sys_wait4,sys_wait4,compat_sys_wait4)
126SYSCALL(sys_swapoff,sys_swapoff,sys32_swapoff_wrapper) /* 115 */ 126SYSCALL(sys_swapoff,sys_swapoff,compat_sys_swapoff) /* 115 */
127SYSCALL(sys_sysinfo,sys_sysinfo,compat_sys_sysinfo_wrapper) 127SYSCALL(sys_sysinfo,sys_sysinfo,compat_sys_sysinfo)
128SYSCALL(sys_s390_ipc,sys_s390_ipc,compat_sys_s390_ipc) 128SYSCALL(sys_s390_ipc,sys_s390_ipc,compat_sys_s390_ipc)
129SYSCALL(sys_fsync,sys_fsync,sys32_fsync_wrapper) 129SYSCALL(sys_fsync,sys_fsync,compat_sys_fsync)
130SYSCALL(sys_sigreturn,sys_sigreturn,sys32_sigreturn) 130SYSCALL(sys_sigreturn,sys_sigreturn,compat_sys_sigreturn)
131SYSCALL(sys_clone,sys_clone,sys_clone_wrapper) /* 120 */ 131SYSCALL(sys_clone,sys_clone,compat_sys_clone) /* 120 */
132SYSCALL(sys_setdomainname,sys_setdomainname,sys32_setdomainname_wrapper) 132SYSCALL(sys_setdomainname,sys_setdomainname,compat_sys_setdomainname)
133SYSCALL(sys_newuname,sys_newuname,sys32_newuname_wrapper) 133SYSCALL(sys_newuname,sys_newuname,compat_sys_newuname)
134NI_SYSCALL /* modify_ldt for i386 */ 134NI_SYSCALL /* modify_ldt for i386 */
135SYSCALL(sys_adjtimex,sys_adjtimex,compat_sys_adjtimex_wrapper) 135SYSCALL(sys_adjtimex,sys_adjtimex,compat_sys_adjtimex)
136SYSCALL(sys_mprotect,sys_mprotect,sys32_mprotect_wrapper) /* 125 */ 136SYSCALL(sys_mprotect,sys_mprotect,compat_sys_mprotect) /* 125 */
137SYSCALL(sys_sigprocmask,sys_sigprocmask,compat_sys_sigprocmask) 137SYSCALL(sys_sigprocmask,sys_sigprocmask,compat_sys_sigprocmask)
138NI_SYSCALL /* old "create module" */ 138NI_SYSCALL /* old "create module" */
139SYSCALL(sys_init_module,sys_init_module,sys_init_module_wrapper) 139SYSCALL(sys_init_module,sys_init_module,compat_sys_init_module)
140SYSCALL(sys_delete_module,sys_delete_module,sys_delete_module_wrapper) 140SYSCALL(sys_delete_module,sys_delete_module,compat_sys_delete_module)
141NI_SYSCALL /* 130: old get_kernel_syms */ 141NI_SYSCALL /* 130: old get_kernel_syms */
142SYSCALL(sys_quotactl,sys_quotactl,sys32_quotactl_wrapper) 142SYSCALL(sys_quotactl,sys_quotactl,compat_sys_quotactl)
143SYSCALL(sys_getpgid,sys_getpgid,sys32_getpgid_wrapper) 143SYSCALL(sys_getpgid,sys_getpgid,compat_sys_getpgid)
144SYSCALL(sys_fchdir,sys_fchdir,sys32_fchdir_wrapper) 144SYSCALL(sys_fchdir,sys_fchdir,compat_sys_fchdir)
145SYSCALL(sys_bdflush,sys_bdflush,sys32_bdflush_wrapper) 145SYSCALL(sys_bdflush,sys_bdflush,compat_sys_bdflush)
146SYSCALL(sys_sysfs,sys_sysfs,sys32_sysfs_wrapper) /* 135 */ 146SYSCALL(sys_sysfs,sys_sysfs,compat_sys_sysfs) /* 135 */
147SYSCALL(sys_personality,sys_s390_personality,sys32_personality_wrapper) 147SYSCALL(sys_personality,sys_s390_personality,compat_sys_s390_personality)
148NI_SYSCALL /* for afs_syscall */ 148NI_SYSCALL /* for afs_syscall */
149SYSCALL(sys_setfsuid16,sys_ni_syscall,sys32_setfsuid16_wrapper) /* old setfsuid16 syscall */ 149SYSCALL(sys_setfsuid16,sys_ni_syscall,compat_sys_s390_setfsuid16) /* old setfsuid16 syscall */
150SYSCALL(sys_setfsgid16,sys_ni_syscall,sys32_setfsgid16_wrapper) /* old setfsgid16 syscall */ 150SYSCALL(sys_setfsgid16,sys_ni_syscall,compat_sys_s390_setfsgid16) /* old setfsgid16 syscall */
151SYSCALL(sys_llseek,sys_llseek,sys32_llseek_wrapper) /* 140 */ 151SYSCALL(sys_llseek,sys_llseek,compat_sys_llseek) /* 140 */
152SYSCALL(sys_getdents,sys_getdents,sys32_getdents_wrapper) 152SYSCALL(sys_getdents,sys_getdents,compat_sys_getdents)
153SYSCALL(sys_select,sys_select,compat_sys_select_wrapper) 153SYSCALL(sys_select,sys_select,compat_sys_select)
154SYSCALL(sys_flock,sys_flock,sys32_flock_wrapper) 154SYSCALL(sys_flock,sys_flock,compat_sys_flock)
155SYSCALL(sys_msync,sys_msync,sys32_msync_wrapper) 155SYSCALL(sys_msync,sys_msync,compat_sys_msync)
156SYSCALL(sys_readv,sys_readv,compat_sys_readv_wrapper) /* 145 */ 156SYSCALL(sys_readv,sys_readv,compat_sys_readv) /* 145 */
157SYSCALL(sys_writev,sys_writev,compat_sys_writev_wrapper) 157SYSCALL(sys_writev,sys_writev,compat_sys_writev)
158SYSCALL(sys_getsid,sys_getsid,sys32_getsid_wrapper) 158SYSCALL(sys_getsid,sys_getsid,compat_sys_getsid)
159SYSCALL(sys_fdatasync,sys_fdatasync,sys32_fdatasync_wrapper) 159SYSCALL(sys_fdatasync,sys_fdatasync,compat_sys_fdatasync)
160SYSCALL(sys_sysctl,sys_sysctl,compat_sys_sysctl) 160SYSCALL(sys_sysctl,sys_sysctl,compat_sys_sysctl)
161SYSCALL(sys_mlock,sys_mlock,sys32_mlock_wrapper) /* 150 */ 161SYSCALL(sys_mlock,sys_mlock,compat_sys_mlock) /* 150 */
162SYSCALL(sys_munlock,sys_munlock,sys32_munlock_wrapper) 162SYSCALL(sys_munlock,sys_munlock,compat_sys_munlock)
163SYSCALL(sys_mlockall,sys_mlockall,sys32_mlockall_wrapper) 163SYSCALL(sys_mlockall,sys_mlockall,compat_sys_mlockall)
164SYSCALL(sys_munlockall,sys_munlockall,sys_munlockall) 164SYSCALL(sys_munlockall,sys_munlockall,sys_munlockall)
165SYSCALL(sys_sched_setparam,sys_sched_setparam,sys32_sched_setparam_wrapper) 165SYSCALL(sys_sched_setparam,sys_sched_setparam,compat_sys_sched_setparam)
166SYSCALL(sys_sched_getparam,sys_sched_getparam,sys32_sched_getparam_wrapper) /* 155 */ 166SYSCALL(sys_sched_getparam,sys_sched_getparam,compat_sys_sched_getparam) /* 155 */
167SYSCALL(sys_sched_setscheduler,sys_sched_setscheduler,sys32_sched_setscheduler_wrapper) 167SYSCALL(sys_sched_setscheduler,sys_sched_setscheduler,compat_sys_sched_setscheduler)
168SYSCALL(sys_sched_getscheduler,sys_sched_getscheduler,sys32_sched_getscheduler_wrapper) 168SYSCALL(sys_sched_getscheduler,sys_sched_getscheduler,compat_sys_sched_getscheduler)
169SYSCALL(sys_sched_yield,sys_sched_yield,sys_sched_yield) 169SYSCALL(sys_sched_yield,sys_sched_yield,sys_sched_yield)
170SYSCALL(sys_sched_get_priority_max,sys_sched_get_priority_max,sys32_sched_get_priority_max_wrapper) 170SYSCALL(sys_sched_get_priority_max,sys_sched_get_priority_max,compat_sys_sched_get_priority_max)
171SYSCALL(sys_sched_get_priority_min,sys_sched_get_priority_min,sys32_sched_get_priority_min_wrapper) /* 160 */ 171SYSCALL(sys_sched_get_priority_min,sys_sched_get_priority_min,compat_sys_sched_get_priority_min) /* 160 */
172SYSCALL(sys_sched_rr_get_interval,sys_sched_rr_get_interval,compat_sys_sched_rr_get_interval) 172SYSCALL(sys_sched_rr_get_interval,sys_sched_rr_get_interval,compat_sys_sched_rr_get_interval)
173SYSCALL(sys_nanosleep,sys_nanosleep,compat_sys_nanosleep_wrapper) 173SYSCALL(sys_nanosleep,sys_nanosleep,compat_sys_nanosleep)
174SYSCALL(sys_mremap,sys_mremap,sys32_mremap_wrapper) 174SYSCALL(sys_mremap,sys_mremap,compat_sys_mremap)
175SYSCALL(sys_setresuid16,sys_ni_syscall,sys32_setresuid16_wrapper) /* old setresuid16 syscall */ 175SYSCALL(sys_setresuid16,sys_ni_syscall,compat_sys_s390_setresuid16) /* old setresuid16 syscall */
176SYSCALL(sys_getresuid16,sys_ni_syscall,sys32_getresuid16_wrapper) /* 165 old getresuid16 syscall */ 176SYSCALL(sys_getresuid16,sys_ni_syscall,compat_sys_s390_getresuid16) /* 165 old getresuid16 syscall */
177NI_SYSCALL /* for vm86 */ 177NI_SYSCALL /* for vm86 */
178NI_SYSCALL /* old sys_query_module */ 178NI_SYSCALL /* old sys_query_module */
179SYSCALL(sys_poll,sys_poll,sys32_poll_wrapper) 179SYSCALL(sys_poll,sys_poll,compat_sys_poll)
180NI_SYSCALL /* old nfsservctl */ 180NI_SYSCALL /* old nfsservctl */
181SYSCALL(sys_setresgid16,sys_ni_syscall,sys32_setresgid16_wrapper) /* 170 old setresgid16 syscall */ 181SYSCALL(sys_setresgid16,sys_ni_syscall,compat_sys_s390_setresgid16) /* 170 old setresgid16 syscall */
182SYSCALL(sys_getresgid16,sys_ni_syscall,sys32_getresgid16_wrapper) /* old getresgid16 syscall */ 182SYSCALL(sys_getresgid16,sys_ni_syscall,compat_sys_s390_getresgid16) /* old getresgid16 syscall */
183SYSCALL(sys_prctl,sys_prctl,sys32_prctl_wrapper) 183SYSCALL(sys_prctl,sys_prctl,compat_sys_prctl)
184SYSCALL(sys_rt_sigreturn,sys_rt_sigreturn,sys32_rt_sigreturn) 184SYSCALL(sys_rt_sigreturn,sys_rt_sigreturn,compat_sys_rt_sigreturn)
185SYSCALL(sys_rt_sigaction,sys_rt_sigaction,compat_sys_rt_sigaction) 185SYSCALL(sys_rt_sigaction,sys_rt_sigaction,compat_sys_rt_sigaction)
186SYSCALL(sys_rt_sigprocmask,sys_rt_sigprocmask,compat_sys_rt_sigprocmask) /* 175 */ 186SYSCALL(sys_rt_sigprocmask,sys_rt_sigprocmask,compat_sys_rt_sigprocmask) /* 175 */
187SYSCALL(sys_rt_sigpending,sys_rt_sigpending,compat_sys_rt_sigpending) 187SYSCALL(sys_rt_sigpending,sys_rt_sigpending,compat_sys_rt_sigpending)
188SYSCALL(sys_rt_sigtimedwait,sys_rt_sigtimedwait,compat_sys_rt_sigtimedwait) 188SYSCALL(sys_rt_sigtimedwait,sys_rt_sigtimedwait,compat_sys_rt_sigtimedwait)
189SYSCALL(sys_rt_sigqueueinfo,sys_rt_sigqueueinfo,compat_sys_rt_sigqueueinfo) 189SYSCALL(sys_rt_sigqueueinfo,sys_rt_sigqueueinfo,compat_sys_rt_sigqueueinfo)
190SYSCALL(sys_rt_sigsuspend,sys_rt_sigsuspend,compat_sys_rt_sigsuspend) 190SYSCALL(sys_rt_sigsuspend,sys_rt_sigsuspend,compat_sys_rt_sigsuspend)
191SYSCALL(sys_pread64,sys_pread64,sys32_pread64_wrapper) /* 180 */ 191SYSCALL(sys_pread64,sys_pread64,compat_sys_s390_pread64) /* 180 */
192SYSCALL(sys_pwrite64,sys_pwrite64,sys32_pwrite64_wrapper) 192SYSCALL(sys_pwrite64,sys_pwrite64,compat_sys_s390_pwrite64)
193SYSCALL(sys_chown16,sys_ni_syscall,sys32_chown16_wrapper) /* old chown16 syscall */ 193SYSCALL(sys_chown16,sys_ni_syscall,compat_sys_s390_chown16) /* old chown16 syscall */
194SYSCALL(sys_getcwd,sys_getcwd,sys32_getcwd_wrapper) 194SYSCALL(sys_getcwd,sys_getcwd,compat_sys_getcwd)
195SYSCALL(sys_capget,sys_capget,sys32_capget_wrapper) 195SYSCALL(sys_capget,sys_capget,compat_sys_capget)
196SYSCALL(sys_capset,sys_capset,sys32_capset_wrapper) /* 185 */ 196SYSCALL(sys_capset,sys_capset,compat_sys_capset) /* 185 */
197SYSCALL(sys_sigaltstack,sys_sigaltstack,compat_sys_sigaltstack) 197SYSCALL(sys_sigaltstack,sys_sigaltstack,compat_sys_sigaltstack)
198SYSCALL(sys_sendfile,sys_sendfile64,compat_sys_sendfile) 198SYSCALL(sys_sendfile,sys_sendfile64,compat_sys_sendfile)
199NI_SYSCALL /* streams1 */ 199NI_SYSCALL /* streams1 */
200NI_SYSCALL /* streams2 */ 200NI_SYSCALL /* streams2 */
201SYSCALL(sys_vfork,sys_vfork,sys_vfork) /* 190 */ 201SYSCALL(sys_vfork,sys_vfork,sys_vfork) /* 190 */
202SYSCALL(sys_getrlimit,sys_getrlimit,compat_sys_getrlimit_wrapper) 202SYSCALL(sys_getrlimit,sys_getrlimit,compat_sys_getrlimit)
203SYSCALL(sys_mmap2,sys_mmap2,sys32_mmap2_wrapper) 203SYSCALL(sys_mmap2,sys_mmap2,compat_sys_s390_mmap2)
204SYSCALL(sys_truncate64,sys_ni_syscall,sys32_truncate64_wrapper) 204SYSCALL(sys_truncate64,sys_ni_syscall,compat_sys_s390_truncate64)
205SYSCALL(sys_ftruncate64,sys_ni_syscall,sys32_ftruncate64_wrapper) 205SYSCALL(sys_ftruncate64,sys_ni_syscall,compat_sys_s390_ftruncate64)
206SYSCALL(sys_stat64,sys_ni_syscall,sys32_stat64_wrapper) /* 195 */ 206SYSCALL(sys_stat64,sys_ni_syscall,compat_sys_s390_stat64) /* 195 */
207SYSCALL(sys_lstat64,sys_ni_syscall,sys32_lstat64_wrapper) 207SYSCALL(sys_lstat64,sys_ni_syscall,compat_sys_s390_lstat64)
208SYSCALL(sys_fstat64,sys_ni_syscall,sys32_fstat64_wrapper) 208SYSCALL(sys_fstat64,sys_ni_syscall,compat_sys_s390_fstat64)
209SYSCALL(sys_lchown,sys_lchown,sys32_lchown_wrapper) 209SYSCALL(sys_lchown,sys_lchown,compat_sys_lchown)
210SYSCALL(sys_getuid,sys_getuid,sys_getuid) 210SYSCALL(sys_getuid,sys_getuid,sys_getuid)
211SYSCALL(sys_getgid,sys_getgid,sys_getgid) /* 200 */ 211SYSCALL(sys_getgid,sys_getgid,sys_getgid) /* 200 */
212SYSCALL(sys_geteuid,sys_geteuid,sys_geteuid) 212SYSCALL(sys_geteuid,sys_geteuid,sys_geteuid)
213SYSCALL(sys_getegid,sys_getegid,sys_getegid) 213SYSCALL(sys_getegid,sys_getegid,sys_getegid)
214SYSCALL(sys_setreuid,sys_setreuid,sys32_setreuid_wrapper) 214SYSCALL(sys_setreuid,sys_setreuid,compat_sys_setreuid)
215SYSCALL(sys_setregid,sys_setregid,sys32_setregid_wrapper) 215SYSCALL(sys_setregid,sys_setregid,compat_sys_setregid)
216SYSCALL(sys_getgroups,sys_getgroups,sys32_getgroups_wrapper) /* 205 */ 216SYSCALL(sys_getgroups,sys_getgroups,compat_sys_getgroups) /* 205 */
217SYSCALL(sys_setgroups,sys_setgroups,sys32_setgroups_wrapper) 217SYSCALL(sys_setgroups,sys_setgroups,compat_sys_setgroups)
218SYSCALL(sys_fchown,sys_fchown,sys32_fchown_wrapper) 218SYSCALL(sys_fchown,sys_fchown,compat_sys_fchown)
219SYSCALL(sys_setresuid,sys_setresuid,sys32_setresuid_wrapper) 219SYSCALL(sys_setresuid,sys_setresuid,compat_sys_setresuid)
220SYSCALL(sys_getresuid,sys_getresuid,sys32_getresuid_wrapper) 220SYSCALL(sys_getresuid,sys_getresuid,compat_sys_getresuid)
221SYSCALL(sys_setresgid,sys_setresgid,sys32_setresgid_wrapper) /* 210 */ 221SYSCALL(sys_setresgid,sys_setresgid,compat_sys_setresgid) /* 210 */
222SYSCALL(sys_getresgid,sys_getresgid,sys32_getresgid_wrapper) 222SYSCALL(sys_getresgid,sys_getresgid,compat_sys_getresgid)
223SYSCALL(sys_chown,sys_chown,sys32_chown_wrapper) 223SYSCALL(sys_chown,sys_chown,compat_sys_chown)
224SYSCALL(sys_setuid,sys_setuid,sys32_setuid_wrapper) 224SYSCALL(sys_setuid,sys_setuid,compat_sys_setuid)
225SYSCALL(sys_setgid,sys_setgid,sys32_setgid_wrapper) 225SYSCALL(sys_setgid,sys_setgid,compat_sys_setgid)
226SYSCALL(sys_setfsuid,sys_setfsuid,sys32_setfsuid_wrapper) /* 215 */ 226SYSCALL(sys_setfsuid,sys_setfsuid,compat_sys_setfsuid) /* 215 */
227SYSCALL(sys_setfsgid,sys_setfsgid,sys32_setfsgid_wrapper) 227SYSCALL(sys_setfsgid,sys_setfsgid,compat_sys_setfsgid)
228SYSCALL(sys_pivot_root,sys_pivot_root,sys32_pivot_root_wrapper) 228SYSCALL(sys_pivot_root,sys_pivot_root,compat_sys_pivot_root)
229SYSCALL(sys_mincore,sys_mincore,sys32_mincore_wrapper) 229SYSCALL(sys_mincore,sys_mincore,compat_sys_mincore)
230SYSCALL(sys_madvise,sys_madvise,sys32_madvise_wrapper) 230SYSCALL(sys_madvise,sys_madvise,compat_sys_madvise)
231SYSCALL(sys_getdents64,sys_getdents64,sys32_getdents64_wrapper) /* 220 */ 231SYSCALL(sys_getdents64,sys_getdents64,compat_sys_getdents64) /* 220 */
232SYSCALL(sys_fcntl64,sys_ni_syscall,compat_sys_fcntl64_wrapper) 232SYSCALL(sys_fcntl64,sys_ni_syscall,compat_sys_fcntl64)
233SYSCALL(sys_readahead,sys_readahead,sys32_readahead_wrapper) 233SYSCALL(sys_readahead,sys_readahead,compat_sys_s390_readahead)
234SYSCALL(sys_sendfile64,sys_ni_syscall,compat_sys_sendfile64) 234SYSCALL(sys_sendfile64,sys_ni_syscall,compat_sys_sendfile64)
235SYSCALL(sys_setxattr,sys_setxattr,sys32_setxattr_wrapper) 235SYSCALL(sys_setxattr,sys_setxattr,compat_sys_setxattr)
236SYSCALL(sys_lsetxattr,sys_lsetxattr,sys32_lsetxattr_wrapper) /* 225 */ 236SYSCALL(sys_lsetxattr,sys_lsetxattr,compat_sys_lsetxattr) /* 225 */
237SYSCALL(sys_fsetxattr,sys_fsetxattr,sys32_fsetxattr_wrapper) 237SYSCALL(sys_fsetxattr,sys_fsetxattr,compat_sys_fsetxattr)
238SYSCALL(sys_getxattr,sys_getxattr,sys32_getxattr_wrapper) 238SYSCALL(sys_getxattr,sys_getxattr,compat_sys_getxattr)
239SYSCALL(sys_lgetxattr,sys_lgetxattr,sys32_lgetxattr_wrapper) 239SYSCALL(sys_lgetxattr,sys_lgetxattr,compat_sys_lgetxattr)
240SYSCALL(sys_fgetxattr,sys_fgetxattr,sys32_fgetxattr_wrapper) 240SYSCALL(sys_fgetxattr,sys_fgetxattr,compat_sys_fgetxattr)
241SYSCALL(sys_listxattr,sys_listxattr,sys32_listxattr_wrapper) /* 230 */ 241SYSCALL(sys_listxattr,sys_listxattr,compat_sys_listxattr) /* 230 */
242SYSCALL(sys_llistxattr,sys_llistxattr,sys32_llistxattr_wrapper) 242SYSCALL(sys_llistxattr,sys_llistxattr,compat_sys_llistxattr)
243SYSCALL(sys_flistxattr,sys_flistxattr,sys32_flistxattr_wrapper) 243SYSCALL(sys_flistxattr,sys_flistxattr,compat_sys_flistxattr)
244SYSCALL(sys_removexattr,sys_removexattr,sys32_removexattr_wrapper) 244SYSCALL(sys_removexattr,sys_removexattr,compat_sys_removexattr)
245SYSCALL(sys_lremovexattr,sys_lremovexattr,sys32_lremovexattr_wrapper) 245SYSCALL(sys_lremovexattr,sys_lremovexattr,compat_sys_lremovexattr)
246SYSCALL(sys_fremovexattr,sys_fremovexattr,sys32_fremovexattr_wrapper) /* 235 */ 246SYSCALL(sys_fremovexattr,sys_fremovexattr,compat_sys_fremovexattr) /* 235 */
247SYSCALL(sys_gettid,sys_gettid,sys_gettid) 247SYSCALL(sys_gettid,sys_gettid,sys_gettid)
248SYSCALL(sys_tkill,sys_tkill,sys_tkill_wrapper) 248SYSCALL(sys_tkill,sys_tkill,compat_sys_tkill)
249SYSCALL(sys_futex,sys_futex,compat_sys_futex) 249SYSCALL(sys_futex,sys_futex,compat_sys_futex)
250SYSCALL(sys_sched_setaffinity,sys_sched_setaffinity,sys32_sched_setaffinity_wrapper) 250SYSCALL(sys_sched_setaffinity,sys_sched_setaffinity,compat_sys_sched_setaffinity)
251SYSCALL(sys_sched_getaffinity,sys_sched_getaffinity,sys32_sched_getaffinity_wrapper) /* 240 */ 251SYSCALL(sys_sched_getaffinity,sys_sched_getaffinity,compat_sys_sched_getaffinity) /* 240 */
252SYSCALL(sys_tgkill,sys_tgkill,sys_tgkill_wrapper) 252SYSCALL(sys_tgkill,sys_tgkill,compat_sys_tgkill)
253NI_SYSCALL /* reserved for TUX */ 253NI_SYSCALL /* reserved for TUX */
254SYSCALL(sys_io_setup,sys_io_setup,sys32_io_setup_wrapper) 254SYSCALL(sys_io_setup,sys_io_setup,compat_sys_io_setup)
255SYSCALL(sys_io_destroy,sys_io_destroy,sys32_io_destroy_wrapper) 255SYSCALL(sys_io_destroy,sys_io_destroy,compat_sys_io_destroy)
256SYSCALL(sys_io_getevents,sys_io_getevents,sys32_io_getevents_wrapper) /* 245 */ 256SYSCALL(sys_io_getevents,sys_io_getevents,compat_sys_io_getevents) /* 245 */
257SYSCALL(sys_io_submit,sys_io_submit,sys32_io_submit_wrapper) 257SYSCALL(sys_io_submit,sys_io_submit,compat_sys_io_submit)
258SYSCALL(sys_io_cancel,sys_io_cancel,sys32_io_cancel_wrapper) 258SYSCALL(sys_io_cancel,sys_io_cancel,compat_sys_io_cancel)
259SYSCALL(sys_exit_group,sys_exit_group,sys32_exit_group_wrapper) 259SYSCALL(sys_exit_group,sys_exit_group,compat_sys_exit_group)
260SYSCALL(sys_epoll_create,sys_epoll_create,sys_epoll_create_wrapper) 260SYSCALL(sys_epoll_create,sys_epoll_create,compat_sys_epoll_create)
261SYSCALL(sys_epoll_ctl,sys_epoll_ctl,sys_epoll_ctl_wrapper) /* 250 */ 261SYSCALL(sys_epoll_ctl,sys_epoll_ctl,compat_sys_epoll_ctl) /* 250 */
262SYSCALL(sys_epoll_wait,sys_epoll_wait,sys_epoll_wait_wrapper) 262SYSCALL(sys_epoll_wait,sys_epoll_wait,compat_sys_epoll_wait)
263SYSCALL(sys_set_tid_address,sys_set_tid_address,sys32_set_tid_address_wrapper) 263SYSCALL(sys_set_tid_address,sys_set_tid_address,compat_sys_set_tid_address)
264SYSCALL(sys_s390_fadvise64,sys_fadvise64_64,sys32_fadvise64_wrapper) 264SYSCALL(sys_s390_fadvise64,sys_fadvise64_64,compat_sys_s390_fadvise64)
265SYSCALL(sys_timer_create,sys_timer_create,sys32_timer_create_wrapper) 265SYSCALL(sys_timer_create,sys_timer_create,compat_sys_timer_create)
266SYSCALL(sys_timer_settime,sys_timer_settime,sys32_timer_settime_wrapper) /* 255 */ 266SYSCALL(sys_timer_settime,sys_timer_settime,compat_sys_timer_settime) /* 255 */
267SYSCALL(sys_timer_gettime,sys_timer_gettime,sys32_timer_gettime_wrapper) 267SYSCALL(sys_timer_gettime,sys_timer_gettime,compat_sys_timer_gettime)
268SYSCALL(sys_timer_getoverrun,sys_timer_getoverrun,sys32_timer_getoverrun_wrapper) 268SYSCALL(sys_timer_getoverrun,sys_timer_getoverrun,compat_sys_timer_getoverrun)
269SYSCALL(sys_timer_delete,sys_timer_delete,sys32_timer_delete_wrapper) 269SYSCALL(sys_timer_delete,sys_timer_delete,compat_sys_timer_delete)
270SYSCALL(sys_clock_settime,sys_clock_settime,sys32_clock_settime_wrapper) 270SYSCALL(sys_clock_settime,sys_clock_settime,compat_sys_clock_settime)
271SYSCALL(sys_clock_gettime,sys_clock_gettime,sys32_clock_gettime_wrapper) /* 260 */ 271SYSCALL(sys_clock_gettime,sys_clock_gettime,compat_sys_clock_gettime) /* 260 */
272SYSCALL(sys_clock_getres,sys_clock_getres,sys32_clock_getres_wrapper) 272SYSCALL(sys_clock_getres,sys_clock_getres,compat_sys_clock_getres)
273SYSCALL(sys_clock_nanosleep,sys_clock_nanosleep,sys32_clock_nanosleep_wrapper) 273SYSCALL(sys_clock_nanosleep,sys_clock_nanosleep,compat_sys_clock_nanosleep)
274NI_SYSCALL /* reserved for vserver */ 274NI_SYSCALL /* reserved for vserver */
275SYSCALL(sys_s390_fadvise64_64,sys_ni_syscall,sys32_fadvise64_64_wrapper) 275SYSCALL(sys_s390_fadvise64_64,sys_ni_syscall,compat_sys_s390_fadvise64_64)
276SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64_wrapper) 276SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64)
277SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64_wrapper) 277SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64)
278SYSCALL(sys_remap_file_pages,sys_remap_file_pages,sys32_remap_file_pages_wrapper) 278SYSCALL(sys_remap_file_pages,sys_remap_file_pages,compat_sys_remap_file_pages)
279NI_SYSCALL /* 268 sys_mbind */ 279NI_SYSCALL /* 268 sys_mbind */
280NI_SYSCALL /* 269 sys_get_mempolicy */ 280NI_SYSCALL /* 269 sys_get_mempolicy */
281NI_SYSCALL /* 270 sys_set_mempolicy */ 281NI_SYSCALL /* 270 sys_set_mempolicy */
282SYSCALL(sys_mq_open,sys_mq_open,compat_sys_mq_open_wrapper) 282SYSCALL(sys_mq_open,sys_mq_open,compat_sys_mq_open)
283SYSCALL(sys_mq_unlink,sys_mq_unlink,sys32_mq_unlink_wrapper) 283SYSCALL(sys_mq_unlink,sys_mq_unlink,compat_sys_mq_unlink)
284SYSCALL(sys_mq_timedsend,sys_mq_timedsend,compat_sys_mq_timedsend_wrapper) 284SYSCALL(sys_mq_timedsend,sys_mq_timedsend,compat_sys_mq_timedsend)
285SYSCALL(sys_mq_timedreceive,sys_mq_timedreceive,compat_sys_mq_timedreceive_wrapper) 285SYSCALL(sys_mq_timedreceive,sys_mq_timedreceive,compat_sys_mq_timedreceive)
286SYSCALL(sys_mq_notify,sys_mq_notify,compat_sys_mq_notify_wrapper) /* 275 */ 286SYSCALL(sys_mq_notify,sys_mq_notify,compat_sys_mq_notify) /* 275 */
287SYSCALL(sys_mq_getsetattr,sys_mq_getsetattr,compat_sys_mq_getsetattr_wrapper) 287SYSCALL(sys_mq_getsetattr,sys_mq_getsetattr,compat_sys_mq_getsetattr)
288SYSCALL(sys_kexec_load,sys_kexec_load,compat_sys_kexec_load_wrapper) 288SYSCALL(sys_kexec_load,sys_kexec_load,compat_sys_kexec_load)
289SYSCALL(sys_add_key,sys_add_key,compat_sys_add_key_wrapper) 289SYSCALL(sys_add_key,sys_add_key,compat_sys_add_key)
290SYSCALL(sys_request_key,sys_request_key,compat_sys_request_key_wrapper) 290SYSCALL(sys_request_key,sys_request_key,compat_sys_request_key)
291SYSCALL(sys_keyctl,sys_keyctl,compat_sys_keyctl_wrapper) /* 280 */ 291SYSCALL(sys_keyctl,sys_keyctl,compat_sys_keyctl) /* 280 */
292SYSCALL(sys_waitid,sys_waitid,compat_sys_waitid) 292SYSCALL(sys_waitid,sys_waitid,compat_sys_waitid)
293SYSCALL(sys_ioprio_set,sys_ioprio_set,sys_ioprio_set_wrapper) 293SYSCALL(sys_ioprio_set,sys_ioprio_set,compat_sys_ioprio_set)
294SYSCALL(sys_ioprio_get,sys_ioprio_get,sys_ioprio_get_wrapper) 294SYSCALL(sys_ioprio_get,sys_ioprio_get,compat_sys_ioprio_get)
295SYSCALL(sys_inotify_init,sys_inotify_init,sys_inotify_init) 295SYSCALL(sys_inotify_init,sys_inotify_init,sys_inotify_init)
296SYSCALL(sys_inotify_add_watch,sys_inotify_add_watch,sys_inotify_add_watch_wrapper) /* 285 */ 296SYSCALL(sys_inotify_add_watch,sys_inotify_add_watch,compat_sys_inotify_add_watch) /* 285 */
297SYSCALL(sys_inotify_rm_watch,sys_inotify_rm_watch,sys_inotify_rm_watch_wrapper) 297SYSCALL(sys_inotify_rm_watch,sys_inotify_rm_watch,compat_sys_inotify_rm_watch)
298NI_SYSCALL /* 287 sys_migrate_pages */ 298NI_SYSCALL /* 287 sys_migrate_pages */
299SYSCALL(sys_openat,sys_openat,compat_sys_openat) 299SYSCALL(sys_openat,sys_openat,compat_sys_openat)
300SYSCALL(sys_mkdirat,sys_mkdirat,sys_mkdirat_wrapper) 300SYSCALL(sys_mkdirat,sys_mkdirat,compat_sys_mkdirat)
301SYSCALL(sys_mknodat,sys_mknodat,sys_mknodat_wrapper) /* 290 */ 301SYSCALL(sys_mknodat,sys_mknodat,compat_sys_mknodat) /* 290 */
302SYSCALL(sys_fchownat,sys_fchownat,sys_fchownat_wrapper) 302SYSCALL(sys_fchownat,sys_fchownat,compat_sys_fchownat)
303SYSCALL(sys_futimesat,sys_futimesat,compat_sys_futimesat_wrapper) 303SYSCALL(sys_futimesat,sys_futimesat,compat_sys_futimesat)
304SYSCALL(sys_fstatat64,sys_newfstatat,sys32_fstatat64_wrapper) 304SYSCALL(sys_fstatat64,sys_newfstatat,compat_sys_s390_fstatat64)
305SYSCALL(sys_unlinkat,sys_unlinkat,sys_unlinkat_wrapper) 305SYSCALL(sys_unlinkat,sys_unlinkat,compat_sys_unlinkat)
306SYSCALL(sys_renameat,sys_renameat,sys_renameat_wrapper) /* 295 */ 306SYSCALL(sys_renameat,sys_renameat,compat_sys_renameat) /* 295 */
307SYSCALL(sys_linkat,sys_linkat,sys_linkat_wrapper) 307SYSCALL(sys_linkat,sys_linkat,compat_sys_linkat)
308SYSCALL(sys_symlinkat,sys_symlinkat,sys_symlinkat_wrapper) 308SYSCALL(sys_symlinkat,sys_symlinkat,compat_sys_symlinkat)
309SYSCALL(sys_readlinkat,sys_readlinkat,sys_readlinkat_wrapper) 309SYSCALL(sys_readlinkat,sys_readlinkat,compat_sys_readlinkat)
310SYSCALL(sys_fchmodat,sys_fchmodat,sys_fchmodat_wrapper) 310SYSCALL(sys_fchmodat,sys_fchmodat,compat_sys_fchmodat)
311SYSCALL(sys_faccessat,sys_faccessat,sys_faccessat_wrapper) /* 300 */ 311SYSCALL(sys_faccessat,sys_faccessat,compat_sys_faccessat) /* 300 */
312SYSCALL(sys_pselect6,sys_pselect6,compat_sys_pselect6_wrapper) 312SYSCALL(sys_pselect6,sys_pselect6,compat_sys_pselect6)
313SYSCALL(sys_ppoll,sys_ppoll,compat_sys_ppoll_wrapper) 313SYSCALL(sys_ppoll,sys_ppoll,compat_sys_ppoll)
314SYSCALL(sys_unshare,sys_unshare,sys_unshare_wrapper) 314SYSCALL(sys_unshare,sys_unshare,compat_sys_unshare)
315SYSCALL(sys_set_robust_list,sys_set_robust_list,compat_sys_set_robust_list) 315SYSCALL(sys_set_robust_list,sys_set_robust_list,compat_sys_set_robust_list)
316SYSCALL(sys_get_robust_list,sys_get_robust_list,compat_sys_get_robust_list) 316SYSCALL(sys_get_robust_list,sys_get_robust_list,compat_sys_get_robust_list)
317SYSCALL(sys_splice,sys_splice,sys_splice_wrapper) 317SYSCALL(sys_splice,sys_splice,compat_sys_splice)
318SYSCALL(sys_sync_file_range,sys_sync_file_range,sys_sync_file_range_wrapper) 318SYSCALL(sys_sync_file_range,sys_sync_file_range,compat_sys_s390_sync_file_range)
319SYSCALL(sys_tee,sys_tee,sys_tee_wrapper) 319SYSCALL(sys_tee,sys_tee,compat_sys_tee)
320SYSCALL(sys_vmsplice,sys_vmsplice,compat_sys_vmsplice) 320SYSCALL(sys_vmsplice,sys_vmsplice,compat_sys_vmsplice)
321NI_SYSCALL /* 310 sys_move_pages */ 321NI_SYSCALL /* 310 sys_move_pages */
322SYSCALL(sys_getcpu,sys_getcpu,sys_getcpu_wrapper) 322SYSCALL(sys_getcpu,sys_getcpu,compat_sys_getcpu)
323SYSCALL(sys_epoll_pwait,sys_epoll_pwait,compat_sys_epoll_pwait) 323SYSCALL(sys_epoll_pwait,sys_epoll_pwait,compat_sys_epoll_pwait)
324SYSCALL(sys_utimes,sys_utimes,compat_sys_utimes_wrapper) 324SYSCALL(sys_utimes,sys_utimes,compat_sys_utimes)
325SYSCALL(sys_s390_fallocate,sys_fallocate,sys_fallocate_wrapper) 325SYSCALL(sys_s390_fallocate,sys_fallocate,compat_sys_s390_fallocate)
326SYSCALL(sys_utimensat,sys_utimensat,compat_sys_utimensat_wrapper) /* 315 */ 326SYSCALL(sys_utimensat,sys_utimensat,compat_sys_utimensat) /* 315 */
327SYSCALL(sys_signalfd,sys_signalfd,compat_sys_signalfd) 327SYSCALL(sys_signalfd,sys_signalfd,compat_sys_signalfd)
328NI_SYSCALL /* 317 old sys_timer_fd */ 328NI_SYSCALL /* 317 old sys_timer_fd */
329SYSCALL(sys_eventfd,sys_eventfd,sys_eventfd_wrapper) 329SYSCALL(sys_eventfd,sys_eventfd,compat_sys_eventfd)
330SYSCALL(sys_timerfd_create,sys_timerfd_create,sys_timerfd_create_wrapper) 330SYSCALL(sys_timerfd_create,sys_timerfd_create,compat_sys_timerfd_create)
331SYSCALL(sys_timerfd_settime,sys_timerfd_settime,compat_sys_timerfd_settime) /* 320 */ 331SYSCALL(sys_timerfd_settime,sys_timerfd_settime,compat_sys_timerfd_settime) /* 320 */
332SYSCALL(sys_timerfd_gettime,sys_timerfd_gettime,compat_sys_timerfd_gettime) 332SYSCALL(sys_timerfd_gettime,sys_timerfd_gettime,compat_sys_timerfd_gettime)
333SYSCALL(sys_signalfd4,sys_signalfd4,compat_sys_signalfd4) 333SYSCALL(sys_signalfd4,sys_signalfd4,compat_sys_signalfd4)
334SYSCALL(sys_eventfd2,sys_eventfd2,sys_eventfd2_wrapper) 334SYSCALL(sys_eventfd2,sys_eventfd2,compat_sys_eventfd2)
335SYSCALL(sys_inotify_init1,sys_inotify_init1,sys_inotify_init1_wrapper) 335SYSCALL(sys_inotify_init1,sys_inotify_init1,compat_sys_inotify_init1)
336SYSCALL(sys_pipe2,sys_pipe2,sys_pipe2_wrapper) /* 325 */ 336SYSCALL(sys_pipe2,sys_pipe2,compat_sys_pipe2) /* 325 */
337SYSCALL(sys_dup3,sys_dup3,sys_dup3_wrapper) 337SYSCALL(sys_dup3,sys_dup3,compat_sys_dup3)
338SYSCALL(sys_epoll_create1,sys_epoll_create1,sys_epoll_create1_wrapper) 338SYSCALL(sys_epoll_create1,sys_epoll_create1,compat_sys_epoll_create1)
339SYSCALL(sys_preadv,sys_preadv,compat_sys_preadv) 339SYSCALL(sys_preadv,sys_preadv,compat_sys_preadv)
340SYSCALL(sys_pwritev,sys_pwritev,compat_sys_pwritev) 340SYSCALL(sys_pwritev,sys_pwritev,compat_sys_pwritev)
341SYSCALL(sys_rt_tgsigqueueinfo,sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo) /* 330 */ 341SYSCALL(sys_rt_tgsigqueueinfo,sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo) /* 330 */
342SYSCALL(sys_perf_event_open,sys_perf_event_open,sys_perf_event_open_wrapper) 342SYSCALL(sys_perf_event_open,sys_perf_event_open,compat_sys_perf_event_open)
343SYSCALL(sys_fanotify_init,sys_fanotify_init,sys_fanotify_init_wrapper) 343SYSCALL(sys_fanotify_init,sys_fanotify_init,compat_sys_fanotify_init)
344SYSCALL(sys_fanotify_mark,sys_fanotify_mark,compat_sys_fanotify_mark) 344SYSCALL(sys_fanotify_mark,sys_fanotify_mark,compat_sys_fanotify_mark)
345SYSCALL(sys_prlimit64,sys_prlimit64,sys_prlimit64_wrapper) 345SYSCALL(sys_prlimit64,sys_prlimit64,compat_sys_prlimit64)
346SYSCALL(sys_name_to_handle_at,sys_name_to_handle_at,sys_name_to_handle_at_wrapper) /* 335 */ 346SYSCALL(sys_name_to_handle_at,sys_name_to_handle_at,compat_sys_name_to_handle_at) /* 335 */
347SYSCALL(sys_open_by_handle_at,sys_open_by_handle_at,compat_sys_open_by_handle_at) 347SYSCALL(sys_open_by_handle_at,sys_open_by_handle_at,compat_sys_open_by_handle_at)
348SYSCALL(sys_clock_adjtime,sys_clock_adjtime,compat_sys_clock_adjtime_wrapper) 348SYSCALL(sys_clock_adjtime,sys_clock_adjtime,compat_sys_clock_adjtime)
349SYSCALL(sys_syncfs,sys_syncfs,sys_syncfs_wrapper) 349SYSCALL(sys_syncfs,sys_syncfs,compat_sys_syncfs)
350SYSCALL(sys_setns,sys_setns,sys_setns_wrapper) 350SYSCALL(sys_setns,sys_setns,compat_sys_setns)
351SYSCALL(sys_process_vm_readv,sys_process_vm_readv,compat_sys_process_vm_readv_wrapper) /* 340 */ 351SYSCALL(sys_process_vm_readv,sys_process_vm_readv,compat_sys_process_vm_readv) /* 340 */
352SYSCALL(sys_process_vm_writev,sys_process_vm_writev,compat_sys_process_vm_writev_wrapper) 352SYSCALL(sys_process_vm_writev,sys_process_vm_writev,compat_sys_process_vm_writev)
353SYSCALL(sys_ni_syscall,sys_s390_runtime_instr,sys_s390_runtime_instr_wrapper) 353SYSCALL(sys_ni_syscall,sys_s390_runtime_instr,compat_sys_s390_runtime_instr)
354SYSCALL(sys_kcmp,sys_kcmp,sys_kcmp_wrapper) 354SYSCALL(sys_kcmp,sys_kcmp,compat_sys_kcmp)
355SYSCALL(sys_finit_module,sys_finit_module,sys_finit_module_wrapper) 355SYSCALL(sys_finit_module,sys_finit_module,compat_sys_finit_module)
356SYSCALL(sys_sched_setattr,sys_sched_setattr,sys_sched_setattr_wrapper) /* 345 */ 356SYSCALL(sys_sched_setattr,sys_sched_setattr,compat_sys_sched_setattr) /* 345 */
357SYSCALL(sys_sched_getattr,sys_sched_getattr,sys_sched_getattr_wrapper) 357SYSCALL(sys_sched_getattr,sys_sched_getattr,compat_sys_sched_getattr)
diff --git a/arch/x86/include/asm/unistd.h b/arch/x86/include/asm/unistd.h
index c2a48139c340..3f556c6a0157 100644
--- a/arch/x86/include/asm/unistd.h
+++ b/arch/x86/include/asm/unistd.h
@@ -23,6 +23,9 @@
23# include <asm/unistd_64.h> 23# include <asm/unistd_64.h>
24# include <asm/unistd_64_x32.h> 24# include <asm/unistd_64_x32.h>
25# define __ARCH_WANT_COMPAT_SYS_TIME 25# define __ARCH_WANT_COMPAT_SYS_TIME
26# define __ARCH_WANT_COMPAT_SYS_GETDENTS64
27# define __ARCH_WANT_COMPAT_SYS_PREADV64
28# define __ARCH_WANT_COMPAT_SYS_PWRITEV64
26 29
27# endif 30# endif
28 31
diff --git a/fs/compat.c b/fs/compat.c
index 6af20de2c1a3..19252b97f0cc 100644
--- a/fs/compat.c
+++ b/fs/compat.c
@@ -72,8 +72,8 @@ int compat_printk(const char *fmt, ...)
72 * Not all architectures have sys_utime, so implement this in terms 72 * Not all architectures have sys_utime, so implement this in terms
73 * of sys_utimes. 73 * of sys_utimes.
74 */ 74 */
75asmlinkage long compat_sys_utime(const char __user *filename, 75COMPAT_SYSCALL_DEFINE2(utime, const char __user *, filename,
76 struct compat_utimbuf __user *t) 76 struct compat_utimbuf __user *, t)
77{ 77{
78 struct timespec tv[2]; 78 struct timespec tv[2];
79 79
@@ -87,7 +87,7 @@ asmlinkage long compat_sys_utime(const char __user *filename,
87 return do_utimes(AT_FDCWD, filename, t ? tv : NULL, 0); 87 return do_utimes(AT_FDCWD, filename, t ? tv : NULL, 0);
88} 88}
89 89
90asmlinkage long compat_sys_utimensat(unsigned int dfd, const char __user *filename, struct compat_timespec __user *t, int flags) 90COMPAT_SYSCALL_DEFINE4(utimensat, unsigned int, dfd, const char __user *, filename, struct compat_timespec __user *, t, int, flags)
91{ 91{
92 struct timespec tv[2]; 92 struct timespec tv[2];
93 93
@@ -102,7 +102,7 @@ asmlinkage long compat_sys_utimensat(unsigned int dfd, const char __user *filena
102 return do_utimes(dfd, filename, t ? tv : NULL, flags); 102 return do_utimes(dfd, filename, t ? tv : NULL, flags);
103} 103}
104 104
105asmlinkage long compat_sys_futimesat(unsigned int dfd, const char __user *filename, struct compat_timeval __user *t) 105COMPAT_SYSCALL_DEFINE3(futimesat, unsigned int, dfd, const char __user *, filename, struct compat_timeval __user *, t)
106{ 106{
107 struct timespec tv[2]; 107 struct timespec tv[2];
108 108
@@ -121,7 +121,7 @@ asmlinkage long compat_sys_futimesat(unsigned int dfd, const char __user *filena
121 return do_utimes(dfd, filename, t ? tv : NULL, 0); 121 return do_utimes(dfd, filename, t ? tv : NULL, 0);
122} 122}
123 123
124asmlinkage long compat_sys_utimes(const char __user *filename, struct compat_timeval __user *t) 124COMPAT_SYSCALL_DEFINE2(utimes, const char __user *, filename, struct compat_timeval __user *, t)
125{ 125{
126 return compat_sys_futimesat(AT_FDCWD, filename, t); 126 return compat_sys_futimesat(AT_FDCWD, filename, t);
127} 127}
@@ -159,8 +159,8 @@ static int cp_compat_stat(struct kstat *stat, struct compat_stat __user *ubuf)
159 return copy_to_user(ubuf, &tmp, sizeof(tmp)) ? -EFAULT : 0; 159 return copy_to_user(ubuf, &tmp, sizeof(tmp)) ? -EFAULT : 0;
160} 160}
161 161
162asmlinkage long compat_sys_newstat(const char __user * filename, 162COMPAT_SYSCALL_DEFINE2(newstat, const char __user *, filename,
163 struct compat_stat __user *statbuf) 163 struct compat_stat __user *, statbuf)
164{ 164{
165 struct kstat stat; 165 struct kstat stat;
166 int error; 166 int error;
@@ -171,8 +171,8 @@ asmlinkage long compat_sys_newstat(const char __user * filename,
171 return cp_compat_stat(&stat, statbuf); 171 return cp_compat_stat(&stat, statbuf);
172} 172}
173 173
174asmlinkage long compat_sys_newlstat(const char __user * filename, 174COMPAT_SYSCALL_DEFINE2(newlstat, const char __user *, filename,
175 struct compat_stat __user *statbuf) 175 struct compat_stat __user *, statbuf)
176{ 176{
177 struct kstat stat; 177 struct kstat stat;
178 int error; 178 int error;
@@ -184,9 +184,9 @@ asmlinkage long compat_sys_newlstat(const char __user * filename,
184} 184}
185 185
186#ifndef __ARCH_WANT_STAT64 186#ifndef __ARCH_WANT_STAT64
187asmlinkage long compat_sys_newfstatat(unsigned int dfd, 187COMPAT_SYSCALL_DEFINE4(newfstatat, unsigned int, dfd,
188 const char __user *filename, 188 const char __user *, filename,
189 struct compat_stat __user *statbuf, int flag) 189 struct compat_stat __user *, statbuf, int, flag)
190{ 190{
191 struct kstat stat; 191 struct kstat stat;
192 int error; 192 int error;
@@ -198,8 +198,8 @@ asmlinkage long compat_sys_newfstatat(unsigned int dfd,
198} 198}
199#endif 199#endif
200 200
201asmlinkage long compat_sys_newfstat(unsigned int fd, 201COMPAT_SYSCALL_DEFINE2(newfstat, unsigned int, fd,
202 struct compat_stat __user * statbuf) 202 struct compat_stat __user *, statbuf)
203{ 203{
204 struct kstat stat; 204 struct kstat stat;
205 int error = vfs_fstat(fd, &stat); 205 int error = vfs_fstat(fd, &stat);
@@ -247,7 +247,7 @@ static int put_compat_statfs(struct compat_statfs __user *ubuf, struct kstatfs *
247 * The following statfs calls are copies of code from fs/statfs.c and 247 * The following statfs calls are copies of code from fs/statfs.c and
248 * should be checked against those from time to time 248 * should be checked against those from time to time
249 */ 249 */
250asmlinkage long compat_sys_statfs(const char __user *pathname, struct compat_statfs __user *buf) 250COMPAT_SYSCALL_DEFINE2(statfs, const char __user *, pathname, struct compat_statfs __user *, buf)
251{ 251{
252 struct kstatfs tmp; 252 struct kstatfs tmp;
253 int error = user_statfs(pathname, &tmp); 253 int error = user_statfs(pathname, &tmp);
@@ -256,7 +256,7 @@ asmlinkage long compat_sys_statfs(const char __user *pathname, struct compat_sta
256 return error; 256 return error;
257} 257}
258 258
259asmlinkage long compat_sys_fstatfs(unsigned int fd, struct compat_statfs __user *buf) 259COMPAT_SYSCALL_DEFINE2(fstatfs, unsigned int, fd, struct compat_statfs __user *, buf)
260{ 260{
261 struct kstatfs tmp; 261 struct kstatfs tmp;
262 int error = fd_statfs(fd, &tmp); 262 int error = fd_statfs(fd, &tmp);
@@ -298,7 +298,7 @@ static int put_compat_statfs64(struct compat_statfs64 __user *ubuf, struct kstat
298 return 0; 298 return 0;
299} 299}
300 300
301asmlinkage long compat_sys_statfs64(const char __user *pathname, compat_size_t sz, struct compat_statfs64 __user *buf) 301COMPAT_SYSCALL_DEFINE3(statfs64, const char __user *, pathname, compat_size_t, sz, struct compat_statfs64 __user *, buf)
302{ 302{
303 struct kstatfs tmp; 303 struct kstatfs tmp;
304 int error; 304 int error;
@@ -312,7 +312,7 @@ asmlinkage long compat_sys_statfs64(const char __user *pathname, compat_size_t s
312 return error; 312 return error;
313} 313}
314 314
315asmlinkage long compat_sys_fstatfs64(unsigned int fd, compat_size_t sz, struct compat_statfs64 __user *buf) 315COMPAT_SYSCALL_DEFINE3(fstatfs64, unsigned int, fd, compat_size_t, sz, struct compat_statfs64 __user *, buf)
316{ 316{
317 struct kstatfs tmp; 317 struct kstatfs tmp;
318 int error; 318 int error;
@@ -331,7 +331,7 @@ asmlinkage long compat_sys_fstatfs64(unsigned int fd, compat_size_t sz, struct c
331 * Given how simple this syscall is that apporach is more maintainable 331 * Given how simple this syscall is that apporach is more maintainable
332 * than the various conversion hacks. 332 * than the various conversion hacks.
333 */ 333 */
334asmlinkage long compat_sys_ustat(unsigned dev, struct compat_ustat __user *u) 334COMPAT_SYSCALL_DEFINE2(ustat, unsigned, dev, struct compat_ustat __user *, u)
335{ 335{
336 struct compat_ustat tmp; 336 struct compat_ustat tmp;
337 struct kstatfs sbuf; 337 struct kstatfs sbuf;
@@ -399,8 +399,8 @@ static int put_compat_flock64(struct flock *kfl, struct compat_flock64 __user *u
399} 399}
400#endif 400#endif
401 401
402asmlinkage long compat_sys_fcntl64(unsigned int fd, unsigned int cmd, 402COMPAT_SYSCALL_DEFINE3(fcntl64, unsigned int, fd, unsigned int, cmd,
403 unsigned long arg) 403 compat_ulong_t, arg)
404{ 404{
405 mm_segment_t old_fs; 405 mm_segment_t old_fs;
406 struct flock f; 406 struct flock f;
@@ -468,16 +468,15 @@ asmlinkage long compat_sys_fcntl64(unsigned int fd, unsigned int cmd,
468 return ret; 468 return ret;
469} 469}
470 470
471asmlinkage long compat_sys_fcntl(unsigned int fd, unsigned int cmd, 471COMPAT_SYSCALL_DEFINE3(fcntl, unsigned int, fd, unsigned int, cmd,
472 unsigned long arg) 472 compat_ulong_t, arg)
473{ 473{
474 if ((cmd == F_GETLK64) || (cmd == F_SETLK64) || (cmd == F_SETLKW64)) 474 if ((cmd == F_GETLK64) || (cmd == F_SETLK64) || (cmd == F_SETLKW64))
475 return -EINVAL; 475 return -EINVAL;
476 return compat_sys_fcntl64(fd, cmd, arg); 476 return compat_sys_fcntl64(fd, cmd, arg);
477} 477}
478 478
479asmlinkage long 479COMPAT_SYSCALL_DEFINE2(io_setup, unsigned, nr_reqs, u32 __user *, ctx32p)
480compat_sys_io_setup(unsigned nr_reqs, u32 __user *ctx32p)
481{ 480{
482 long ret; 481 long ret;
483 aio_context_t ctx64; 482 aio_context_t ctx64;
@@ -496,32 +495,24 @@ compat_sys_io_setup(unsigned nr_reqs, u32 __user *ctx32p)
496 return ret; 495 return ret;
497} 496}
498 497
499asmlinkage long 498COMPAT_SYSCALL_DEFINE5(io_getevents, compat_aio_context_t, ctx_id,
500compat_sys_io_getevents(aio_context_t ctx_id, 499 compat_long_t, min_nr,
501 unsigned long min_nr, 500 compat_long_t, nr,
502 unsigned long nr, 501 struct io_event __user *, events,
503 struct io_event __user *events, 502 struct compat_timespec __user *, timeout)
504 struct compat_timespec __user *timeout)
505{ 503{
506 long ret;
507 struct timespec t; 504 struct timespec t;
508 struct timespec __user *ut = NULL; 505 struct timespec __user *ut = NULL;
509 506
510 ret = -EFAULT;
511 if (unlikely(!access_ok(VERIFY_WRITE, events,
512 nr * sizeof(struct io_event))))
513 goto out;
514 if (timeout) { 507 if (timeout) {
515 if (get_compat_timespec(&t, timeout)) 508 if (get_compat_timespec(&t, timeout))
516 goto out; 509 return -EFAULT;
517 510
518 ut = compat_alloc_user_space(sizeof(*ut)); 511 ut = compat_alloc_user_space(sizeof(*ut));
519 if (copy_to_user(ut, &t, sizeof(t)) ) 512 if (copy_to_user(ut, &t, sizeof(t)) )
520 goto out; 513 return -EFAULT;
521 } 514 }
522 ret = sys_io_getevents(ctx_id, min_nr, nr, events, ut); 515 return sys_io_getevents(ctx_id, min_nr, nr, events, ut);
523out:
524 return ret;
525} 516}
526 517
527/* A write operation does a read from user space and vice versa */ 518/* A write operation does a read from user space and vice versa */
@@ -617,8 +608,8 @@ copy_iocb(long nr, u32 __user *ptr32, struct iocb __user * __user *ptr64)
617 608
618#define MAX_AIO_SUBMITS (PAGE_SIZE/sizeof(struct iocb *)) 609#define MAX_AIO_SUBMITS (PAGE_SIZE/sizeof(struct iocb *))
619 610
620asmlinkage long 611COMPAT_SYSCALL_DEFINE3(io_submit, compat_aio_context_t, ctx_id,
621compat_sys_io_submit(aio_context_t ctx_id, int nr, u32 __user *iocb) 612 int, nr, u32 __user *, iocb)
622{ 613{
623 struct iocb __user * __user *iocb64; 614 struct iocb __user * __user *iocb64;
624 long ret; 615 long ret;
@@ -770,10 +761,10 @@ static int do_nfs4_super_data_conv(void *raw_data)
770#define NCPFS_NAME "ncpfs" 761#define NCPFS_NAME "ncpfs"
771#define NFS4_NAME "nfs4" 762#define NFS4_NAME "nfs4"
772 763
773asmlinkage long compat_sys_mount(const char __user * dev_name, 764COMPAT_SYSCALL_DEFINE5(mount, const char __user *, dev_name,
774 const char __user * dir_name, 765 const char __user *, dir_name,
775 const char __user * type, unsigned long flags, 766 const char __user *, type, compat_ulong_t, flags,
776 const void __user * data) 767 const void __user *, data)
777{ 768{
778 char *kernel_type; 769 char *kernel_type;
779 unsigned long data_page; 770 unsigned long data_page;
@@ -869,8 +860,8 @@ efault:
869 return -EFAULT; 860 return -EFAULT;
870} 861}
871 862
872asmlinkage long compat_sys_old_readdir(unsigned int fd, 863COMPAT_SYSCALL_DEFINE3(old_readdir, unsigned int, fd,
873 struct compat_old_linux_dirent __user *dirent, unsigned int count) 864 struct compat_old_linux_dirent __user *, dirent, unsigned int, count)
874{ 865{
875 int error; 866 int error;
876 struct fd f = fdget(fd); 867 struct fd f = fdget(fd);
@@ -948,8 +939,8 @@ efault:
948 return -EFAULT; 939 return -EFAULT;
949} 940}
950 941
951asmlinkage long compat_sys_getdents(unsigned int fd, 942COMPAT_SYSCALL_DEFINE3(getdents, unsigned int, fd,
952 struct compat_linux_dirent __user *dirent, unsigned int count) 943 struct compat_linux_dirent __user *, dirent, unsigned int, count)
953{ 944{
954 struct fd f; 945 struct fd f;
955 struct compat_linux_dirent __user * lastdirent; 946 struct compat_linux_dirent __user * lastdirent;
@@ -981,7 +972,7 @@ asmlinkage long compat_sys_getdents(unsigned int fd,
981 return error; 972 return error;
982} 973}
983 974
984#ifndef __ARCH_OMIT_COMPAT_SYS_GETDENTS64 975#ifdef __ARCH_WANT_COMPAT_SYS_GETDENTS64
985 976
986struct compat_getdents_callback64 { 977struct compat_getdents_callback64 {
987 struct dir_context ctx; 978 struct dir_context ctx;
@@ -1033,8 +1024,8 @@ efault:
1033 return -EFAULT; 1024 return -EFAULT;
1034} 1025}
1035 1026
1036asmlinkage long compat_sys_getdents64(unsigned int fd, 1027COMPAT_SYSCALL_DEFINE3(getdents64, unsigned int, fd,
1037 struct linux_dirent64 __user * dirent, unsigned int count) 1028 struct linux_dirent64 __user *, dirent, unsigned int, count)
1038{ 1029{
1039 struct fd f; 1030 struct fd f;
1040 struct linux_dirent64 __user * lastdirent; 1031 struct linux_dirent64 __user * lastdirent;
@@ -1066,7 +1057,7 @@ asmlinkage long compat_sys_getdents64(unsigned int fd,
1066 fdput(f); 1057 fdput(f);
1067 return error; 1058 return error;
1068} 1059}
1069#endif /* ! __ARCH_OMIT_COMPAT_SYS_GETDENTS64 */ 1060#endif /* __ARCH_WANT_COMPAT_SYS_GETDENTS64 */
1070 1061
1071/* 1062/*
1072 * Exactly like fs/open.c:sys_open(), except that it doesn't set the 1063 * Exactly like fs/open.c:sys_open(), except that it doesn't set the
@@ -1287,9 +1278,9 @@ out_nofds:
1287 return ret; 1278 return ret;
1288} 1279}
1289 1280
1290asmlinkage long compat_sys_select(int n, compat_ulong_t __user *inp, 1281COMPAT_SYSCALL_DEFINE5(select, int, n, compat_ulong_t __user *, inp,
1291 compat_ulong_t __user *outp, compat_ulong_t __user *exp, 1282 compat_ulong_t __user *, outp, compat_ulong_t __user *, exp,
1292 struct compat_timeval __user *tvp) 1283 struct compat_timeval __user *, tvp)
1293{ 1284{
1294 struct timespec end_time, *to = NULL; 1285 struct timespec end_time, *to = NULL;
1295 struct compat_timeval tv; 1286 struct compat_timeval tv;
@@ -1320,7 +1311,7 @@ struct compat_sel_arg_struct {
1320 compat_uptr_t tvp; 1311 compat_uptr_t tvp;
1321}; 1312};
1322 1313
1323asmlinkage long compat_sys_old_select(struct compat_sel_arg_struct __user *arg) 1314COMPAT_SYSCALL_DEFINE1(old_select, struct compat_sel_arg_struct __user *, arg)
1324{ 1315{
1325 struct compat_sel_arg_struct a; 1316 struct compat_sel_arg_struct a;
1326 1317
@@ -1381,9 +1372,9 @@ static long do_compat_pselect(int n, compat_ulong_t __user *inp,
1381 return ret; 1372 return ret;
1382} 1373}
1383 1374
1384asmlinkage long compat_sys_pselect6(int n, compat_ulong_t __user *inp, 1375COMPAT_SYSCALL_DEFINE6(pselect6, int, n, compat_ulong_t __user *, inp,
1385 compat_ulong_t __user *outp, compat_ulong_t __user *exp, 1376 compat_ulong_t __user *, outp, compat_ulong_t __user *, exp,
1386 struct compat_timespec __user *tsp, void __user *sig) 1377 struct compat_timespec __user *, tsp, void __user *, sig)
1387{ 1378{
1388 compat_size_t sigsetsize = 0; 1379 compat_size_t sigsetsize = 0;
1389 compat_uptr_t up = 0; 1380 compat_uptr_t up = 0;
@@ -1400,9 +1391,9 @@ asmlinkage long compat_sys_pselect6(int n, compat_ulong_t __user *inp,
1400 sigsetsize); 1391 sigsetsize);
1401} 1392}
1402 1393
1403asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds, 1394COMPAT_SYSCALL_DEFINE5(ppoll, struct pollfd __user *, ufds,
1404 unsigned int nfds, struct compat_timespec __user *tsp, 1395 unsigned int, nfds, struct compat_timespec __user *, tsp,
1405 const compat_sigset_t __user *sigmask, compat_size_t sigsetsize) 1396 const compat_sigset_t __user *, sigmask, compat_size_t, sigsetsize)
1406{ 1397{
1407 compat_sigset_t ss32; 1398 compat_sigset_t ss32;
1408 sigset_t ksigmask, sigsaved; 1399 sigset_t ksigmask, sigsaved;
diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
index 3881610b6438..e82289047272 100644
--- a/fs/compat_ioctl.c
+++ b/fs/compat_ioctl.c
@@ -1538,9 +1538,10 @@ static int compat_ioctl_check_table(unsigned int xcmd)
1538 return ioctl_pointer[i] == xcmd; 1538 return ioctl_pointer[i] == xcmd;
1539} 1539}
1540 1540
1541asmlinkage long compat_sys_ioctl(unsigned int fd, unsigned int cmd, 1541COMPAT_SYSCALL_DEFINE3(ioctl, unsigned int, fd, unsigned int, cmd,
1542 unsigned long arg) 1542 compat_ulong_t, arg32)
1543{ 1543{
1544 unsigned long arg = arg32;
1544 struct fd f = fdget(fd); 1545 struct fd f = fdget(fd);
1545 int error = -EBADF; 1546 int error = -EBADF;
1546 if (!f.file) 1547 if (!f.file)
diff --git a/fs/exec.c b/fs/exec.c
index 3d78fccdd723..4f59402fdda5 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -1619,9 +1619,9 @@ SYSCALL_DEFINE3(execve,
1619 return do_execve(getname(filename), argv, envp); 1619 return do_execve(getname(filename), argv, envp);
1620} 1620}
1621#ifdef CONFIG_COMPAT 1621#ifdef CONFIG_COMPAT
1622asmlinkage long compat_sys_execve(const char __user * filename, 1622COMPAT_SYSCALL_DEFINE3(execve, const char __user *, filename,
1623 const compat_uptr_t __user * argv, 1623 const compat_uptr_t __user *, argv,
1624 const compat_uptr_t __user * envp) 1624 const compat_uptr_t __user *, envp)
1625{ 1625{
1626 return compat_do_execve(getname(filename), argv, envp); 1626 return compat_do_execve(getname(filename), argv, envp);
1627} 1627}
diff --git a/fs/read_write.c b/fs/read_write.c
index 28cc9c810744..31c6efa43183 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -994,9 +994,9 @@ COMPAT_SYSCALL_DEFINE3(readv, compat_ulong_t, fd,
994 return ret; 994 return ret;
995} 995}
996 996
997COMPAT_SYSCALL_DEFINE4(preadv64, unsigned long, fd, 997static long __compat_sys_preadv64(unsigned long fd,
998 const struct compat_iovec __user *,vec, 998 const struct compat_iovec __user *vec,
999 unsigned long, vlen, loff_t, pos) 999 unsigned long vlen, loff_t pos)
1000{ 1000{
1001 struct fd f; 1001 struct fd f;
1002 ssize_t ret; 1002 ssize_t ret;
@@ -1013,12 +1013,22 @@ COMPAT_SYSCALL_DEFINE4(preadv64, unsigned long, fd,
1013 return ret; 1013 return ret;
1014} 1014}
1015 1015
1016#ifdef __ARCH_WANT_COMPAT_SYS_PREADV64
1017COMPAT_SYSCALL_DEFINE4(preadv64, unsigned long, fd,
1018 const struct compat_iovec __user *,vec,
1019 unsigned long, vlen, loff_t, pos)
1020{
1021 return __compat_sys_preadv64(fd, vec, vlen, pos);
1022}
1023#endif
1024
1016COMPAT_SYSCALL_DEFINE5(preadv, compat_ulong_t, fd, 1025COMPAT_SYSCALL_DEFINE5(preadv, compat_ulong_t, fd,
1017 const struct compat_iovec __user *,vec, 1026 const struct compat_iovec __user *,vec,
1018 compat_ulong_t, vlen, u32, pos_low, u32, pos_high) 1027 compat_ulong_t, vlen, u32, pos_low, u32, pos_high)
1019{ 1028{
1020 loff_t pos = ((loff_t)pos_high << 32) | pos_low; 1029 loff_t pos = ((loff_t)pos_high << 32) | pos_low;
1021 return compat_sys_preadv64(fd, vec, vlen, pos); 1030
1031 return __compat_sys_preadv64(fd, vec, vlen, pos);
1022} 1032}
1023 1033
1024static size_t compat_writev(struct file *file, 1034static size_t compat_writev(struct file *file,
@@ -1061,9 +1071,9 @@ COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd,
1061 return ret; 1071 return ret;
1062} 1072}
1063 1073
1064COMPAT_SYSCALL_DEFINE4(pwritev64, unsigned long, fd, 1074static long __compat_sys_pwritev64(unsigned long fd,
1065 const struct compat_iovec __user *,vec, 1075 const struct compat_iovec __user *vec,
1066 unsigned long, vlen, loff_t, pos) 1076 unsigned long vlen, loff_t pos)
1067{ 1077{
1068 struct fd f; 1078 struct fd f;
1069 ssize_t ret; 1079 ssize_t ret;
@@ -1080,12 +1090,22 @@ COMPAT_SYSCALL_DEFINE4(pwritev64, unsigned long, fd,
1080 return ret; 1090 return ret;
1081} 1091}
1082 1092
1093#ifdef __ARCH_WANT_COMPAT_SYS_PWRITEV64
1094COMPAT_SYSCALL_DEFINE4(pwritev64, unsigned long, fd,
1095 const struct compat_iovec __user *,vec,
1096 unsigned long, vlen, loff_t, pos)
1097{
1098 return __compat_sys_pwritev64(fd, vec, vlen, pos);
1099}
1100#endif
1101
1083COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, 1102COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd,
1084 const struct compat_iovec __user *,vec, 1103 const struct compat_iovec __user *,vec,
1085 compat_ulong_t, vlen, u32, pos_low, u32, pos_high) 1104 compat_ulong_t, vlen, u32, pos_low, u32, pos_high)
1086{ 1105{
1087 loff_t pos = ((loff_t)pos_high << 32) | pos_low; 1106 loff_t pos = ((loff_t)pos_high << 32) | pos_low;
1088 return compat_sys_pwritev64(fd, vec, vlen, pos); 1107
1108 return __compat_sys_pwritev64(fd, vec, vlen, pos);
1089} 1109}
1090#endif 1110#endif
1091 1111
diff --git a/include/linux/compat.h b/include/linux/compat.h
index 3f448c65511b..01c0aa57ccec 100644
--- a/include/linux/compat.h
+++ b/include/linux/compat.h
@@ -14,6 +14,7 @@
14#include <linux/if.h> 14#include <linux/if.h>
15#include <linux/fs.h> 15#include <linux/fs.h>
16#include <linux/aio_abi.h> /* for aio_context_t */ 16#include <linux/aio_abi.h> /* for aio_context_t */
17#include <linux/unistd.h>
17 18
18#include <asm/compat.h> 19#include <asm/compat.h>
19#include <asm/siginfo.h> 20#include <asm/siginfo.h>
@@ -27,6 +28,9 @@
27#define __SC_DELOUSE(t,v) ((t)(unsigned long)(v)) 28#define __SC_DELOUSE(t,v) ((t)(unsigned long)(v))
28#endif 29#endif
29 30
31#define COMPAT_SYSCALL_DEFINE0(name) \
32 asmlinkage long compat_sys_##name(void)
33
30#define COMPAT_SYSCALL_DEFINE1(name, ...) \ 34#define COMPAT_SYSCALL_DEFINE1(name, ...) \
31 COMPAT_SYSCALL_DEFINEx(1, _##name, __VA_ARGS__) 35 COMPAT_SYSCALL_DEFINEx(1, _##name, __VA_ARGS__)
32#define COMPAT_SYSCALL_DEFINE2(name, ...) \ 36#define COMPAT_SYSCALL_DEFINE2(name, ...) \
@@ -68,6 +72,8 @@ typedef struct compat_sigaltstack {
68typedef __compat_uid32_t compat_uid_t; 72typedef __compat_uid32_t compat_uid_t;
69typedef __compat_gid32_t compat_gid_t; 73typedef __compat_gid32_t compat_gid_t;
70 74
75typedef compat_ulong_t compat_aio_context_t;
76
71struct compat_sel_arg_struct; 77struct compat_sel_arg_struct;
72struct rusage; 78struct rusage;
73 79
@@ -318,7 +324,7 @@ asmlinkage long compat_sys_semctl(int semid, int semnum, int cmd, int arg);
318asmlinkage long compat_sys_msgsnd(int msqid, compat_uptr_t msgp, 324asmlinkage long compat_sys_msgsnd(int msqid, compat_uptr_t msgp,
319 compat_ssize_t msgsz, int msgflg); 325 compat_ssize_t msgsz, int msgflg);
320asmlinkage long compat_sys_msgrcv(int msqid, compat_uptr_t msgp, 326asmlinkage long compat_sys_msgrcv(int msqid, compat_uptr_t msgp,
321 compat_ssize_t msgsz, long msgtyp, int msgflg); 327 compat_ssize_t msgsz, compat_long_t msgtyp, int msgflg);
322long compat_sys_msgctl(int first, int second, void __user *uptr); 328long compat_sys_msgctl(int first, int second, void __user *uptr);
323long compat_sys_shmctl(int first, int second, void __user *uptr); 329long compat_sys_shmctl(int first, int second, void __user *uptr);
324long compat_sys_semtimedop(int semid, struct sembuf __user *tsems, 330long compat_sys_semtimedop(int semid, struct sembuf __user *tsems,
@@ -337,6 +343,19 @@ asmlinkage ssize_t compat_sys_preadv(compat_ulong_t fd,
337asmlinkage ssize_t compat_sys_pwritev(compat_ulong_t fd, 343asmlinkage ssize_t compat_sys_pwritev(compat_ulong_t fd,
338 const struct compat_iovec __user *vec, 344 const struct compat_iovec __user *vec,
339 compat_ulong_t vlen, u32 pos_low, u32 pos_high); 345 compat_ulong_t vlen, u32 pos_low, u32 pos_high);
346
347#ifdef __ARCH_WANT_COMPAT_SYS_PREADV64
348asmlinkage long compat_sys_preadv64(unsigned long fd,
349 const struct compat_iovec __user *vec,
350 unsigned long vlen, loff_t pos);
351#endif
352
353#ifdef __ARCH_WANT_COMPAT_SYS_PWRITEV64
354asmlinkage long compat_sys_pwritev64(unsigned long fd,
355 const struct compat_iovec __user *vec,
356 unsigned long vlen, loff_t pos);
357#endif
358
340asmlinkage long compat_sys_lseek(unsigned int, compat_off_t, unsigned int); 359asmlinkage long compat_sys_lseek(unsigned int, compat_off_t, unsigned int);
341 360
342asmlinkage long compat_sys_execve(const char __user *filename, const compat_uptr_t __user *argv, 361asmlinkage long compat_sys_execve(const char __user *filename, const compat_uptr_t __user *argv,
@@ -451,7 +470,7 @@ asmlinkage long compat_sys_timerfd_settime(int ufd, int flags,
451asmlinkage long compat_sys_timerfd_gettime(int ufd, 470asmlinkage long compat_sys_timerfd_gettime(int ufd,
452 struct compat_itimerspec __user *otmr); 471 struct compat_itimerspec __user *otmr);
453 472
454asmlinkage long compat_sys_move_pages(pid_t pid, unsigned long nr_page, 473asmlinkage long compat_sys_move_pages(pid_t pid, compat_ulong_t nr_pages,
455 __u32 __user *pages, 474 __u32 __user *pages,
456 const int __user *nodes, 475 const int __user *nodes,
457 int __user *status, 476 int __user *status,
@@ -481,20 +500,20 @@ asmlinkage long compat_sys_statfs64(const char __user *pathname,
481asmlinkage long compat_sys_fstatfs64(unsigned int fd, compat_size_t sz, 500asmlinkage long compat_sys_fstatfs64(unsigned int fd, compat_size_t sz,
482 struct compat_statfs64 __user *buf); 501 struct compat_statfs64 __user *buf);
483asmlinkage long compat_sys_fcntl64(unsigned int fd, unsigned int cmd, 502asmlinkage long compat_sys_fcntl64(unsigned int fd, unsigned int cmd,
484 unsigned long arg); 503 compat_ulong_t arg);
485asmlinkage long compat_sys_fcntl(unsigned int fd, unsigned int cmd, 504asmlinkage long compat_sys_fcntl(unsigned int fd, unsigned int cmd,
486 unsigned long arg); 505 compat_ulong_t arg);
487asmlinkage long compat_sys_io_setup(unsigned nr_reqs, u32 __user *ctx32p); 506asmlinkage long compat_sys_io_setup(unsigned nr_reqs, u32 __user *ctx32p);
488asmlinkage long compat_sys_io_getevents(aio_context_t ctx_id, 507asmlinkage long compat_sys_io_getevents(compat_aio_context_t ctx_id,
489 unsigned long min_nr, 508 compat_long_t min_nr,
490 unsigned long nr, 509 compat_long_t nr,
491 struct io_event __user *events, 510 struct io_event __user *events,
492 struct compat_timespec __user *timeout); 511 struct compat_timespec __user *timeout);
493asmlinkage long compat_sys_io_submit(aio_context_t ctx_id, int nr, 512asmlinkage long compat_sys_io_submit(compat_aio_context_t ctx_id, int nr,
494 u32 __user *iocb); 513 u32 __user *iocb);
495asmlinkage long compat_sys_mount(const char __user *dev_name, 514asmlinkage long compat_sys_mount(const char __user *dev_name,
496 const char __user *dir_name, 515 const char __user *dir_name,
497 const char __user *type, unsigned long flags, 516 const char __user *type, compat_ulong_t flags,
498 const void __user *data); 517 const void __user *data);
499asmlinkage long compat_sys_old_readdir(unsigned int fd, 518asmlinkage long compat_sys_old_readdir(unsigned int fd,
500 struct compat_old_linux_dirent __user *, 519 struct compat_old_linux_dirent __user *,
@@ -502,9 +521,11 @@ asmlinkage long compat_sys_old_readdir(unsigned int fd,
502asmlinkage long compat_sys_getdents(unsigned int fd, 521asmlinkage long compat_sys_getdents(unsigned int fd,
503 struct compat_linux_dirent __user *dirent, 522 struct compat_linux_dirent __user *dirent,
504 unsigned int count); 523 unsigned int count);
524#ifdef __ARCH_WANT_COMPAT_SYS_GETDENTS64
505asmlinkage long compat_sys_getdents64(unsigned int fd, 525asmlinkage long compat_sys_getdents64(unsigned int fd,
506 struct linux_dirent64 __user *dirent, 526 struct linux_dirent64 __user *dirent,
507 unsigned int count); 527 unsigned int count);
528#endif
508asmlinkage long compat_sys_vmsplice(int fd, const struct compat_iovec __user *, 529asmlinkage long compat_sys_vmsplice(int fd, const struct compat_iovec __user *,
509 unsigned int nr_segs, unsigned int flags); 530 unsigned int nr_segs, unsigned int flags);
510asmlinkage long compat_sys_open(const char __user *filename, int flags, 531asmlinkage long compat_sys_open(const char __user *filename, int flags,
@@ -549,9 +570,9 @@ asmlinkage long compat_sys_sendmmsg(int fd, struct compat_mmsghdr __user *mmsg,
549 unsigned vlen, unsigned int flags); 570 unsigned vlen, unsigned int flags);
550asmlinkage long compat_sys_recvmsg(int fd, struct compat_msghdr __user *msg, 571asmlinkage long compat_sys_recvmsg(int fd, struct compat_msghdr __user *msg,
551 unsigned int flags); 572 unsigned int flags);
552asmlinkage long compat_sys_recv(int fd, void __user *buf, size_t len, 573asmlinkage long compat_sys_recv(int fd, void __user *buf, compat_size_t len,
553 unsigned flags); 574 unsigned flags);
554asmlinkage long compat_sys_recvfrom(int fd, void __user *buf, size_t len, 575asmlinkage long compat_sys_recvfrom(int fd, void __user *buf, compat_size_t len,
555 unsigned flags, struct sockaddr __user *addr, 576 unsigned flags, struct sockaddr __user *addr,
556 int __user *addrlen); 577 int __user *addrlen);
557asmlinkage long compat_sys_recvmmsg(int fd, struct compat_mmsghdr __user *mmsg, 578asmlinkage long compat_sys_recvmmsg(int fd, struct compat_mmsghdr __user *mmsg,
@@ -615,16 +636,16 @@ asmlinkage long compat_sys_rt_sigqueueinfo(compat_pid_t pid, int sig,
615 struct compat_siginfo __user *uinfo); 636 struct compat_siginfo __user *uinfo);
616asmlinkage long compat_sys_sysinfo(struct compat_sysinfo __user *info); 637asmlinkage long compat_sys_sysinfo(struct compat_sysinfo __user *info);
617asmlinkage long compat_sys_ioctl(unsigned int fd, unsigned int cmd, 638asmlinkage long compat_sys_ioctl(unsigned int fd, unsigned int cmd,
618 unsigned long arg); 639 compat_ulong_t arg);
619asmlinkage long compat_sys_futex(u32 __user *uaddr, int op, u32 val, 640asmlinkage long compat_sys_futex(u32 __user *uaddr, int op, u32 val,
620 struct compat_timespec __user *utime, u32 __user *uaddr2, 641 struct compat_timespec __user *utime, u32 __user *uaddr2,
621 u32 val3); 642 u32 val3);
622asmlinkage long compat_sys_getsockopt(int fd, int level, int optname, 643asmlinkage long compat_sys_getsockopt(int fd, int level, int optname,
623 char __user *optval, int __user *optlen); 644 char __user *optval, int __user *optlen);
624asmlinkage long compat_sys_kexec_load(unsigned long entry, 645asmlinkage long compat_sys_kexec_load(compat_ulong_t entry,
625 unsigned long nr_segments, 646 compat_ulong_t nr_segments,
626 struct compat_kexec_segment __user *, 647 struct compat_kexec_segment __user *,
627 unsigned long flags); 648 compat_ulong_t flags);
628asmlinkage long compat_sys_mq_getsetattr(mqd_t mqdes, 649asmlinkage long compat_sys_mq_getsetattr(mqd_t mqdes,
629 const struct compat_mq_attr __user *u_mqstat, 650 const struct compat_mq_attr __user *u_mqstat,
630 struct compat_mq_attr __user *u_omqstat); 651 struct compat_mq_attr __user *u_omqstat);
@@ -635,11 +656,11 @@ asmlinkage long compat_sys_mq_open(const char __user *u_name,
635 struct compat_mq_attr __user *u_attr); 656 struct compat_mq_attr __user *u_attr);
636asmlinkage long compat_sys_mq_timedsend(mqd_t mqdes, 657asmlinkage long compat_sys_mq_timedsend(mqd_t mqdes,
637 const char __user *u_msg_ptr, 658 const char __user *u_msg_ptr,
638 size_t msg_len, unsigned int msg_prio, 659 compat_size_t msg_len, unsigned int msg_prio,
639 const struct compat_timespec __user *u_abs_timeout); 660 const struct compat_timespec __user *u_abs_timeout);
640asmlinkage ssize_t compat_sys_mq_timedreceive(mqd_t mqdes, 661asmlinkage ssize_t compat_sys_mq_timedreceive(mqd_t mqdes,
641 char __user *u_msg_ptr, 662 char __user *u_msg_ptr,
642 size_t msg_len, unsigned int __user *u_msg_prio, 663 compat_size_t msg_len, unsigned int __user *u_msg_prio,
643 const struct compat_timespec __user *u_abs_timeout); 664 const struct compat_timespec __user *u_abs_timeout);
644asmlinkage long compat_sys_socketcall(int call, u32 __user *args); 665asmlinkage long compat_sys_socketcall(int call, u32 __user *args);
645asmlinkage long compat_sys_sysctl(struct compat_sysctl_args __user *args); 666asmlinkage long compat_sys_sysctl(struct compat_sysctl_args __user *args);
@@ -654,12 +675,12 @@ extern void __user *compat_alloc_user_space(unsigned long len);
654 675
655asmlinkage ssize_t compat_sys_process_vm_readv(compat_pid_t pid, 676asmlinkage ssize_t compat_sys_process_vm_readv(compat_pid_t pid,
656 const struct compat_iovec __user *lvec, 677 const struct compat_iovec __user *lvec,
657 unsigned long liovcnt, const struct compat_iovec __user *rvec, 678 compat_ulong_t liovcnt, const struct compat_iovec __user *rvec,
658 unsigned long riovcnt, unsigned long flags); 679 compat_ulong_t riovcnt, compat_ulong_t flags);
659asmlinkage ssize_t compat_sys_process_vm_writev(compat_pid_t pid, 680asmlinkage ssize_t compat_sys_process_vm_writev(compat_pid_t pid,
660 const struct compat_iovec __user *lvec, 681 const struct compat_iovec __user *lvec,
661 unsigned long liovcnt, const struct compat_iovec __user *rvec, 682 compat_ulong_t liovcnt, const struct compat_iovec __user *rvec,
662 unsigned long riovcnt, unsigned long flags); 683 compat_ulong_t riovcnt, compat_ulong_t flags);
663 684
664asmlinkage long compat_sys_sendfile(int out_fd, int in_fd, 685asmlinkage long compat_sys_sendfile(int out_fd, int in_fd,
665 compat_off_t __user *offset, compat_size_t count); 686 compat_off_t __user *offset, compat_size_t count);
diff --git a/include/linux/kexec.h b/include/linux/kexec.h
index 6d4066cdb5b5..a75641930049 100644
--- a/include/linux/kexec.h
+++ b/include/linux/kexec.h
@@ -127,12 +127,6 @@ extern asmlinkage long sys_kexec_load(unsigned long entry,
127 struct kexec_segment __user *segments, 127 struct kexec_segment __user *segments,
128 unsigned long flags); 128 unsigned long flags);
129extern int kernel_kexec(void); 129extern int kernel_kexec(void);
130#ifdef CONFIG_COMPAT
131extern asmlinkage long compat_sys_kexec_load(unsigned long entry,
132 unsigned long nr_segments,
133 struct compat_kexec_segment __user *segments,
134 unsigned long flags);
135#endif
136extern struct page *kimage_alloc_control_pages(struct kimage *image, 130extern struct page *kimage_alloc_control_pages(struct kimage *image,
137 unsigned int order); 131 unsigned int order);
138extern void crash_kexec(struct pt_regs *); 132extern void crash_kexec(struct pt_regs *);
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index a747a77ea584..1e67b7a5968c 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -98,6 +98,8 @@ struct sigaltstack;
98#define __MAP(n,...) __MAP##n(__VA_ARGS__) 98#define __MAP(n,...) __MAP##n(__VA_ARGS__)
99 99
100#define __SC_DECL(t, a) t a 100#define __SC_DECL(t, a) t a
101#define __TYPE_IS_L(t) (__same_type((t)0, 0L))
102#define __TYPE_IS_UL(t) (__same_type((t)0, 0UL))
101#define __TYPE_IS_LL(t) (__same_type((t)0, 0LL) || __same_type((t)0, 0ULL)) 103#define __TYPE_IS_LL(t) (__same_type((t)0, 0LL) || __same_type((t)0, 0ULL))
102#define __SC_LONG(t, a) __typeof(__builtin_choose_expr(__TYPE_IS_LL(t), 0LL, 0L)) a 104#define __SC_LONG(t, a) __typeof(__builtin_choose_expr(__TYPE_IS_LL(t), 0LL, 0L)) a
103#define __SC_CAST(t, a) (t) a 105#define __SC_CAST(t, a) (t) a
diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h
index dde8041f40d2..6db66783d268 100644
--- a/include/uapi/asm-generic/unistd.h
+++ b/include/uapi/asm-generic/unistd.h
@@ -191,6 +191,7 @@ __SYSCALL(__NR_quotactl, sys_quotactl)
191 191
192/* fs/readdir.c */ 192/* fs/readdir.c */
193#define __NR_getdents64 61 193#define __NR_getdents64 61
194#define __ARCH_WANT_COMPAT_SYS_GETDENTS64
194__SC_COMP(__NR_getdents64, sys_getdents64, compat_sys_getdents64) 195__SC_COMP(__NR_getdents64, sys_getdents64, compat_sys_getdents64)
195 196
196/* fs/read_write.c */ 197/* fs/read_write.c */
diff --git a/ipc/compat.c b/ipc/compat.c
index f486b0096a67..98b9016cab6c 100644
--- a/ipc/compat.c
+++ b/ipc/compat.c
@@ -430,9 +430,9 @@ COMPAT_SYSCALL_DEFINE4(msgsnd, int, msqid, compat_uptr_t, msgp,
430} 430}
431 431
432COMPAT_SYSCALL_DEFINE5(msgrcv, int, msqid, compat_uptr_t, msgp, 432COMPAT_SYSCALL_DEFINE5(msgrcv, int, msqid, compat_uptr_t, msgp,
433 compat_ssize_t, msgsz, long, msgtyp, int, msgflg) 433 compat_ssize_t, msgsz, compat_long_t, msgtyp, int, msgflg)
434{ 434{
435 return do_msgrcv(msqid, compat_ptr(msgp), (ssize_t)msgsz, msgtyp, 435 return do_msgrcv(msqid, compat_ptr(msgp), (ssize_t)msgsz, (long)msgtyp,
436 msgflg, compat_do_msg_fill); 436 msgflg, compat_do_msg_fill);
437} 437}
438 438
@@ -498,7 +498,7 @@ static inline int put_compat_msqid_ds(struct msqid64_ds *m,
498 return err; 498 return err;
499} 499}
500 500
501long compat_sys_msgctl(int first, int second, void __user *uptr) 501COMPAT_SYSCALL_DEFINE3(msgctl, int, first, int, second, void __user *, uptr)
502{ 502{
503 int err, err2; 503 int err, err2;
504 struct msqid64_ds m64; 504 struct msqid64_ds m64;
@@ -668,7 +668,7 @@ static inline int put_compat_shm_info(struct shm_info __user *ip,
668 return err; 668 return err;
669} 669}
670 670
671long compat_sys_shmctl(int first, int second, void __user *uptr) 671COMPAT_SYSCALL_DEFINE3(shmctl, int, first, int, second, void __user *, uptr)
672{ 672{
673 void __user *p; 673 void __user *p;
674 struct shmid64_ds s64; 674 struct shmid64_ds s64;
@@ -749,8 +749,9 @@ long compat_sys_shmctl(int first, int second, void __user *uptr)
749 return err; 749 return err;
750} 750}
751 751
752long compat_sys_semtimedop(int semid, struct sembuf __user *tsems, 752COMPAT_SYSCALL_DEFINE4(semtimedop, int, semid, struct sembuf __user *, tsems,
753 unsigned nsops, const struct compat_timespec __user *timeout) 753 unsigned, nsops,
754 const struct compat_timespec __user *, timeout)
754{ 755{
755 struct timespec __user *ts64 = NULL; 756 struct timespec __user *ts64 = NULL;
756 if (timeout) { 757 if (timeout) {
diff --git a/ipc/compat_mq.c b/ipc/compat_mq.c
index 63d7c6de335b..d58747293772 100644
--- a/ipc/compat_mq.c
+++ b/ipc/compat_mq.c
@@ -46,9 +46,9 @@ static inline int put_compat_mq_attr(const struct mq_attr *attr,
46 | __put_user(attr->mq_curmsgs, &uattr->mq_curmsgs); 46 | __put_user(attr->mq_curmsgs, &uattr->mq_curmsgs);
47} 47}
48 48
49asmlinkage long compat_sys_mq_open(const char __user *u_name, 49COMPAT_SYSCALL_DEFINE4(mq_open, const char __user *, u_name,
50 int oflag, compat_mode_t mode, 50 int, oflag, compat_mode_t, mode,
51 struct compat_mq_attr __user *u_attr) 51 struct compat_mq_attr __user *, u_attr)
52{ 52{
53 void __user *p = NULL; 53 void __user *p = NULL;
54 if (u_attr && oflag & O_CREAT) { 54 if (u_attr && oflag & O_CREAT) {
@@ -78,10 +78,10 @@ static int compat_prepare_timeout(struct timespec __user **p,
78 return 0; 78 return 0;
79} 79}
80 80
81asmlinkage long compat_sys_mq_timedsend(mqd_t mqdes, 81COMPAT_SYSCALL_DEFINE5(mq_timedsend, mqd_t, mqdes,
82 const char __user *u_msg_ptr, 82 const char __user *, u_msg_ptr,
83 size_t msg_len, unsigned int msg_prio, 83 compat_size_t, msg_len, unsigned int, msg_prio,
84 const struct compat_timespec __user *u_abs_timeout) 84 const struct compat_timespec __user *, u_abs_timeout)
85{ 85{
86 struct timespec __user *u_ts; 86 struct timespec __user *u_ts;
87 87
@@ -92,10 +92,10 @@ asmlinkage long compat_sys_mq_timedsend(mqd_t mqdes,
92 msg_prio, u_ts); 92 msg_prio, u_ts);
93} 93}
94 94
95asmlinkage ssize_t compat_sys_mq_timedreceive(mqd_t mqdes, 95COMPAT_SYSCALL_DEFINE5(mq_timedreceive, mqd_t, mqdes,
96 char __user *u_msg_ptr, 96 char __user *, u_msg_ptr,
97 size_t msg_len, unsigned int __user *u_msg_prio, 97 compat_size_t, msg_len, unsigned int __user *, u_msg_prio,
98 const struct compat_timespec __user *u_abs_timeout) 98 const struct compat_timespec __user *, u_abs_timeout)
99{ 99{
100 struct timespec __user *u_ts; 100 struct timespec __user *u_ts;
101 if (compat_prepare_timeout(&u_ts, u_abs_timeout)) 101 if (compat_prepare_timeout(&u_ts, u_abs_timeout))
@@ -105,8 +105,8 @@ asmlinkage ssize_t compat_sys_mq_timedreceive(mqd_t mqdes,
105 u_msg_prio, u_ts); 105 u_msg_prio, u_ts);
106} 106}
107 107
108asmlinkage long compat_sys_mq_notify(mqd_t mqdes, 108COMPAT_SYSCALL_DEFINE2(mq_notify, mqd_t, mqdes,
109 const struct compat_sigevent __user *u_notification) 109 const struct compat_sigevent __user *, u_notification)
110{ 110{
111 struct sigevent __user *p = NULL; 111 struct sigevent __user *p = NULL;
112 if (u_notification) { 112 if (u_notification) {
@@ -122,9 +122,9 @@ asmlinkage long compat_sys_mq_notify(mqd_t mqdes,
122 return sys_mq_notify(mqdes, p); 122 return sys_mq_notify(mqdes, p);
123} 123}
124 124
125asmlinkage long compat_sys_mq_getsetattr(mqd_t mqdes, 125COMPAT_SYSCALL_DEFINE3(mq_getsetattr, mqd_t, mqdes,
126 const struct compat_mq_attr __user *u_mqstat, 126 const struct compat_mq_attr __user *, u_mqstat,
127 struct compat_mq_attr __user *u_omqstat) 127 struct compat_mq_attr __user *, u_omqstat)
128{ 128{
129 struct mq_attr mqstat; 129 struct mq_attr mqstat;
130 struct mq_attr __user *p = compat_alloc_user_space(2 * sizeof(*p)); 130 struct mq_attr __user *p = compat_alloc_user_space(2 * sizeof(*p));
diff --git a/kernel/compat.c b/kernel/compat.c
index 0a09e481b70b..488ff8c4cf48 100644
--- a/kernel/compat.c
+++ b/kernel/compat.c
@@ -110,8 +110,8 @@ static int compat_put_timex(struct compat_timex __user *utp, struct timex *txc)
110 return 0; 110 return 0;
111} 111}
112 112
113asmlinkage long compat_sys_gettimeofday(struct compat_timeval __user *tv, 113COMPAT_SYSCALL_DEFINE2(gettimeofday, struct compat_timeval __user *, tv,
114 struct timezone __user *tz) 114 struct timezone __user *, tz)
115{ 115{
116 if (tv) { 116 if (tv) {
117 struct timeval ktv; 117 struct timeval ktv;
@@ -127,8 +127,8 @@ asmlinkage long compat_sys_gettimeofday(struct compat_timeval __user *tv,
127 return 0; 127 return 0;
128} 128}
129 129
130asmlinkage long compat_sys_settimeofday(struct compat_timeval __user *tv, 130COMPAT_SYSCALL_DEFINE2(settimeofday, struct compat_timeval __user *, tv,
131 struct timezone __user *tz) 131 struct timezone __user *, tz)
132{ 132{
133 struct timespec kts; 133 struct timespec kts;
134 struct timezone ktz; 134 struct timezone ktz;
@@ -236,8 +236,8 @@ static long compat_nanosleep_restart(struct restart_block *restart)
236 return ret; 236 return ret;
237} 237}
238 238
239asmlinkage long compat_sys_nanosleep(struct compat_timespec __user *rqtp, 239COMPAT_SYSCALL_DEFINE2(nanosleep, struct compat_timespec __user *, rqtp,
240 struct compat_timespec __user *rmtp) 240 struct compat_timespec __user *, rmtp)
241{ 241{
242 struct timespec tu, rmt; 242 struct timespec tu, rmt;
243 mm_segment_t oldfs; 243 mm_segment_t oldfs;
@@ -328,7 +328,7 @@ static compat_clock_t clock_t_to_compat_clock_t(clock_t x)
328 return compat_jiffies_to_clock_t(clock_t_to_jiffies(x)); 328 return compat_jiffies_to_clock_t(clock_t_to_jiffies(x));
329} 329}
330 330
331asmlinkage long compat_sys_times(struct compat_tms __user *tbuf) 331COMPAT_SYSCALL_DEFINE1(times, struct compat_tms __user *, tbuf)
332{ 332{
333 if (tbuf) { 333 if (tbuf) {
334 struct tms tms; 334 struct tms tms;
@@ -354,7 +354,7 @@ asmlinkage long compat_sys_times(struct compat_tms __user *tbuf)
354 * types that can be passed to put_user()/get_user(). 354 * types that can be passed to put_user()/get_user().
355 */ 355 */
356 356
357asmlinkage long compat_sys_sigpending(compat_old_sigset_t __user *set) 357COMPAT_SYSCALL_DEFINE1(sigpending, compat_old_sigset_t __user *, set)
358{ 358{
359 old_sigset_t s; 359 old_sigset_t s;
360 long ret; 360 long ret;
@@ -424,8 +424,8 @@ COMPAT_SYSCALL_DEFINE3(sigprocmask, int, how,
424 424
425#endif 425#endif
426 426
427asmlinkage long compat_sys_setrlimit(unsigned int resource, 427COMPAT_SYSCALL_DEFINE2(setrlimit, unsigned int, resource,
428 struct compat_rlimit __user *rlim) 428 struct compat_rlimit __user *, rlim)
429{ 429{
430 struct rlimit r; 430 struct rlimit r;
431 431
@@ -443,8 +443,8 @@ asmlinkage long compat_sys_setrlimit(unsigned int resource,
443 443
444#ifdef COMPAT_RLIM_OLD_INFINITY 444#ifdef COMPAT_RLIM_OLD_INFINITY
445 445
446asmlinkage long compat_sys_old_getrlimit(unsigned int resource, 446COMPAT_SYSCALL_DEFINE2(old_getrlimit, unsigned int, resource,
447 struct compat_rlimit __user *rlim) 447 struct compat_rlimit __user *, rlim)
448{ 448{
449 struct rlimit r; 449 struct rlimit r;
450 int ret; 450 int ret;
@@ -470,8 +470,8 @@ asmlinkage long compat_sys_old_getrlimit(unsigned int resource,
470 470
471#endif 471#endif
472 472
473asmlinkage long compat_sys_getrlimit(unsigned int resource, 473COMPAT_SYSCALL_DEFINE2(getrlimit, unsigned int, resource,
474 struct compat_rlimit __user *rlim) 474 struct compat_rlimit __user *, rlim)
475{ 475{
476 struct rlimit r; 476 struct rlimit r;
477 int ret; 477 int ret;
@@ -596,9 +596,9 @@ static int compat_get_user_cpu_mask(compat_ulong_t __user *user_mask_ptr,
596 return compat_get_bitmap(k, user_mask_ptr, len * 8); 596 return compat_get_bitmap(k, user_mask_ptr, len * 8);
597} 597}
598 598
599asmlinkage long compat_sys_sched_setaffinity(compat_pid_t pid, 599COMPAT_SYSCALL_DEFINE3(sched_setaffinity, compat_pid_t, pid,
600 unsigned int len, 600 unsigned int, len,
601 compat_ulong_t __user *user_mask_ptr) 601 compat_ulong_t __user *, user_mask_ptr)
602{ 602{
603 cpumask_var_t new_mask; 603 cpumask_var_t new_mask;
604 int retval; 604 int retval;
@@ -616,8 +616,8 @@ out:
616 return retval; 616 return retval;
617} 617}
618 618
619asmlinkage long compat_sys_sched_getaffinity(compat_pid_t pid, unsigned int len, 619COMPAT_SYSCALL_DEFINE3(sched_getaffinity, compat_pid_t, pid, unsigned int, len,
620 compat_ulong_t __user *user_mask_ptr) 620 compat_ulong_t __user *, user_mask_ptr)
621{ 621{
622 int ret; 622 int ret;
623 cpumask_var_t mask; 623 cpumask_var_t mask;
@@ -662,9 +662,9 @@ int put_compat_itimerspec(struct compat_itimerspec __user *dst,
662 return 0; 662 return 0;
663} 663}
664 664
665long compat_sys_timer_create(clockid_t which_clock, 665COMPAT_SYSCALL_DEFINE3(timer_create, clockid_t, which_clock,
666 struct compat_sigevent __user *timer_event_spec, 666 struct compat_sigevent __user *, timer_event_spec,
667 timer_t __user *created_timer_id) 667 timer_t __user *, created_timer_id)
668{ 668{
669 struct sigevent __user *event = NULL; 669 struct sigevent __user *event = NULL;
670 670
@@ -680,9 +680,9 @@ long compat_sys_timer_create(clockid_t which_clock,
680 return sys_timer_create(which_clock, event, created_timer_id); 680 return sys_timer_create(which_clock, event, created_timer_id);
681} 681}
682 682
683long compat_sys_timer_settime(timer_t timer_id, int flags, 683COMPAT_SYSCALL_DEFINE4(timer_settime, timer_t, timer_id, int, flags,
684 struct compat_itimerspec __user *new, 684 struct compat_itimerspec __user *, new,
685 struct compat_itimerspec __user *old) 685 struct compat_itimerspec __user *, old)
686{ 686{
687 long err; 687 long err;
688 mm_segment_t oldfs; 688 mm_segment_t oldfs;
@@ -703,8 +703,8 @@ long compat_sys_timer_settime(timer_t timer_id, int flags,
703 return err; 703 return err;
704} 704}
705 705
706long compat_sys_timer_gettime(timer_t timer_id, 706COMPAT_SYSCALL_DEFINE2(timer_gettime, timer_t, timer_id,
707 struct compat_itimerspec __user *setting) 707 struct compat_itimerspec __user *, setting)
708{ 708{
709 long err; 709 long err;
710 mm_segment_t oldfs; 710 mm_segment_t oldfs;
@@ -720,8 +720,8 @@ long compat_sys_timer_gettime(timer_t timer_id,
720 return err; 720 return err;
721} 721}
722 722
723long compat_sys_clock_settime(clockid_t which_clock, 723COMPAT_SYSCALL_DEFINE2(clock_settime, clockid_t, which_clock,
724 struct compat_timespec __user *tp) 724 struct compat_timespec __user *, tp)
725{ 725{
726 long err; 726 long err;
727 mm_segment_t oldfs; 727 mm_segment_t oldfs;
@@ -737,8 +737,8 @@ long compat_sys_clock_settime(clockid_t which_clock,
737 return err; 737 return err;
738} 738}
739 739
740long compat_sys_clock_gettime(clockid_t which_clock, 740COMPAT_SYSCALL_DEFINE2(clock_gettime, clockid_t, which_clock,
741 struct compat_timespec __user *tp) 741 struct compat_timespec __user *, tp)
742{ 742{
743 long err; 743 long err;
744 mm_segment_t oldfs; 744 mm_segment_t oldfs;
@@ -754,8 +754,8 @@ long compat_sys_clock_gettime(clockid_t which_clock,
754 return err; 754 return err;
755} 755}
756 756
757long compat_sys_clock_adjtime(clockid_t which_clock, 757COMPAT_SYSCALL_DEFINE2(clock_adjtime, clockid_t, which_clock,
758 struct compat_timex __user *utp) 758 struct compat_timex __user *, utp)
759{ 759{
760 struct timex txc; 760 struct timex txc;
761 mm_segment_t oldfs; 761 mm_segment_t oldfs;
@@ -777,8 +777,8 @@ long compat_sys_clock_adjtime(clockid_t which_clock,
777 return ret; 777 return ret;
778} 778}
779 779
780long compat_sys_clock_getres(clockid_t which_clock, 780COMPAT_SYSCALL_DEFINE2(clock_getres, clockid_t, which_clock,
781 struct compat_timespec __user *tp) 781 struct compat_timespec __user *, tp)
782{ 782{
783 long err; 783 long err;
784 mm_segment_t oldfs; 784 mm_segment_t oldfs;
@@ -818,9 +818,9 @@ static long compat_clock_nanosleep_restart(struct restart_block *restart)
818 return err; 818 return err;
819} 819}
820 820
821long compat_sys_clock_nanosleep(clockid_t which_clock, int flags, 821COMPAT_SYSCALL_DEFINE4(clock_nanosleep, clockid_t, which_clock, int, flags,
822 struct compat_timespec __user *rqtp, 822 struct compat_timespec __user *, rqtp,
823 struct compat_timespec __user *rmtp) 823 struct compat_timespec __user *, rmtp)
824{ 824{
825 long err; 825 long err;
826 mm_segment_t oldfs; 826 mm_segment_t oldfs;
@@ -1010,7 +1010,7 @@ COMPAT_SYSCALL_DEFINE4(rt_sigtimedwait, compat_sigset_t __user *, uthese,
1010 1010
1011/* compat_time_t is a 32 bit "long" and needs to get converted. */ 1011/* compat_time_t is a 32 bit "long" and needs to get converted. */
1012 1012
1013asmlinkage long compat_sys_time(compat_time_t __user * tloc) 1013COMPAT_SYSCALL_DEFINE1(time, compat_time_t __user *, tloc)
1014{ 1014{
1015 compat_time_t i; 1015 compat_time_t i;
1016 struct timeval tv; 1016 struct timeval tv;
@@ -1026,7 +1026,7 @@ asmlinkage long compat_sys_time(compat_time_t __user * tloc)
1026 return i; 1026 return i;
1027} 1027}
1028 1028
1029asmlinkage long compat_sys_stime(compat_time_t __user *tptr) 1029COMPAT_SYSCALL_DEFINE1(stime, compat_time_t __user *, tptr)
1030{ 1030{
1031 struct timespec tv; 1031 struct timespec tv;
1032 int err; 1032 int err;
@@ -1046,7 +1046,7 @@ asmlinkage long compat_sys_stime(compat_time_t __user *tptr)
1046 1046
1047#endif /* __ARCH_WANT_COMPAT_SYS_TIME */ 1047#endif /* __ARCH_WANT_COMPAT_SYS_TIME */
1048 1048
1049asmlinkage long compat_sys_adjtimex(struct compat_timex __user *utp) 1049COMPAT_SYSCALL_DEFINE1(adjtimex, struct compat_timex __user *, utp)
1050{ 1050{
1051 struct timex txc; 1051 struct timex txc;
1052 int err, ret; 1052 int err, ret;
@@ -1065,11 +1065,11 @@ asmlinkage long compat_sys_adjtimex(struct compat_timex __user *utp)
1065} 1065}
1066 1066
1067#ifdef CONFIG_NUMA 1067#ifdef CONFIG_NUMA
1068asmlinkage long compat_sys_move_pages(pid_t pid, unsigned long nr_pages, 1068COMPAT_SYSCALL_DEFINE6(move_pages, pid_t, pid, compat_ulong_t, nr_pages,
1069 compat_uptr_t __user *pages32, 1069 compat_uptr_t __user *, pages32,
1070 const int __user *nodes, 1070 const int __user *, nodes,
1071 int __user *status, 1071 int __user *, status,
1072 int flags) 1072 int, flags)
1073{ 1073{
1074 const void __user * __user *pages; 1074 const void __user * __user *pages;
1075 int i; 1075 int i;
@@ -1085,10 +1085,10 @@ asmlinkage long compat_sys_move_pages(pid_t pid, unsigned long nr_pages,
1085 return sys_move_pages(pid, nr_pages, pages, nodes, status, flags); 1085 return sys_move_pages(pid, nr_pages, pages, nodes, status, flags);
1086} 1086}
1087 1087
1088asmlinkage long compat_sys_migrate_pages(compat_pid_t pid, 1088COMPAT_SYSCALL_DEFINE4(migrate_pages, compat_pid_t, pid,
1089 compat_ulong_t maxnode, 1089 compat_ulong_t, maxnode,
1090 const compat_ulong_t __user *old_nodes, 1090 const compat_ulong_t __user *, old_nodes,
1091 const compat_ulong_t __user *new_nodes) 1091 const compat_ulong_t __user *, new_nodes)
1092{ 1092{
1093 unsigned long __user *old = NULL; 1093 unsigned long __user *old = NULL;
1094 unsigned long __user *new = NULL; 1094 unsigned long __user *new = NULL;
diff --git a/kernel/kexec.c b/kernel/kexec.c
index 60bafbed06ab..45601cf41bee 100644
--- a/kernel/kexec.c
+++ b/kernel/kexec.c
@@ -1039,10 +1039,10 @@ void __weak crash_unmap_reserved_pages(void)
1039{} 1039{}
1040 1040
1041#ifdef CONFIG_COMPAT 1041#ifdef CONFIG_COMPAT
1042asmlinkage long compat_sys_kexec_load(unsigned long entry, 1042COMPAT_SYSCALL_DEFINE4(kexec_load, compat_ulong_t, entry,
1043 unsigned long nr_segments, 1043 compat_ulong_t, nr_segments,
1044 struct compat_kexec_segment __user *segments, 1044 struct compat_kexec_segment __user *, segments,
1045 unsigned long flags) 1045 compat_ulong_t, flags)
1046{ 1046{
1047 struct compat_kexec_segment in; 1047 struct compat_kexec_segment in;
1048 struct kexec_segment out, __user *ksegments; 1048 struct kexec_segment out, __user *ksegments;
diff --git a/kernel/ptrace.c b/kernel/ptrace.c
index 1f4bcb3cc21c..adf98622cb32 100644
--- a/kernel/ptrace.c
+++ b/kernel/ptrace.c
@@ -1180,8 +1180,8 @@ int compat_ptrace_request(struct task_struct *child, compat_long_t request,
1180 return ret; 1180 return ret;
1181} 1181}
1182 1182
1183asmlinkage long compat_sys_ptrace(compat_long_t request, compat_long_t pid, 1183COMPAT_SYSCALL_DEFINE4(ptrace, compat_long_t, request, compat_long_t, pid,
1184 compat_long_t addr, compat_long_t data) 1184 compat_long_t, addr, compat_long_t, data)
1185{ 1185{
1186 struct task_struct *child; 1186 struct task_struct *child;
1187 long ret; 1187 long ret;
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index f520b9da9c1f..4755c8576942 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -1556,10 +1556,10 @@ SYSCALL_DEFINE5(get_mempolicy, int __user *, policy,
1556 1556
1557#ifdef CONFIG_COMPAT 1557#ifdef CONFIG_COMPAT
1558 1558
1559asmlinkage long compat_sys_get_mempolicy(int __user *policy, 1559COMPAT_SYSCALL_DEFINE5(get_mempolicy, int __user *, policy,
1560 compat_ulong_t __user *nmask, 1560 compat_ulong_t __user *, nmask,
1561 compat_ulong_t maxnode, 1561 compat_ulong_t, maxnode,
1562 compat_ulong_t addr, compat_ulong_t flags) 1562 compat_ulong_t, addr, compat_ulong_t, flags)
1563{ 1563{
1564 long err; 1564 long err;
1565 unsigned long __user *nm = NULL; 1565 unsigned long __user *nm = NULL;
@@ -1586,8 +1586,8 @@ asmlinkage long compat_sys_get_mempolicy(int __user *policy,
1586 return err; 1586 return err;
1587} 1587}
1588 1588
1589asmlinkage long compat_sys_set_mempolicy(int mode, compat_ulong_t __user *nmask, 1589COMPAT_SYSCALL_DEFINE3(set_mempolicy, int, mode, compat_ulong_t __user *, nmask,
1590 compat_ulong_t maxnode) 1590 compat_ulong_t, maxnode)
1591{ 1591{
1592 long err = 0; 1592 long err = 0;
1593 unsigned long __user *nm = NULL; 1593 unsigned long __user *nm = NULL;
@@ -1609,9 +1609,9 @@ asmlinkage long compat_sys_set_mempolicy(int mode, compat_ulong_t __user *nmask,
1609 return sys_set_mempolicy(mode, nm, nr_bits+1); 1609 return sys_set_mempolicy(mode, nm, nr_bits+1);
1610} 1610}
1611 1611
1612asmlinkage long compat_sys_mbind(compat_ulong_t start, compat_ulong_t len, 1612COMPAT_SYSCALL_DEFINE6(mbind, compat_ulong_t, start, compat_ulong_t, len,
1613 compat_ulong_t mode, compat_ulong_t __user *nmask, 1613 compat_ulong_t, mode, compat_ulong_t __user *, nmask,
1614 compat_ulong_t maxnode, compat_ulong_t flags) 1614 compat_ulong_t, maxnode, compat_ulong_t, flags)
1615{ 1615{
1616 long err = 0; 1616 long err = 0;
1617 unsigned long __user *nm = NULL; 1617 unsigned long __user *nm = NULL;
diff --git a/mm/process_vm_access.c b/mm/process_vm_access.c
index fd26d0433509..3c5cf68566ec 100644
--- a/mm/process_vm_access.c
+++ b/mm/process_vm_access.c
@@ -456,25 +456,23 @@ free_iovecs:
456 return rc; 456 return rc;
457} 457}
458 458
459asmlinkage ssize_t 459COMPAT_SYSCALL_DEFINE6(process_vm_readv, compat_pid_t, pid,
460compat_sys_process_vm_readv(compat_pid_t pid, 460 const struct compat_iovec __user *, lvec,
461 const struct compat_iovec __user *lvec, 461 compat_ulong_t, liovcnt,
462 unsigned long liovcnt, 462 const struct compat_iovec __user *, rvec,
463 const struct compat_iovec __user *rvec, 463 compat_ulong_t, riovcnt,
464 unsigned long riovcnt, 464 compat_ulong_t, flags)
465 unsigned long flags)
466{ 465{
467 return compat_process_vm_rw(pid, lvec, liovcnt, rvec, 466 return compat_process_vm_rw(pid, lvec, liovcnt, rvec,
468 riovcnt, flags, 0); 467 riovcnt, flags, 0);
469} 468}
470 469
471asmlinkage ssize_t 470COMPAT_SYSCALL_DEFINE6(process_vm_writev, compat_pid_t, pid,
472compat_sys_process_vm_writev(compat_pid_t pid, 471 const struct compat_iovec __user *, lvec,
473 const struct compat_iovec __user *lvec, 472 compat_ulong_t, liovcnt,
474 unsigned long liovcnt, 473 const struct compat_iovec __user *, rvec,
475 const struct compat_iovec __user *rvec, 474 compat_ulong_t, riovcnt,
476 unsigned long riovcnt, 475 compat_ulong_t, flags)
477 unsigned long flags)
478{ 476{
479 return compat_process_vm_rw(pid, lvec, liovcnt, rvec, 477 return compat_process_vm_rw(pid, lvec, liovcnt, rvec,
480 riovcnt, flags, 1); 478 riovcnt, flags, 1);
diff --git a/net/compat.c b/net/compat.c
index f50161fb812e..9a76eaf63184 100644
--- a/net/compat.c
+++ b/net/compat.c
@@ -384,8 +384,8 @@ static int compat_sock_setsockopt(struct socket *sock, int level, int optname,
384 return sock_setsockopt(sock, level, optname, optval, optlen); 384 return sock_setsockopt(sock, level, optname, optval, optlen);
385} 385}
386 386
387asmlinkage long compat_sys_setsockopt(int fd, int level, int optname, 387COMPAT_SYSCALL_DEFINE5(setsockopt, int, fd, int, level, int, optname,
388 char __user *optval, unsigned int optlen) 388 char __user *, optval, unsigned int, optlen)
389{ 389{
390 int err; 390 int err;
391 struct socket *sock = sockfd_lookup(fd, &err); 391 struct socket *sock = sockfd_lookup(fd, &err);
@@ -504,8 +504,8 @@ int compat_sock_get_timestampns(struct sock *sk, struct timespec __user *usersta
504} 504}
505EXPORT_SYMBOL(compat_sock_get_timestampns); 505EXPORT_SYMBOL(compat_sock_get_timestampns);
506 506
507asmlinkage long compat_sys_getsockopt(int fd, int level, int optname, 507COMPAT_SYSCALL_DEFINE5(getsockopt, int, fd, int, level, int, optname,
508 char __user *optval, int __user *optlen) 508 char __user *, optval, int __user *, optlen)
509{ 509{
510 int err; 510 int err;
511 struct socket *sock = sockfd_lookup(fd, &err); 511 struct socket *sock = sockfd_lookup(fd, &err);
@@ -735,15 +735,15 @@ static unsigned char nas[21] = {
735}; 735};
736#undef AL 736#undef AL
737 737
738asmlinkage long compat_sys_sendmsg(int fd, struct compat_msghdr __user *msg, unsigned int flags) 738COMPAT_SYSCALL_DEFINE3(sendmsg, int, fd, struct compat_msghdr __user *, msg, unsigned int, flags)
739{ 739{
740 if (flags & MSG_CMSG_COMPAT) 740 if (flags & MSG_CMSG_COMPAT)
741 return -EINVAL; 741 return -EINVAL;
742 return __sys_sendmsg(fd, (struct msghdr __user *)msg, flags | MSG_CMSG_COMPAT); 742 return __sys_sendmsg(fd, (struct msghdr __user *)msg, flags | MSG_CMSG_COMPAT);
743} 743}
744 744
745asmlinkage long compat_sys_sendmmsg(int fd, struct compat_mmsghdr __user *mmsg, 745COMPAT_SYSCALL_DEFINE4(sendmmsg, int, fd, struct compat_mmsghdr __user *, mmsg,
746 unsigned int vlen, unsigned int flags) 746 unsigned int, vlen, unsigned int, flags)
747{ 747{
748 if (flags & MSG_CMSG_COMPAT) 748 if (flags & MSG_CMSG_COMPAT)
749 return -EINVAL; 749 return -EINVAL;
@@ -751,28 +751,28 @@ asmlinkage long compat_sys_sendmmsg(int fd, struct compat_mmsghdr __user *mmsg,
751 flags | MSG_CMSG_COMPAT); 751 flags | MSG_CMSG_COMPAT);
752} 752}
753 753
754asmlinkage long compat_sys_recvmsg(int fd, struct compat_msghdr __user *msg, unsigned int flags) 754COMPAT_SYSCALL_DEFINE3(recvmsg, int, fd, struct compat_msghdr __user *, msg, unsigned int, flags)
755{ 755{
756 if (flags & MSG_CMSG_COMPAT) 756 if (flags & MSG_CMSG_COMPAT)
757 return -EINVAL; 757 return -EINVAL;
758 return __sys_recvmsg(fd, (struct msghdr __user *)msg, flags | MSG_CMSG_COMPAT); 758 return __sys_recvmsg(fd, (struct msghdr __user *)msg, flags | MSG_CMSG_COMPAT);
759} 759}
760 760
761asmlinkage long compat_sys_recv(int fd, void __user *buf, size_t len, unsigned int flags) 761COMPAT_SYSCALL_DEFINE4(recv, int, fd, void __user *, buf, compat_size_t, len, unsigned int, flags)
762{ 762{
763 return sys_recv(fd, buf, len, flags | MSG_CMSG_COMPAT); 763 return sys_recv(fd, buf, len, flags | MSG_CMSG_COMPAT);
764} 764}
765 765
766asmlinkage long compat_sys_recvfrom(int fd, void __user *buf, size_t len, 766COMPAT_SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, buf, compat_size_t, len,
767 unsigned int flags, struct sockaddr __user *addr, 767 unsigned int, flags, struct sockaddr __user *, addr,
768 int __user *addrlen) 768 int __user *, addrlen)
769{ 769{
770 return sys_recvfrom(fd, buf, len, flags | MSG_CMSG_COMPAT, addr, addrlen); 770 return sys_recvfrom(fd, buf, len, flags | MSG_CMSG_COMPAT, addr, addrlen);
771} 771}
772 772
773asmlinkage long compat_sys_recvmmsg(int fd, struct compat_mmsghdr __user *mmsg, 773COMPAT_SYSCALL_DEFINE5(recvmmsg, int, fd, struct compat_mmsghdr __user *, mmsg,
774 unsigned int vlen, unsigned int flags, 774 unsigned int, vlen, unsigned int, flags,
775 struct compat_timespec __user *timeout) 775 struct compat_timespec __user *, timeout)
776{ 776{
777 int datagrams; 777 int datagrams;
778 struct timespec ktspec; 778 struct timespec ktspec;
@@ -795,7 +795,7 @@ asmlinkage long compat_sys_recvmmsg(int fd, struct compat_mmsghdr __user *mmsg,
795 return datagrams; 795 return datagrams;
796} 796}
797 797
798asmlinkage long compat_sys_socketcall(int call, u32 __user *args) 798COMPAT_SYSCALL_DEFINE2(socketcall, int, call, u32 __user *, args)
799{ 799{
800 int ret; 800 int ret;
801 u32 a[6]; 801 u32 a[6];
diff --git a/security/keys/compat.c b/security/keys/compat.c
index bbd32c729dbb..347896548ad3 100644
--- a/security/keys/compat.c
+++ b/security/keys/compat.c
@@ -65,8 +65,8 @@ no_payload:
65 * taking a 32-bit syscall are zero. If you can, you should call sys_keyctl() 65 * taking a 32-bit syscall are zero. If you can, you should call sys_keyctl()
66 * directly. 66 * directly.
67 */ 67 */
68asmlinkage long compat_sys_keyctl(u32 option, 68COMPAT_SYSCALL_DEFINE5(keyctl, u32, option,
69 u32 arg2, u32 arg3, u32 arg4, u32 arg5) 69 u32, arg2, u32, arg3, u32, arg4, u32, arg5)
70{ 70{
71 switch (option) { 71 switch (option) {
72 case KEYCTL_GET_KEYRING_ID: 72 case KEYCTL_GET_KEYRING_ID: