diff options
author | daney <daney@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-07-20 17:30:42 +0000 |
---|---|---|
committer | daney <daney@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-07-20 17:30:42 +0000 |
commit | ee6691f73d847f7de04f25f0b6cf38677b05a1e4 (patch) | |
tree | 4901ff76bce95e05ac80b1f098837516e5335bab /libjava/include | |
parent | 6a47600ccb509de8d9fc9f603e91990ae71479c1 (diff) | |
download | gcc-ee6691f73d847f7de04f25f0b6cf38677b05a1e4.tar.gz |
* include/mips-signal.h: Update copyright.
(struct kernel_sigaction): Removed.
(SIGNAL_HANDLER): Changed prototype.
(MAKE_THROW_FRAME): Added cast.
(INIT_SEGV): Use sigaction instead of syscall.
(INIT_FPE): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@115624 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/include')
-rw-r--r-- | libjava/include/mips-signal.h | 64 |
1 files changed, 22 insertions, 42 deletions
diff --git a/libjava/include/mips-signal.h b/libjava/include/mips-signal.h index 732ba0b1f67..63218ea84a7 100644 --- a/libjava/include/mips-signal.h +++ b/libjava/include/mips-signal.h @@ -1,7 +1,8 @@ // mips-signal.h - Catch runtime signals and turn them into exceptions // on an mips based Linux system. -/* Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004 Free Software Foundation +/* Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2006 + Free Software Foundation This file is part of libgcj. @@ -35,28 +36,10 @@ typedef struct _sig_ucontext { sigset_t uc_sigmask; } sig_ucontext_t; -/* We use kernel_sigaction here because we're calling the kernel - directly rather than via glibc. The sigaction structure that the - syscall uses is a different shape from the one in userland and not - visible to us in a header file so we define it here. - Additionally we want a proper prototype for the handler function - with the struct sigcontext pointer passed by the kernel as the 2nd - argument, which isn't there in userland headers. */ - -struct kernel_sigaction { - unsigned int k_sa_flags; - void (*k_sa_handler) (int, siginfo_t *, sig_ucontext_t *); - sigset_t k_sa_mask; - void (*k_sa_restorer)(void); - int k_sa_resv[1]; /* reserved */ -}; - - - #define SIGNAL_HANDLER(_name) \ static void _name (int _dummy __attribute__ ((__unused__)), \ siginfo_t *_info __attribute__ ((__unused__)), \ - sig_ucontext_t *_arg __attribute__ ((__unused__))) + void *_arg __attribute__ ((__unused__))) /* * MIPS leaves pc pointing at the faulting instruction, but the @@ -66,35 +49,32 @@ static void _name (int _dummy __attribute__ ((__unused__)), \ #define MAKE_THROW_FRAME(_exception) \ do \ { \ - _arg->uc_mcontext.sc_pc += 4; \ + ((sig_ucontext_t *)_arg)->uc_mcontext.sc_pc += 4; \ (void)_dummy; \ (void)_info; \ } \ while (0) -/* For an explanation why we cannot simply use sigaction to - install the handlers, see i386-signal.h. */ - -#define INIT_SEGV \ -do \ - { \ - struct kernel_sigaction kact; \ - kact.k_sa_handler = catch_segv; \ - kact.k_sa_flags = SA_SIGINFO | SA_NODEFER; \ - sigemptyset (&kact.k_sa_mask); \ - syscall (SYS_sigaction, SIGSEGV, &kact, NULL); \ - } \ +#define INIT_SEGV \ +do \ + { \ + struct sigaction act; \ + act.sa_sigaction = catch_segv; \ + act.sa_flags = SA_SIGINFO | SA_NODEFER; \ + sigemptyset (&act.sa_mask); \ + sigaction(SIGSEGV, &act, NULL); \ + } \ while (0) -#define INIT_FPE \ -do \ - { \ - struct kernel_sigaction kact; \ - kact.k_sa_handler = catch_fpe; \ - kact.k_sa_flags = SA_SIGINFO | SA_NODEFER; \ - sigemptyset (&kact.k_sa_mask); \ - syscall (SYS_sigaction, SIGFPE, &kact, NULL); \ - } \ +#define INIT_FPE \ +do \ + { \ + struct sigaction act; \ + act.sa_sigaction = catch_fpe; \ + act.sa_flags = SA_SIGINFO | SA_NODEFER; \ + sigemptyset (&act.sa_mask); \ + sigaction(SIGFPE, &act, NULL); \ + } \ while (0) #undef HANDLE_DIVIDE_OVERFLOW |