From 4c48f0e44d775497426638ffe0e8a110e4c8a2c5 Mon Sep 17 00:00:00 2001 From: Daniel Eischen Date: Tue, 27 Jun 2000 11:27:25 +0000 Subject: When initializing the GNAT (i386) run-time, initialize the floating point control word to use 64-bit (extended) precision instead of FreeBSDs default 53-bit (double) precision. Submitted by: Sune Falck --- lang/gnat/files/patch-ai | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'lang/gnat') diff --git a/lang/gnat/files/patch-ai b/lang/gnat/files/patch-ai index 0e6593362a79..f0a487f505f0 100644 --- a/lang/gnat/files/patch-ai +++ b/lang/gnat/files/patch-ai @@ -1,8 +1,8 @@ *** ./ada/a-init.c.orig Fri Sep 24 08:42:43 1999 ---- ./ada/a-init.c Sat Nov 6 16:22:51 1999 +--- ./ada/a-init.c Mon Jun 26 21:43:54 2000 *************** *** 1445,1450 **** ---- 1445,1523 ---- +--- 1445,1532 ---- } @@ -73,12 +73,38 @@ + (void) sigaction (SIGBUS, &act, NULL); + } + ++ void __gnat_init_float (); ++ + void + __gnat_initialize () + { + __gnat_install_handler (); ++ ++ /* XXX - Initialize floating-point coprocessor. This call is ++ needed because FreeBSD defaults to 53-bit precision instead ++ of 64-bit precision. We require the full precision for ++ proper operation, given that we have set Max_Digits etc ++ with this in mind. */ ++ __gnat_init_float (); + } + /***************************************/ /* __gnat_initialize (default version) */ /***************************************/ +*************** +*** 1470,1476 **** + defined in all Win32 versions, but only actually does something on + the i386 version, where it properly initializes the FPU for GNAT use. */ + +! #if defined (_WIN32) || defined (__INTERIX) + void + __gnat_init_float () + { +--- 1552,1558 ---- + defined in all Win32 versions, but only actually does something on + the i386 version, where it properly initializes the FPU for GNAT use. */ + +! #if defined (_WIN32) || defined (__INTERIX) || defined (__FreeBSD__) + void + __gnat_init_float () + { -- cgit v1.2.3