s390/compat: convert system call wrappers to C part 15
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Sat, 1 Mar 2014 11:18:46 +0000 (12:18 +0100)
committerHeiko Carstens <heiko.carstens@de.ibm.com>
Tue, 4 Mar 2014 08:05:46 +0000 (09:05 +0100)
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
arch/s390/kernel/compat_wrap.c
arch/s390/kernel/compat_wrapper.S
arch/s390/kernel/entry.h
arch/s390/kernel/syscalls.S

index 7b7c9f698d7fca2ecdb31e2aa406f4dd4b8871f3..17600b15ae3aa4bd444f2aa233b8d33f4005ada7 100644 (file)
@@ -164,3 +164,15 @@ COMPAT_SYSCALL_WRAP3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags)
 COMPAT_SYSCALL_WRAP1(epoll_create1, int, flags);
 COMPAT_SYSCALL_WRAP2(tkill, int, pid, int, sig);
 COMPAT_SYSCALL_WRAP3(tgkill, int, tgid, int, pid, int, sig);
+COMPAT_SYSCALL_WRAP5(perf_event_open, struct perf_event_attr __user *, attr_uptr, pid_t, pid, int, cpu, int, group_fd, u32, flags);
+COMPAT_SYSCALL_WRAP5(clone, u32, newsp, u32, clone_flags, int __user *, parent_tidptr, int __user *, child_tidptr, int, tls_val);
+COMPAT_SYSCALL_WRAP2(fanotify_init, unsigned int, flags, unsigned int, event_f_flags);
+COMPAT_SYSCALL_WRAP4(prlimit64, pid_t, pid, unsigned int, resource, const struct rlimit64 __user *, new_rlim, struct rlimit64 __user *, old_rlim);
+COMPAT_SYSCALL_WRAP5(name_to_handle_at, int, dfd, const char __user *, name, struct file_handle __user *, handle, int __user *, mnt_id, int, flag);
+COMPAT_SYSCALL_WRAP1(syncfs, int, fd);
+COMPAT_SYSCALL_WRAP2(setns, int, fd, int, nstype);
+COMPAT_SYSCALL_WRAP2(s390_runtime_instr, int, command, int, signum);
+COMPAT_SYSCALL_WRAP5(kcmp, pid_t, pid1, pid_t, pid2, int, type, u32, idx1, u32, idx2);
+COMPAT_SYSCALL_WRAP3(finit_module, int, fd, const char __user *, uargs, int, flags);
+COMPAT_SYSCALL_WRAP3(sched_setattr, pid_t, pid, struct sched_attr __user *, attr, unsigned int, flags);
+COMPAT_SYSCALL_WRAP4(sched_getattr, pid_t, pid, struct sched_attr __user *, attr, unsigned int, size, unsigned int, flags);
index d17bc862be3f15e4bc1fa1495196f94888f6ccd6..a1a13671922ac8a6e8f56878249560a151236a68 100644 (file)
@@ -355,61 +355,17 @@ ENTRY(compat_sys_keyctl_wrapper)
        llgfr   %r6,%r6                 # u32
        jg      compat_sys_keyctl       # branch to system call
 
-ENTRY(sys_perf_event_open_wrapper)
-       llgtr   %r2,%r2                 # const struct perf_event_attr *
-       lgfr    %r3,%r3                 # pid_t
-       lgfr    %r4,%r4                 # int
-       lgfr    %r5,%r5                 # int
-       llgfr   %r6,%r6                 # unsigned long
-       jg      sys_perf_event_open     # branch to system call
-
-ENTRY(sys_clone_wrapper)
-       llgfr   %r2,%r2                 # unsigned long
-       llgfr   %r3,%r3                 # unsigned long
-       llgtr   %r4,%r4                 # int *
-       llgtr   %r5,%r5                 # int *
-       jg      sys_clone               # branch to system call
-
 ENTRY(sys32_execve_wrapper)
        llgtr   %r2,%r2                 # char *
        llgtr   %r3,%r3                 # compat_uptr_t *
        llgtr   %r4,%r4                 # compat_uptr_t *
        jg      compat_sys_execve       # branch to system call
 
