From: Bodo Stroesser s390 passes parameters in registers. So the only safe way to find out the address of signal context, error-address and error-type (trap_no), which are passed to signal handlers as parameters, is to declare these parameters. So I inserted an subarch-specific macro which holds the declaration of parameters for signal handlers. Signed-off-by: Bodo Stroesser Signed-off-by: Jeff Dike Signed-off-by: Andrew Morton --- arch/um/include/sysdep-i386/signal.h | 2 ++ arch/um/include/sysdep-x86_64/signal.h | 2 ++ arch/um/os-Linux/signal.c | 4 ++-- 3 files changed, 6 insertions(+), 2 deletions(-) diff -puN arch/um/include/sysdep-i386/signal.h~uml-s390-preparation-sighandler-interface-abstraction arch/um/include/sysdep-i386/signal.h --- 25/arch/um/include/sysdep-i386/signal.h~uml-s390-preparation-sighandler-interface-abstraction Mon May 2 17:15:51 2005 +++ 25-akpm/arch/um/include/sysdep-i386/signal.h Mon May 2 17:15:51 2005 @@ -8,6 +8,8 @@ #include +#define ARCH_SIGHDLR_PARAM int sig + #define ARCH_GET_SIGCONTEXT(sc, sig) \ do sc = (struct sigcontext *) (&sig + 1); while(0) diff -puN arch/um/include/sysdep-x86_64/signal.h~uml-s390-preparation-sighandler-interface-abstraction arch/um/include/sysdep-x86_64/signal.h --- 25/arch/um/include/sysdep-x86_64/signal.h~uml-s390-preparation-sighandler-interface-abstraction Mon May 2 17:15:51 2005 +++ 25-akpm/arch/um/include/sysdep-x86_64/signal.h Mon May 2 17:15:51 2005 @@ -6,6 +6,8 @@ #ifndef __X86_64_SIGNAL_H_ #define __X86_64_SIGNAL_H_ +#define ARCH_SIGHDLR_PARAM int sig + #define ARCH_GET_SIGCONTEXT(sc, sig_addr) \ do { \ struct ucontext *__uc; \ diff -puN arch/um/os-Linux/signal.c~uml-s390-preparation-sighandler-interface-abstraction arch/um/os-Linux/signal.c --- 25/arch/um/os-Linux/signal.c~uml-s390-preparation-sighandler-interface-abstraction Mon May 2 17:15:51 2005 +++ 25-akpm/arch/um/os-Linux/signal.c Mon May 2 17:15:51 2005 @@ -8,7 +8,7 @@ #include "mode.h" #include "sysdep/signal.h" -void sig_handler(int sig) +void sig_handler(ARCH_SIGHDLR_PARAM) { struct sigcontext *sc; @@ -19,7 +19,7 @@ void sig_handler(int sig) extern int timer_irq_inited; -void alarm_handler(int sig) +void alarm_handler(ARCH_SIGHDLR_PARAM) { struct sigcontext *sc; _