Bunch of stuff
diff --git a/signal.c b/signal.c
index edad17f..c99598b 100644
--- a/signal.c
+++ b/signal.c
@@ -2,6 +2,10 @@
  * Copyright (c) 1991, 1992 Paul Kranenburg <pk@cs.few.eur.nl>
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
+ * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
+ * Copyright (c) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
+ *                     Linux for s390 port by D.J. Barrow
+ *                    <barrow_dj@mail.yahoo.com,djbarrow@de.ibm.com>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -692,6 +696,27 @@
 sys_sigreturn(tcp)
 struct tcb *tcp;
 {
+#ifdef S390
+    long usp;
+    struct sigcontext_struct sc;
+
+    if (entering(tcp)) {
+	    tcp->u_arg[0] = 0;
+	    if (upeek(tcp->pid,PT_GPR15,&usp)<0)
+		    return 0;
+	    if (umove(tcp, usp+__SIGNAL_FRAMESIZE, &sc) < 0)
+		    return 0;
+	    tcp->u_arg[0] = 1;
+	    memcpy(&tcp->u_arg[1],&sc.oldmask[0],sizeof(sigset_t));
+    } else {
+	    tcp->u_rval = tcp->u_error = 0;
+	    if (tcp->u_arg[0] == 0)
+		    return 0;
+	    tcp->auxstr = sprintsigmask("mask now ",(sigset_t *)&tcp->u_arg[1]);
+	    return RVAL_NONE | RVAL_STR;
+    }
+    return 0;
+#else
 #ifdef I386
 	long esp;
 	struct sigcontext_struct sc;
@@ -843,6 +868,7 @@
 #endif /* !M68K */
 #endif /* !POWERPC */
 #endif /* !I386 */
+#endif /* S390 */
 }
 
 int