1 // s390-signal.h - Catch runtime signals and turn them into exceptions
2 // on an s390 based Linux system.
4 /* Copyright (C) 2002 Free Software Foundation
6 This file is part of libgcj.
8 This software is copyrighted work licensed under the terms of the
9 Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
14 #define JAVA_SIGNAL_H 1
17 #include <sys/syscall.h>
22 #define SIGNAL_HANDLER(_name) \
23 static void _name (int, siginfo_t *, void *)
25 /* We no longer need to fiddle with the PSW address in the signal handler;
26 this is now all handled correctly in MD_FALLBACK_FRAME_STATE_FOR. */
27 #define MAKE_THROW_FRAME(_exception)
30 /* For an explanation why we cannot simply use sigaction to
31 install the handlers, see i386-signal.h. */
33 /* We use old_kernel_sigaction here because we're calling the kernel
34 directly rather than via glibc. The sigaction structure that the
35 syscall uses is a different shape from the one in userland and not
36 visible to us in a header file so we define it here. */
38 struct old_s390_kernel_sigaction {
39 void (*k_sa_handler) (int, siginfo_t *, void *);
40 unsigned long k_sa_mask;
41 unsigned long k_sa_flags;
42 void (*sa_restorer) (void);
48 struct old_s390_kernel_sigaction kact; \
49 kact.k_sa_handler = catch_segv; \
51 kact.k_sa_flags = SA_SIGINFO; \
52 syscall (SYS_sigaction, SIGSEGV, &kact, NULL); \
59 struct old_s390_kernel_sigaction kact; \
60 kact.k_sa_handler = catch_fpe; \
62 kact.k_sa_flags = SA_SIGINFO; \
63 syscall (SYS_sigaction, SIGFPE, &kact, NULL); \
67 #endif /* JAVA_SIGNAL_H */