provide fenv functions on windows

This commit is contained in:
Jameson Nash 2013-08-27 21:12:17 -04:00
parent ec41733ce8
commit 9b23967282
2 changed files with 24 additions and 22 deletions

View file

@ -27,6 +27,7 @@
*/ */
#include "bsd_fpu.h" #include "bsd_fpu.h"
#include "math_private.h"
#define _fenv_static #define _fenv_static
#include "fenv.h" #include "fenv.h"
@ -45,10 +46,10 @@ const fenv_t __fe_dfl_env = {
__INITIAL_MXCSR__ __INITIAL_MXCSR__
}; };
extern inline int feclearexcept(int __excepts); extern inline DLLEXPORT int feclearexcept(int __excepts);
extern inline int fegetexceptflag(fexcept_t *__flagp, int __excepts); extern inline DLLEXPORT int fegetexceptflag(fexcept_t *__flagp, int __excepts);
int DLLEXPORT int
fesetexceptflag(const fexcept_t *flagp, int excepts) fesetexceptflag(const fexcept_t *flagp, int excepts)
{ {
fenv_t env; fenv_t env;
@ -66,7 +67,7 @@ fesetexceptflag(const fexcept_t *flagp, int excepts)
return (0); return (0);
} }
int DLLEXPORT int
feraiseexcept(int excepts) feraiseexcept(int excepts)
{ {
fexcept_t ex = excepts; fexcept_t ex = excepts;
@ -76,11 +77,11 @@ feraiseexcept(int excepts)
return (0); return (0);
} }
extern inline int fetestexcept(int __excepts); extern inline DLLEXPORT int fetestexcept(int __excepts);
extern inline int fegetround(void); extern inline DLLEXPORT int fegetround(void);
extern inline int fesetround(int __round); extern inline DLLEXPORT int fesetround(int __round);
int DLLEXPORT int
fegetenv(fenv_t *envp) fegetenv(fenv_t *envp)
{ {
@ -94,7 +95,7 @@ fegetenv(fenv_t *envp)
return (0); return (0);
} }
int DLLEXPORT int
feholdexcept(fenv_t *envp) feholdexcept(fenv_t *envp)
{ {
uint32_t mxcsr; uint32_t mxcsr;
@ -109,9 +110,9 @@ feholdexcept(fenv_t *envp)
return (0); 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) feupdateenv(const fenv_t *envp)
{ {
uint32_t mxcsr; uint32_t mxcsr;

View file

@ -26,8 +26,9 @@
* $FreeBSD: src/lib/msun/i387/fenv.c,v 1.8 2011/10/21 06:25:31 das Exp $ * $FreeBSD: src/lib/msun/i387/fenv.c,v 1.8 2011/10/21 06:25:31 das Exp $
*/ */
#include <include/cdefs-compat.h> #include <cdefs-compat.h>
#include <include/types-compat.h> #include <types-compat.h>
#include <math_private.h>
#if defined(__WIN32__) || defined(__linux__) #if defined(__WIN32__) || defined(__linux__)
#include <i387/bsd_npx.h> #include <i387/bsd_npx.h>
#else #else
@ -93,10 +94,10 @@ __test_sse(void)
return (0); return (0);
} }
extern inline int feclearexcept(int __excepts); extern inline DLLEXPORT int feclearexcept(int __excepts);
extern inline int fegetexceptflag(fexcept_t *__flagp, int __excepts); extern inline DLLEXPORT int fegetexceptflag(fexcept_t *__flagp, int __excepts);
int DLLEXPORT int
fesetexceptflag(const fexcept_t *flagp, int excepts) fesetexceptflag(const fexcept_t *flagp, int excepts)
{ {
fenv_t env; fenv_t env;
@ -117,7 +118,7 @@ fesetexceptflag(const fexcept_t *flagp, int excepts)
return (0); return (0);
} }
int DLLEXPORT int
feraiseexcept(int excepts) feraiseexcept(int excepts)
{ {
fexcept_t ex = excepts; fexcept_t ex = excepts;
@ -127,9 +128,9 @@ feraiseexcept(int excepts)
return (0); return (0);
} }
extern inline int fetestexcept(int __excepts); extern inline DLLEXPORT int fetestexcept(int __excepts);
extern inline int fegetround(void); extern inline DLLEXPORT int fegetround(void);
extern inline int fesetround(int __round); extern inline DLLEXPORT int fesetround(int __round);
int int
fegetenv(fenv_t *envp) fegetenv(fenv_t *envp)
@ -166,9 +167,9 @@ feholdexcept(fenv_t *envp)
return (0); 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) feupdateenv(const fenv_t *envp)
{ {
uint32_t mxcsr; uint32_t mxcsr;