From: Martin Schwidefsky The new message queue interface needs the following patch to get it working on s390 (31-bit, 64-bit and 31-bit compat). --- 25-akpm/arch/s390/kernel/compat_wrapper.S | 44 ++++++++++++++++++++++++++++++ 25-akpm/arch/s390/kernel/syscalls.S | 10 ++++++ 25-akpm/include/asm-s390/unistd.h | 21 ++++++++------ 3 files changed, 67 insertions(+), 8 deletions(-) diff -puN arch/s390/kernel/compat_wrapper.S~posix-messages-queues-for-s390 arch/s390/kernel/compat_wrapper.S --- 25/arch/s390/kernel/compat_wrapper.S~posix-messages-queues-for-s390 2004-04-14 18:37:53.181929376 -0700 +++ 25-akpm/arch/s390/kernel/compat_wrapper.S 2004-04-14 18:37:53.191927856 -0700 @@ -1352,3 +1352,47 @@ compat_sys_fstatfs64_wrapper: llgfr %r3,%r3 # compat_size_t llgtr %r4,%r4 # struct compat_statfs64 * jg compat_fstatfs64 + + .globl compat_sys_mq_open_wrapper +compat_sys_mq_open_wrapper: + llgtr %r2,%r2 # const char * + lgfr %r3,%r3 # int + llgfr %r4,%r4 # mode_t + llgtr %r5,%r5 # struct compat_mq_attr * + jg compat_sys_mq_open + + .globl sys_mq_unlink_wrapper +sys32_mq_unlink_wrapper: + llgtr %r2,%r2 # const char * + jg sys_mq_unlink + + .globl compat_sys_mq_timedsend_wrapper +compat_sys_mq_timedsend_wrapper: + lgfr %r2,%r2 # mqd_t + llgtr %r3,%r3 # const char * + llgfr %r4,%r4 # size_t + llgfr %r5,%r5 # unsigned int + llgtr %r6,%r6 # const struct compat_timespec * + jg compat_sys_mq_timedsend + + .globl compat_sys_mq_timedreceive_wrapper +compat_sys_mq_timedreceive_wrapper: + lgfr %r2,%r2 # mqd_t + llgtr %r3,%r3 # char * + llgfr %r4,%r4 # size_t + llgtr %r5,%r5 # unsigned int * + llgtr %r6,%r6 # const struct compat_timespec * + jg compat_sys_mq_timedreceive + + .globl compat_sys_mq_notify_wrapper +compat_sys_mq_notify_wrapper: + lgfr %r2,%r2 # mqd_t + llgtr %r3,%r3 # struct compat_sigevent * + jg compat_sys_mq_notify + + .globl compat_sys_mq_getsetattr_wrapper +compat_sys_mq_getsetattr_wrapper: + lgfr %r2,%r2 # mqd_t + llgtr %r3,%r3 # struct compat_mq_attr * + llgtr %r4,%r4 # struct compat_mq_attr * + jg compat_sys_mq_getsetattr diff -puN arch/s390/kernel/syscalls.S~posix-messages-queues-for-s390 arch/s390/kernel/syscalls.S --- 25/arch/s390/kernel/syscalls.S~posix-messages-queues-for-s390 2004-04-14 18:37:53.185928768 -0700 +++ 25-akpm/arch/s390/kernel/syscalls.S 2004-04-14 18:37:53.191927856 -0700 @@ -275,3 +275,13 @@ NI_SYSCALL /* reserved for vserver SYSCALL(s390_fadvise64_64,sys_ni_syscall,sys32_fadvise64_64_wrapper) SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64_wrapper) SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64_wrapper) +NI_SYSCALL /* 267 new sys_remap_file_pages */ +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_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) +SYSCALL(sys_mq_getsetattr,sys_mq_getsetattr,compat_sys_mq_getsetattr_wrapper) diff -puN include/asm-s390/unistd.h~posix-messages-queues-for-s390 include/asm-s390/unistd.h --- 25/include/asm-s390/unistd.h~posix-messages-queues-for-s390 2004-04-14 18:37:53.187928464 -0700 +++ 25-akpm/include/asm-s390/unistd.h 2004-04-14 18:37:53.198926792 -0700 @@ -233,9 +233,7 @@ #define __NR_sched_setaffinity 239 #define __NR_sched_getaffinity 240 #define __NR_tgkill 241 -/* - * Number 242 is reserved for tux - */ +/* Number 242 is reserved for tux */ #define __NR_io_setup 243 #define __NR_io_destroy 244 #define __NR_io_getevents 245 @@ -256,15 +254,22 @@ #define __NR_clock_gettime (__NR_timer_create+6) #define __NR_clock_getres (__NR_timer_create+7) #define __NR_clock_nanosleep (__NR_timer_create+8) - -/* - * Number 263 is reserved for vserver - */ +/* Number 263 is reserved for vserver */ #define __NR_fadvise64_64 264 #define __NR_statfs64 265 #define __NR_fstatfs64 266 +/* Number 267 is reserved for new sys_remap_file_pages */ +/* Number 268 is reserved for new sys_mbind */ +/* Number 269 is reserved for new sys_get_mempolicy */ +/* Number 270 is reserved for new sys_set_mempolicy */ +#define __NR_mq_open 271 +#define __NR_mq_unlink 272 +#define __NR_mq_timedsend 273 +#define __NR_mq_timedreceive 274 +#define __NR_mq_notify 275 +#define __NR_mq_getsetattr 276 -#define NR_syscalls 267 +#define NR_syscalls 277 /* * There are some system calls that are not present on 64 bit, some _