From 9b239672827f98c1dd81d63cfeb256d106ad6ade Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Tue, 27 Aug 2013 21:12:17 -0400 Subject: [PATCH] provide fenv functions on windows --- amd64/fenv.c | 23 ++++++++++++----------- i387/fenv.c | 23 ++++++++++++----------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/amd64/fenv.c b/amd64/fenv.c index 9647223..cba1b5c 100644 --- a/amd64/fenv.c +++ b/amd64/fenv.c @@ -27,6 +27,7 @@ */ #include "bsd_fpu.h" +#include "math_private.h" #define _fenv_static #include "fenv.h" @@ -45,10 +46,10 @@ const fenv_t __fe_dfl_env = { __INITIAL_MXCSR__ }; -extern inline int feclearexcept(int __excepts); -extern inline int fegetexceptflag(fexcept_t *__flagp, int __excepts); +extern inline DLLEXPORT int feclearexcept(int __excepts); +extern inline DLLEXPORT int fegetexceptflag(fexcept_t *__flagp, int __excepts); -int +DLLEXPORT int fesetexceptflag(const fexcept_t *flagp, int excepts) { fenv_t env; @@ -66,7 +67,7 @@ fesetexceptflag(const fexcept_t *flagp, int excepts) return (0); } -int +DLLEXPORT int feraiseexcept(int excepts) { fexcept_t ex = excepts; @@ -76,11 +77,11 @@ feraiseexcept(int excepts) return (0); } -extern inline int fetestexcept(int __excepts); -extern inline int fegetround(void); -extern inline int fesetround(int __round); +extern inline DLLEXPORT int fetestexcept(int __excepts); +extern inline DLLEXPORT int fegetround(void); +extern inline DLLEXPORT int fesetround(int __round); -int +DLLEXPORT int fegetenv(fenv_t *envp) { @@ -94,7 +95,7 @@ fegetenv(fenv_t *envp) return (0); } -int +DLLEXPORT int feholdexcept(fenv_t *envp) { uint32_t mxcsr; @@ -109,9 +110,9 @@ feholdexcept(fenv_t *envp) return (0); } -extern inline int fesetenv(const fenv_t *__envp); +extern inline DLLEXPORT int fesetenv(const fenv_t *__envp); -int +DLLEXPORT int feupdateenv(const fenv_t *envp) { uint32_t mxcsr; diff --git a/i387/fenv.c b/i387/fenv.c index 530f488..950d53c 100644 --- a/i387/fenv.c +++ b/i387/fenv.c @@ -26,8 +26,9 @@ * $FreeBSD: src/lib/msun/i387/fenv.c,v 1.8 2011/10/21 06:25:31 das Exp $ */ -#include -#include +#include +#include +#include #if defined(__WIN32__) || defined(__linux__) #include #else @@ -93,10 +94,10 @@ __test_sse(void) return (0); } -extern inline int feclearexcept(int __excepts); -extern inline int fegetexceptflag(fexcept_t *__flagp, int __excepts); +extern inline DLLEXPORT int feclearexcept(int __excepts); +extern inline DLLEXPORT int fegetexceptflag(fexcept_t *__flagp, int __excepts); -int +DLLEXPORT int fesetexceptflag(const fexcept_t *flagp, int excepts) { fenv_t env; @@ -117,7 +118,7 @@ fesetexceptflag(const fexcept_t *flagp, int excepts) return (0); } -int +DLLEXPORT int feraiseexcept(int excepts) { fexcept_t ex = excepts; @@ -127,9 +128,9 @@ feraiseexcept(int excepts) return (0); } -extern inline int fetestexcept(int __excepts); -extern inline int fegetround(void); -extern inline int fesetround(int __round); +extern inline DLLEXPORT int fetestexcept(int __excepts); +extern inline DLLEXPORT int fegetround(void); +extern inline DLLEXPORT int fesetround(int __round); int fegetenv(fenv_t *envp) @@ -166,9 +167,9 @@ feholdexcept(fenv_t *envp) return (0); } -extern inline int fesetenv(const fenv_t *__envp); +extern inline DLLEXPORT int fesetenv(const fenv_t *__envp); -int +DLLEXPORT int feupdateenv(const fenv_t *envp) { uint32_t mxcsr;