-ENTRY(sys_fanotify_init_wrapper)
-       llgfr   %r2,%r2                 # unsigned int
-       llgfr   %r3,%r3                 # unsigned int
-       jg      sys_fanotify_init       # branch to system call
-
-ENTRY(sys_prlimit64_wrapper)
-       lgfr    %r2,%r2                 # pid_t
-       llgfr   %r3,%r3                 # unsigned int
-       llgtr   %r4,%r4                 # const struct rlimit64 __user *
-       llgtr   %r5,%r5                 # struct rlimit64 __user *
-       jg      sys_prlimit64           # branch to system call
-
-ENTRY(sys_name_to_handle_at_wrapper)
-       lgfr    %r2,%r2                 # int
-       llgtr   %r3,%r3                 # const char __user *
-       llgtr   %r4,%r4                 # struct file_handle __user *
-       llgtr   %r5,%r5                 # int __user *
-       lgfr    %r6,%r6                 # int
-       jg      sys_name_to_handle_at
-
 ENTRY(compat_sys_clock_adjtime_wrapper)
        lgfr    %r2,%r2                 # clockid_t (int)
        llgtr   %r3,%r3                 # struct compat_timex __user *
        jg      compat_sys_clock_adjtime
 
-ENTRY(sys_syncfs_wrapper)
-       lgfr    %r2,%r2                 # int
-       jg      sys_syncfs
-
-ENTRY(sys_setns_wrapper)
-       lgfr    %r2,%r2                 # int
-       lgfr    %r3,%r3                 # int
-       jg      sys_setns
-
 ENTRY(compat_sys_process_vm_readv_wrapper)
        lgfr    %r2,%r2                 # compat_pid_t
        llgtr   %r3,%r3                 # struct compat_iovec __user *
@@ -429,33 +385,3 @@ ENTRY(compat_sys_process_vm_writev_wrapper)
        llgf    %r0,164(%r15)           # unsigned long
        stg     %r0,160(%r15)
        jg      compat_sys_process_vm_writev
-
-ENTRY(sys_s390_runtime_instr_wrapper)
-       lgfr    %r2,%r2                 # int
-       lgfr    %r3,%r3                 # int
-       jg      sys_s390_runtime_instr
-
-ENTRY(sys_kcmp_wrapper)
-       lgfr    %r2,%r2                 # pid_t
-       lgfr    %r3,%r3                 # pid_t
-       lgfr    %r4,%r4                 # int
-       llgfr   %r5,%r5                 # unsigned long
-       llgfr   %r6,%r6                 # unsigned long
-       jg      sys_kcmp
-
-ENTRY(sys_finit_module_wrapper)
-       lgfr    %r2,%r2                 # int
-       llgtr   %r3,%r3                 # const char __user *
-       lgfr    %r4,%r4                 # int
-       jg      sys_finit_module
-
-ENTRY(sys_sched_setattr_wrapper)
-       lgfr    %r2,%r2                 # pid_t
-       llgtr   %r3,%r3                 # struct sched_attr __user *
-       jg      sys_sched_setattr
-
-ENTRY(sys_sched_getattr_wrapper)
-       lgfr    %r2,%r2                 # pid_t
-       llgtr   %r3,%r3                 # const char __user *
-       llgfr   %r4,%r4                 # unsigned int
-       jg      sys_sched_getattr
index 8c6c022aeb71bba057b1624dff5c23b51b97e030..e9167889ff1a56a06075535c9094a898c257dda1 100644 (file)
@@ -73,5 +73,6 @@ long sys32_sigreturn(void);
 long sys32_rt_sigreturn(void);
 
 long sys_s390_personality(unsigned int personality);
+long sys_s390_runtime_instr(int command, int signum);
 
 #endif /* _ENTRY_H */
index 5cfbd427ce13299ba53ed923d4e28cd88eb63a9e..3ad73a6f61597a6575bffb791057e794101901a2 100644 (file)
@@ -128,7 +128,7 @@ SYSCALL(sys_sysinfo,sys_sysinfo,compat_sys_sysinfo_wrapper)
 SYSCALL(sys_s390_ipc,sys_s390_ipc,compat_sys_s390_ipc)
 SYSCALL(sys_fsync,sys_fsync,compat_sys_fsync)
 SYSCALL(sys_sigreturn,sys_sigreturn,sys32_sigreturn)
