aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/init.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada/init.c')
-rw-r--r--gcc/ada/init.c34
1 files changed, 13 insertions, 21 deletions
diff --git a/gcc/ada/init.c b/gcc/ada/init.c
index 3ceb1a3..c48e244 100644
--- a/gcc/ada/init.c
+++ b/gcc/ada/init.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2020, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2021, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
@@ -78,7 +78,7 @@
extern "C" {
#endif
-extern void __gnat_raise_program_error (const char *, int);
+extern void __gnat_raise_program_error (const void *, int);
/* Addresses of exception data blocks for predefined exceptions. Tasking_Error
is not used in this unit, and the abort signal is only used on IRIX.
@@ -89,17 +89,16 @@ extern struct Exception_Data program_error;
extern struct Exception_Data storage_error;
/* For the Cert run time we use the regular raise exception routine because
- Raise_From_Signal_Handler is not available. */
+ __gnat_raise_from_signal_handler is not available. */
#ifdef CERT
-#define Raise_From_Signal_Handler \
- __gnat_raise_exception
-extern void Raise_From_Signal_Handler (struct Exception_Data *, const char *);
+#define Raise_From_Signal_Handler __gnat_raise_exception
#else
-#define Raise_From_Signal_Handler \
- ada__exceptions__raise_from_signal_handler
-extern void Raise_From_Signal_Handler (struct Exception_Data *, const char *);
+#define Raise_From_Signal_Handler __gnat_raise_from_signal_handler
#endif
+extern void Raise_From_Signal_Handler (struct Exception_Data *, const void *)
+ ATTRIBUTE_NORETURN;
+
/* Global values computed by the binder. Note that these variables are
declared here, not in the binder file, to avoid having unresolved
references in the shared libgnat. */
@@ -1990,7 +1989,7 @@ __gnat_error_handler (int sig, siginfo_t *si, void *sc)
anything else.
This mechanism is only need in kernel mode. */
#if !(defined (__RTP__) || defined (VTHREADS)) && ((CPU == PPCE500V2) || (CPU == PPC85XX))
- register unsigned msr;
+ unsigned msr;
/* Read the MSR value */
asm volatile ("mfmsr %0" : "=r" (msr));
/* Force the SPE bit if not set. */
@@ -2749,11 +2748,7 @@ __gnat_install_handler (void)
/* __gnat_init_float */
/*********************/
-/* This routine is called as each process thread is created, for possible
- initialization of the FP processor. This version is used under INTERIX
- and WIN32. */
-
-#if defined (_WIN32) || defined (__INTERIX) \
+#if defined (_WIN32) || defined (__INTERIX) || defined (__linux__) \
|| defined (__Lynx__) || defined(__NetBSD__) || defined(__FreeBSD__) \
|| defined (__OpenBSD__) || defined (__DragonFly__) || defined(__QNX__)
@@ -2763,13 +2758,10 @@ void
__gnat_init_float (void)
{
#if defined (__i386__) || defined (__x86_64__)
-
- /* This is used to properly initialize the FPU on an x86 for each
- process thread. */
-
+ /* This is used to properly initialize the FPU to 64-bit precision on an x86
+ for each process thread and also for floating-point I/O. */
asm ("finit");
-
-#endif /* Defined __i386__ */
+#endif
}
#endif