// sparc-signal.h - Catch runtime signals and turn them into exceptions.
-/* Copyright (C) 1998, 1999 Cygnus Solutions
+/* Copyright (C) 1998, 1999, 2000 Free Software Foundation
This file is part of libgcj.
#define HANDLE_FPE 1
#define SIGNAL_HANDLER(_name) \
-static void _name (int _dummy, siginfo_t *_info, ucontext_t *_context)
+static void _name (int _dummy, siginfo_t *_info, void *arg)
#define FLUSH_REGISTER_WINDOWS \
asm volatile ("ta 3");
-#define MAKE_THROW_FRAME \
+#define MAKE_THROW_FRAME(_exception) \
do \
{ \
+ ucontext_t *_context = (ucontext_t *) arg; \
(void)_dummy; \
(void)_info; \
register int sp = _context->uc_mcontext.gregs[REG_SP]; \
nullp = new java::lang::NullPointerException (); \
struct sigaction act; \
act.sa_sigaction = catch_segv; \
- act.sa_flags = SA_SIGINFO; \
+ act.sa_flags = SA_SIGINFO | SA_NODEFER; \
sigemptyset (&act.sa_mask); \
sigaction (SIGSEGV, &act, NULL); \
} \
arithexception = new java::lang::ArithmeticException \
(JvNewStringLatin1 ("/ by zero")); \
struct sigaction act; \
- act.sa_flags = SA_SIGINFO; \
+ act.sa_flags = SA_SIGINFO | SA_NODEFER; \
act.sa_sigaction = catch_fpe; \
sigemptyset (&act.sa_mask); \
sigaction (SIGFPE, &act, NULL); \