Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Korn <dave.korn.cygwin@gmail.com>2010-09-11 10:53:28 +0400
committerDave Korn <dave.korn.cygwin@gmail.com>2010-09-11 10:53:28 +0400
commit0f81b5d4bcaa5c840031796d94df9ba6d6fae4d0 (patch)
tree167292d4f6250ddb23f2abfe2660049054117f91 /winsup/cygwin/crt0.c
parentf7dea7f23347d847b6abd3d8b5f7e1b00f21262f (diff)
winsup/cygwin/ChangeLog:
* Makefile.in (DLL_OFILES): Add new fenv.o module. (fenv_CFLAGS): New flags definition for fenv.o compile. * autoload.cc (std_dll_init): Use fenv.h functions instead of direct manipulation of x87 FPU registers. * crt0.c (mainCRTStartup): Likewise. * cygwin.din (feclearexcept, fegetexceptflag, feraiseexcept, fesetexceptflag, fetestexcept, fegetround, fesetround, fegetenv, feholdexcept, fesetenv, feupdateenv, fegetprec, fesetprec, feenableexcept, fedisableexcept, fegetexcept, _feinitialise, _fe_dfl_env, _fe_nomask_env): Export new functions and data items. * fenv.cc: New file. * posix.sgml: Update status of newly-implemented APIs. * include/fenv.h: Likewise related header. * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
Diffstat (limited to 'winsup/cygwin/crt0.c')
-rw-r--r--winsup/cygwin/crt0.c20
1 files changed, 2 insertions, 18 deletions
diff --git a/winsup/cygwin/crt0.c b/winsup/cygwin/crt0.c
index d716d9be5..aa6a5f18f 100644
--- a/winsup/cygwin/crt0.c
+++ b/winsup/cygwin/crt0.c
@@ -13,11 +13,7 @@ details. */
#include "winlean.h"
#include <sys/cygwin.h>
-#ifdef __i386__
-#define FPU_RESERVED 0xF0C0
-#define FPU_DEFAULT 0x033f
-
-#endif
+#include "fenv.h"
extern int main (int argc, char **argv);
@@ -29,19 +25,7 @@ mainCRTStartup ()
#ifdef __i386__
(void)__builtin_return_address(1);
asm volatile ("andl $-16,%%esp" ::: "%esp");
- {
- volatile unsigned short cw;
-
- /* Get Control Word */
- __asm__ volatile ("fnstcw %0" : "=m" (cw) : );
-
- /* mask in */
- cw &= FPU_RESERVED;
- cw |= FPU_DEFAULT;
-
- /* set cw */
- __asm__ volatile ("fldcw %0" :: "m" (cw));
- }
+ _feinitialise ();
#endif
cygwin_crt0 (main);