From: Martin Schwidefsky <schwidefsky@de.ibm.com>

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

_