return sizeof (struct sigcontext);
}
-/********************/
-/* PA HP-UX section */
-/********************/
+/*****************/
+/* HP-UX section */
+/*****************/
-#elif defined (__hppa__) && defined (__hpux__)
+#elif defined (__hpux__)
#include <signal.h>
#include <sys/ucontext.h>
static void
__gnat_error_handler (int sig, siginfo_t *siginfo, void *ucontext);
+#if defined (__hppa__)
+
/* __gnat_adjust_context_for_raise - see comments along with the default
version later in this file. */
mcontext->ss_narrow.ss_pcoq_head ++;
}
+#endif
+
static void
__gnat_error_handler
(int sig, siginfo_t *siginfo ATTRIBUTE_UNUSED, void *ucontext)
exceptions. Make sure that the handler isn't interrupted by another
signal that might cause a scheduling event! */
- act.sa_handler = __gnat_error_handler;
+ act.sa_sigaction
+ = (void (*)(int, struct __siginfo *, void*)) __gnat_error_handler;
act.sa_flags = SA_NODEFER | SA_RESTART | SA_SIGINFO;
(void) sigemptyset (&act.sa_mask);
asm ("mtfsb0 26");
#endif
+#if (defined (__i386__) || defined (i386)) && !defined (VTHREADS)
+ /* This is used to properly initialize the FPU on an x86 for each
+ process thread. */
+ asm ("finit");
+#endif
+
/* Similarly for sparc64. Achieved by masking bits in the Trap Enable Mask
field of the Floating-point Status Register (see the SPARC Architecture
Manual Version 9, p 48). */