OSDN Git Service

Back out controversial fix.
[pf3gnuchains/gcc-fork.git] / libjava / include / sparc-signal.h
index e733da2..eb7f2b3 100644 (file)
@@ -1,6 +1,6 @@
 // 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.
 
@@ -18,19 +18,26 @@ details.  */
 #define HANDLE_FPE 1
 
 #define SIGNAL_HANDLER(_name)                                          \
-static void _name (int _dummy, siginfo_t *_info, void *arg)
+static void _name (int _dummy __attribute__ ((__unused__)), \
+                  siginfo_t *_info __attribute__ ((__unused__)), \
+                  void *arg __attribute__ ((__unused__)))
 
+#ifdef __arch64__
+#define FLUSH_REGISTER_WINDOWS                                 \
+  asm volatile ("flushw");
+#else
 #define FLUSH_REGISTER_WINDOWS                                 \
   asm volatile ("ta 3");
+#endif
 
-#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];       \
-  register int retaddr = _context->uc_mcontext.gregs[REG_O7];  \
+  register long sp = _context->uc_mcontext.gregs[REG_SP];      \
+  register long retaddr = _context->uc_mcontext.gregs[REG_O7]; \
   FLUSH_REGISTER_WINDOWS;                                      \
   asm volatile ("mov %0, %%i6; mov %1, %%i7"                   \
                : : "r"(sp), "r"(retaddr));                     \
@@ -40,7 +47,6 @@ while (0)
 #define INIT_SEGV                                              \
 do                                                             \
   {                                                            \
-    nullp = new java::lang::NullPointerException ();           \
     struct sigaction act;                                      \
     act.sa_sigaction = catch_segv;                             \
     act.sa_flags = SA_SIGINFO | SA_NODEFER;                    \
@@ -52,8 +58,6 @@ while (0)
 #define INIT_FPE                                               \
 do                                                             \
   {                                                            \
-    arithexception = new java::lang::ArithmeticException       \
-      (JvNewStringLatin1 ("/ by zero"));                       \
     struct sigaction act;                                      \
     act.sa_flags = SA_SIGINFO | SA_NODEFER;                    \
     act.sa_sigaction = catch_fpe;                              \