aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2014-03-01 06:18:46 -0500
committerHeiko Carstens <heiko.carstens@de.ibm.com>2014-03-04 03:05:46 -0500
commit00fcb1494f645be4e0cd703756448fc64ca2a44a (patch)
treeea33584e914b7e1728c08e14c5945c3d02c6cf3d
parent7f6afe87a02be1d889b36ce076d7beddd4cd5332 (diff)
s390/compat: convert system call wrappers to C part 15
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
-rw-r--r--arch/s390/kernel/compat_wrap.c12
-rw-r--r--arch/s390/kernel/compat_wrapper.S74
-rw-r--r--arch/s390/kernel/entry.h1
-rw-r--r--arch/s390/kernel/syscalls.S24
4 files changed, 25 insertions, 86 deletions
diff --git a/arch/s390/kernel/compat_wrap.c b/arch/s390/kernel/compat_wrap.c
index 7b7c9f698d7f..17600b15ae3a 100644
--- a/arch/s390/kernel/compat_wrap.c
+++ b/arch/s390/kernel/compat_wrap.c
@@ -164,3 +164,15 @@ COMPAT_SYSCALL_WRAP3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags)
164COMPAT_SYSCALL_WRAP1(epoll_create1, int, flags); 164COMPAT_SYSCALL_WRAP1(epoll_create1, int, flags);
165COMPAT_SYSCALL_WRAP2(tkill, int, pid, int, sig); 165COMPAT_SYSCALL_WRAP2(tkill, int, pid, int, sig);
166COMPAT_SYSCALL_WRAP3(tgkill, int, tgid, int, pid, int, sig); 166COMPAT_SYSCALL_WRAP3(tgkill, int, tgid, int, pid, int, sig);
167COMPAT_SYSCALL_WRAP5(perf_event_open, struct perf_event_attr __user *, attr_uptr, pid_t, pid, int, cpu, int, group_fd, u32, flags);
168COMPAT_SYSCALL_WRAP5(clone, u32, newsp, u32, clone_flags, int __user *, parent_tidptr, int __user *, child_tidptr, int, tls_val);
169COMPAT_SYSCALL_WRAP2(fanotify_init, unsigned int, flags, unsigned int, event_f_flags);
170COMPAT_SYSCALL_WRAP4(prlimit64, pid_t, pid, unsigned int, resource, const struct rlimit64 __user *, new_rlim, struct rlimit64 __user *, old_rlim);
171COMPAT_SYSCALL_WRAP5(name_to_handle_at, int, dfd, const char __user *, name, struct file_handle __user *, handle, int __user *, mnt_id, int, flag);
172COMPAT_SYSCALL_WRAP1(syncfs, int, fd);
173COMPAT_SYSCALL_WRAP2(setns, int, fd, int, nstype);
174COMPAT_SYSCALL_WRAP2(s390_runtime_instr, int, command, int, signum);
175COMPAT_SYSCALL_WRAP5(kcmp, pid_t, pid1, pid_t, pid2, int, type, u32, idx1, u32, idx2);
176COMPAT_SYSCALL_WRAP3(finit_module, int, fd, const char __user *, uargs, int, flags);
177COMPAT_SYSCALL_WRAP3(sched_setattr, pid_t, pid, struct sched_attr __user *, attr, unsigned int, flags);
178COMPAT_SYSCALL_WRAP4(sched_getattr, pid_t, pid, struct sched_attr __user *, attr, unsigned int, size, unsigned int, flags);
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S
index d17bc862be3f..a1a13671922a 100644
--- a/arch/s390/kernel/compat_wrapper.S
+++ b/arch/s390/kernel/compat_wrapper.S
@@ -355,61 +355,17 @@ ENTRY(compat_sys_keyctl_wrapper)
355 llgfr %r6,%r6 # u32 355 llgfr %r6,%r6 # u32
356 jg compat_sys_keyctl # branch to system call 356 jg compat_sys_keyctl # branch to system call
357 357
358ENTRY(sys_perf_event_open_wrapper)
359 llgtr %r2,%r2 # const struct perf_event_attr *
360 lgfr %r3,%r3 # pid_t
361 lgfr %r4,%r4 # int
362 lgfr %r5,%r5 # int
363 llgfr %r6,%r6 # unsigned long
364 jg sys_perf_event_open # branch to system call
365
366ENTRY(sys_clone_wrapper)
367 llgfr %r2,%r2 # unsigned long
368 llgfr %r3,%r3 # unsigned long
369 llgtr %r4,%r4 # int *
370 llgtr %r5,%r5 # int *
371 jg sys_clone # branch to system call
372
373ENTRY(sys32_execve_wrapper) 358ENTRY(sys32_execve_wrapper)
374 llgtr %r2,%r2 # char * 359 llgtr %r2,%r2 # char *
375 llgtr %r3,%r3 # compat_uptr_t * 360 llgtr %r3,%r3 # compat_uptr_t *
376 llgtr %r4,%r4 # compat_uptr_t * 361 llgtr %r4,%r4 # compat_uptr_t *
377 jg compat_sys_execve # branch to system call 362 jg compat_sys_execve # branch to system call
378 363
379ENTRY(sys_fanotify_init_wrapper)
380 llgfr %r2,%r2 # unsigned int
381 llgfr %r3,%r3 # unsigned int
382 jg sys_fanotify_init # branch to system call
383
384ENTRY(sys_prlimit64_wrapper)
385 lgfr %r2,%r2 # pid_t
386 llgfr %r3,%r3 # unsigned int
387 llgtr %r4,%r4 # const struct rlimit64 __user *
388 llgtr %r5,%r5 # struct rlimit64 __user *
389 jg sys_prlimit64 # branch to system call
390
391ENTRY(sys_name_to_handle_at_wrapper)
392 lgfr %r2,%r2 # int
393 llgtr %r3,%r3 # const char __user *
394 llgtr %r4,%r4 # struct file_handle __user *
395 llgtr %r5,%r5 # int __user *
396 lgfr %r6,%r6 # int
397 jg sys_name_to_handle_at
398
399ENTRY(compat_sys_clock_adjtime_wrapper) 364ENTRY(compat_sys_clock_adjtime_wrapper)
400 lgfr %r2,%r2 # clockid_t (int) 365 lgfr %r2,%r2 # clockid_t (int)
401 llgtr %r3,%r3 # struct compat_timex __user * 366 llgtr %r3,%r3 # struct compat_timex __user *
402 jg compat_sys_clock_adjtime 367 jg compat_sys_clock_adjtime
403 368
404ENTRY(sys_syncfs_wrapper)
405 lgfr %r2,%r2 # int
406 jg sys_syncfs
407
408ENTRY(sys_setns_wrapper)
409 lgfr %r2,%r2 # int
410 lgfr %r3,%r3 # int
411 jg sys_setns
412
413ENTRY(compat_sys_process_vm_readv_wrapper) 369ENTRY(compat_sys_process_vm_readv_wrapper)
414 lgfr %r2,%r2 # compat_pid_t 370 lgfr %r2,%r2 # compat_pid_t
415 llgtr %r3,%r3 # struct compat_iovec __user * 371 llgtr %r3,%r3 # struct compat_iovec __user *
@@ -429,33 +385,3 @@ ENTRY(compat_sys_process_vm_writev_wrapper)
429 llgf %r0,164(%r15) # unsigned long 385 llgf %r0,164(%r15) # unsigned long
430 stg %r0,160(%r15) 386 stg %r0,160(%r15)
431 jg compat_sys_process_vm_writev 387 jg compat_sys_process_vm_writev
432
433ENTRY(sys_s390_runtime_instr_wrapper)
434 lgfr %r2,%r2 # int
435 lgfr %r3,%r3 # int
436 jg sys_s390_runtime_instr
437
438ENTRY(sys_kcmp_wrapper)
439 lgfr %r2,%r2 # pid_t
440 lgfr %r3,%r3 # pid_t
441 lgfr %r4,%r4 # int
442 llgfr %r5,%r5 # unsigned long
443 llgfr %r6,%r6 # unsigned long
444 jg sys_kcmp
445
446ENTRY(sys_finit_module_wrapper)
447 lgfr %r2,%r2 # int
448 llgtr %r3,%r3 # const char __user *
449 lgfr %r4,%r4 # int
450 jg sys_finit_module
451
452ENTRY(sys_sched_setattr_wrapper)
453 lgfr %r2,%r2 # pid_t
454 llgtr %r3,%r3 # struct sched_attr __user *
455 jg sys_sched_setattr
456
457ENTRY(sys_sched_getattr_wrapper)
458 lgfr %r2,%r2 # pid_t
459 llgtr %r3,%r3 # const char __user *
460 llgfr %r4,%r4 # unsigned int
461 jg sys_sched_getattr
diff --git a/arch/s390/kernel/entry.h b/arch/s390/kernel/entry.h
index 8c6c022aeb71..e9167889ff1a 100644
--- a/arch/s390/kernel/entry.h
+++ b/arch/s390/kernel/entry.h
@@ -73,5 +73,6 @@ long sys32_sigreturn(void);
73long sys32_rt_sigreturn(void); 73long sys32_rt_sigreturn(void);
74 74
75long sys_s390_personality(unsigned int personality); 75long sys_s390_personality(unsigned int personality);
76long sys_s390_runtime_instr(int command, int signum);
76 77
77#endif /* _ENTRY_H */ 78#endif /* _ENTRY_H */
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S
index 5cfbd427ce13..3ad73a6f6159 100644
--- a/arch/s390/kernel/syscalls.S
+++ b/arch/s390/kernel/syscalls.S
@@ -128,7 +128,7 @@ SYSCALL(sys_sysinfo,sys_sysinfo,compat_sys_sysinfo_wrapper)
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,compat_sys_fsync) 129SYSCALL(sys_fsync,sys_fsync,compat_sys_fsync)
130SYSCALL(sys_sigreturn,sys_sigreturn,sys32_sigreturn) 130SYSCALL(sys_sigreturn,sys_sigreturn,sys32_sigreturn)
131SYSCALL(sys_clone,sys_clone,sys_clone_wrapper) /* 120 */ 131SYSCALL(sys_clone,sys_clone,compat_sys_clone) /* 120 */
132SYSCALL(sys_setdomainname,sys_setdomainname,compat_sys_setdomainname) 132SYSCALL(sys_setdomainname,sys_setdomainname,compat_sys_setdomainname)
133SYSCALL(sys_newuname,sys_newuname,compat_sys_newuname) 133SYSCALL(sys_newuname,sys_newuname,compat_sys_newuname)
134NI_SYSCALL /* modify_ldt for i386 */ 134NI_SYSCALL /* modify_ldt for i386 */
@@ -339,19 +339,19 @@ SYSCALL(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_wrapper)
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_wrapper) /* 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_wrapper)
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)