s390/compat: convert system call wrappers to C part 11
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Fri, 28 Feb 2014 12:22:47 +0000 (13:22 +0100)
committerHeiko Carstens <heiko.carstens@de.ibm.com>
Tue, 4 Mar 2014 08:05:44 +0000 (09:05 +0100)
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
arch/s390/include/asm/compat.h
arch/s390/kernel/compat_wrap.c
arch/s390/kernel/compat_wrapper.S
arch/s390/kernel/syscalls.S

index 5d7e8cf83bd6c7d53b5f2a34fc2120add4cfa2d8..1174ea2b5e7c6bacb0fc849ad7ba3a6380e384c9 100644 (file)
@@ -65,6 +65,7 @@ typedef u32           compat_caddr_t;
 typedef __kernel_fsid_t        compat_fsid_t;
 typedef s32            compat_key_t;
 typedef s32            compat_timer_t;
+typedef u32            compat_aio_context_t;
 
 typedef s32            compat_int_t;
 typedef s32            compat_long_t;
index 97197b8ab838937cd700bf71e830a8534a97c546..76d714e1137097daaf2024b35a1dbb43e1f27238 100644 (file)
@@ -124,3 +124,13 @@ COMPAT_SYSCALL_WRAP3(flistxattr, int, fd, char __user *, list, compat_size_t, si
 COMPAT_SYSCALL_WRAP2(removexattr, const char __user *, path, const char __user *, name);
 COMPAT_SYSCALL_WRAP2(lremovexattr, const char __user *, path, const char __user *, name);
 COMPAT_SYSCALL_WRAP2(fremovexattr, int, fd, const char __user *, name);
+COMPAT_SYSCALL_WRAP1(exit_group, int, error_code);
+COMPAT_SYSCALL_WRAP1(set_tid_address, int __user *, tidptr);
+COMPAT_SYSCALL_WRAP1(epoll_create, int, size);
+COMPAT_SYSCALL_WRAP4(epoll_ctl, int, epfd, int, op, int, fd, struct epoll_event __user *, event);
+COMPAT_SYSCALL_WRAP4(epoll_wait, int, epfd, struct epoll_event __user *, events, int, maxevents, int, timeout);
+COMPAT_SYSCALL_WRAP1(timer_getoverrun, timer_t, timer_id);
+COMPAT_SYSCALL_WRAP1(timer_delete, compat_timer_t, compat_timer_id);
+COMPAT_SYSCALL_WRAP1(io_destroy, compat_aio_context_t, ctx);
+COMPAT_SYSCALL_WRAP3(io_cancel, compat_aio_context_t, ctx_id, struct iocb __user *, iocb, struct io_event __user *, result);
+COMPAT_SYSCALL_WRAP1(mq_unlink, const char __user *, name);
index f23a462947a6d94f54c6930a599bf2995b7eb7a4..9ada8fbcb8cca62c51aec239bd362ded660d555b 100644 (file)
@@ -181,32 +181,6 @@ ENTRY(sys32_sched_getaffinity_wrapper)
        llgtr   %r4,%r4                 # unsigned long *
        jg      compat_sys_sched_getaffinity
 
-ENTRY(sys32_exit_group_wrapper)
-       lgfr    %r2,%r2                 # int
-       jg      sys_exit_group          # branch to system call
-
-ENTRY(sys32_set_tid_address_wrapper)
-       llgtr   %r2,%r2                 # int *
-       jg      sys_set_tid_address     # branch to system call
-
-ENTRY(sys_epoll_create_wrapper)
-       lgfr    %r2,%r2                 # int
-       jg      sys_epoll_create        # branch to system call
-
-ENTRY(sys_epoll_ctl_wrapper)
-       lgfr    %r2,%r2                 # int
-       lgfr    %r3,%r3                 # int
-       lgfr    %r4,%r4                 # int
-       llgtr   %r5,%r5                 # struct epoll_event *
-       jg      sys_epoll_ctl           # branch to system call
-
-ENTRY(sys_epoll_wait_wrapper)
-       lgfr    %r2,%r2                 # int
-       llgtr   %r3,%r3                 # struct epoll_event *
-       lgfr    %r4,%r4                 # int
-       lgfr    %r5,%r5                 # int
-       jg      sys_epoll_wait          # branch to system call
-
 ENTRY(sys32_clock_settime_wrapper)
        lgfr    %r2,%r2                 # clockid_t (int)
        llgtr   %r3,%r3                 # struct compat_timespec *
@@ -247,23 +221,11 @@ ENTRY(sys32_timer_gettime_wrapper)
        llgtr   %r3,%r3                 # struct compat_itimerspec *
        jg      compat_sys_timer_gettime
 
-ENTRY(sys32_timer_getoverrun_wrapper)
-       lgfr    %r2,%r2                 # timer_t (int)
-       jg      sys_timer_getoverrun
-
-ENTRY(sys32_timer_delete_wrapper)
-       lgfr    %r2,%r2                 # timer_t (int)
-       jg      sys_timer_delete
-
 ENTRY(sys32_io_setup_wrapper)
        llgfr   %r2,%r2                 # unsigned int
        llgtr   %r3,%r3                 # u32 *
        jg      compat_sys_io_setup
 
-ENTRY(sys32_io_destroy_wrapper)
-       llgfr   %r2,%r2                 # (aio_context_t) u32
-       jg      sys_io_destroy
-
 ENTRY(sys32_io_getevents_wrapper)
        llgfr   %r2,%r2                 # (aio_context_t) u32
        lgfr    %r3,%r3                 # long
@@ -278,12 +240,6 @@ ENTRY(sys32_io_submit_wrapper)
        llgtr   %r4,%r4                 # struct iocb **
        jg      compat_sys_io_submit
 
-ENTRY(sys32_io_cancel_wrapper)
-       llgfr   %r2,%r2                 # (aio_context_t) u32
-       llgtr   %r3,%r3                 # struct iocb *
-       llgtr   %r4,%r4                 # struct io_event *
-       jg      sys_io_cancel
-
 ENTRY(compat_sys_statfs64_wrapper)
        llgtr   %r2,%r2                 # const char *
        llgfr   %r3,%r3                 # compat_size_t
@@ -303,10 +259,6 @@ ENTRY(compat_sys_mq_open_wrapper)
        llgtr   %r5,%r5                 # struct compat_mq_attr *
        jg      compat_sys_mq_open
 
-ENTRY(sys32_mq_unlink_wrapper)
-       llgtr   %r2,%r2                 # const char *
-       jg      sys_mq_unlink
-
 ENTRY(compat_sys_mq_timedsend_wrapper)
        lgfr    %r2,%r2                 # mqd_t
        llgtr   %r3,%r3                 # const char *
index cb6fc8abb7071c68a4bc1d40391a93dc16c43ce6..927da9cb4d35cfa5c395c78cee99310af67486b0 100644 (file)
@@ -252,21 +252,21 @@ SYSCALL(sys_sched_getaffinity,sys_sched_getaffinity,sys32_sched_getaffinity_wrap
 SYSCALL(sys_tgkill,sys_tgkill,sys_tgkill_wrapper)
 NI_SYSCALL                                                     /* reserved for TUX */
 SYSCALL(sys_io_setup,sys_io_setup,sys32_io_setup_wrapper)
-SYSCALL(sys_io_destroy,sys_io_destroy,sys32_io_destroy_wrapper)
+SYSCALL(sys_io_destroy,sys_io_destroy,compat_sys_io_destroy)
 SYSCALL(sys_io_getevents,sys_io_getevents,sys32_io_getevents_wrapper)  /* 245 */
 SYSCALL(sys_io_submit,sys_io_submit,sys32_io_submit_wrapper)
-SYSCALL(sys_io_cancel,sys_io_cancel,sys32_io_cancel_wrapper)
-SYSCALL(sys_exit_group,sys_exit_group,sys32_exit_group_wrapper)
-SYSCALL(sys_epoll_create,sys_epoll_create,sys_epoll_create_wrapper)
-SYSCALL(sys_epoll_ctl,sys_epoll_ctl,sys_epoll_ctl_wrapper)     /* 250 */
-SYSCALL(sys_epoll_wait,sys_epoll_wait,sys_epoll_wait_wrapper)
-SYSCALL(sys_set_tid_address,sys_set_tid_address,sys32_set_tid_address_wrapper)
+SYSCALL(sys_io_cancel,sys_io_cancel,compat_sys_io_cancel)
+SYSCALL(sys_exit_group,sys_exit_group,compat_sys_exit_group)
+SYSCALL(sys_epoll_create,sys_epoll_create,compat_sys_epoll_create)
+SYSCALL(sys_epoll_ctl,sys_epoll_ctl,compat_sys_epoll_ctl)      /* 250 */
+SYSCALL(sys_epoll_wait,sys_epoll_wait,compat_sys_epoll_wait)
+SYSCALL(sys_set_tid_address,sys_set_tid_address,compat_sys_set_tid_address)
 SYSCALL(sys_s390_fadvise64,sys_fadvise64_64,compat_sys_s390_fadvise64)
 SYSCALL(sys_timer_create,sys_timer_create,sys32_timer_create_wrapper)
 SYSCALL(sys_timer_settime,sys_timer_settime,sys32_timer_settime_wrapper)       /* 255 */
 SYSCALL(sys_timer_gettime,sys_timer_gettime,sys32_timer_gettime_wrapper)
-SYSCALL(sys_timer_getoverrun,sys_timer_getoverrun,sys32_timer_getoverrun_wrapper)
-SYSCALL(sys_timer_delete,sys_timer_delete,sys32_timer_delete_wrapper)
+SYSCALL(sys_timer_getoverrun,sys_timer_getoverrun,compat_sys_timer_getoverrun)
+SYSCALL(sys_timer_delete,sys_timer_delete,compat_sys_timer_delete)
 SYSCALL(sys_clock_settime,sys_clock_settime,sys32_clock_settime_wrapper)
 SYSCALL(sys_clock_gettime,sys_clock_gettime,sys32_clock_gettime_wrapper)       /* 260 */
 SYSCALL(sys_clock_getres,sys_clock_getres,sys32_clock_getres_wrapper)
@@ -280,7 +280,7 @@ NI_SYSCALL                                                  /* 268 sys_mbind */
 NI_SYSCALL                                                     /* 269 sys_get_mempolicy */
 NI_SYSCALL                                                     /* 270 sys_set_mempolicy */
 SYSCALL(sys_mq_open,sys_mq_open,compat_sys_mq_open_wrapper)
-SYSCALL(sys_mq_unlink,sys_mq_unlink,sys32_mq_unlink_wrapper)
+SYSCALL(sys_mq_unlink,sys_mq_unlink,compat_sys_mq_unlink)
 SYSCALL(sys_mq_timedsend,sys_mq_timedsend,compat_sys_mq_timedsend_wrapper)
 SYSCALL(sys_mq_timedreceive,sys_mq_timedreceive,compat_sys_mq_timedreceive_wrapper)
 SYSCALL(sys_mq_notify,sys_mq_notify,compat_sys_mq_notify_wrapper) /* 275 */