-SYSCALL(sys_clone,sys_clone,sys_clone_wrapper)                 /* 120 */
+SYSCALL(sys_clone,sys_clone,compat_sys_clone)                  /* 120 */
 SYSCALL(sys_setdomainname,sys_setdomainname,compat_sys_setdomainname)
 SYSCALL(sys_newuname,sys_newuname,compat_sys_newuname)
 NI_SYSCALL                                                     /* modify_ldt for i386 */
@@ -339,19 +339,19 @@ SYSCALL(sys_epoll_create1,sys_epoll_create1,compat_sys_epoll_create1)
 SYSCALL(sys_preadv,sys_preadv,compat_sys_preadv)
 SYSCALL(sys_pwritev,sys_pwritev,compat_sys_pwritev)
 SYSCALL(sys_rt_tgsigqueueinfo,sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo) /* 330 */
-SYSCALL(sys_perf_event_open,sys_perf_event_open,sys_perf_event_open_wrapper)
-SYSCALL(sys_fanotify_init,sys_fanotify_init,sys_fanotify_init_wrapper)
+SYSCALL(sys_perf_event_open,sys_perf_event_open,compat_sys_perf_event_open)
+SYSCALL(sys_fanotify_init,sys_fanotify_init,compat_sys_fanotify_init)
 SYSCALL(sys_fanotify_mark,sys_fanotify_mark,compat_sys_fanotify_mark)
-SYSCALL(sys_prlimit64,sys_prlimit64,sys_prlimit64_wrapper)
-SYSCALL(sys_name_to_handle_at,sys_name_to_handle_at,sys_name_to_handle_at_wrapper) /* 335 */
+SYSCALL(sys_prlimit64,sys_prlimit64,compat_sys_prlimit64)
+SYSCALL(sys_name_to_handle_at,sys_name_to_handle_at,compat_sys_name_to_handle_at) /* 335 */
 SYSCALL(sys_open_by_handle_at,sys_open_by_handle_at,compat_sys_open_by_handle_at)
 SYSCALL(sys_clock_adjtime,sys_clock_adjtime,compat_sys_clock_adjtime_wrapper)
-SYSCALL(sys_syncfs,sys_syncfs,sys_syncfs_wrapper)
-SYSCALL(sys_setns,sys_setns,sys_setns_wrapper)
+SYSCALL(sys_syncfs,sys_syncfs,compat_sys_syncfs)
+SYSCALL(sys_setns,sys_setns,compat_sys_setns)
 SYSCALL(sys_process_vm_readv,sys_process_vm_readv,compat_sys_process_vm_readv_wrapper) /* 340 */
 SYSCALL(sys_process_vm_writev,sys_process_vm_writev,compat_sys_process_vm_writev_wrapper)
-SYSCALL(sys_ni_syscall,sys_s390_runtime_instr,sys_s390_runtime_instr_wrapper)
-SYSCALL(sys_kcmp,sys_kcmp,sys_kcmp_wrapper)
-SYSCALL(sys_finit_module,sys_finit_module,sys_finit_module_wrapper)
-SYSCALL(sys_sched_setattr,sys_sched_setattr,sys_sched_setattr_wrapper) /* 345 */
-SYSCALL(sys_sched_getattr,sys_sched_getattr,sys_sched_getattr_wrapper)
+SYSCALL(sys_ni_syscall,sys_s390_runtime_instr,compat_sys_s390_runtime_instr)
+SYSCALL(sys_kcmp,sys_kcmp,compat_sys_kcmp)
+SYSCALL(sys_finit_module,sys_finit_module,compat_sys_finit_module)
+SYSCALL(sys_sched_setattr,sys_sched_setattr,compat_sys_sched_setattr) /* 345 */
+SYSCALL(sys_sched_getattr,sys_sched_getattr,compat_sys_sched_getattr)