* mingwex/feclearexcept.c (feclearexcept): Change declaration.
Do not return a value. * mingwex/fegetexceptflag.c (fegetexceptflag): Likewise. * mingwex/feraiseexcept.c (feraiseexcept): Likewise. * mingwex/fesetexceptflag.c (fesetexceptflag): Likewise. * mingwex/fegetenv.c (fegetenv): Likewise. * mingwex/fesetenv.c (fesetenv): Likewise. * mingwex/feupdateenv.c (feupdateenv): Likewise. * include/fenv.h (feclearexcept, fegetexceptflag, feraiseexcept, fesetexceptflag, fegetenv, fesetenv, feupdateenv): Correct prototypes.
This commit is contained in:
parent
03ee0ba163
commit
5092e4a714
|
@ -65,10 +65,10 @@ extern "C" {
|
||||||
/*TODO: Some of these could be inlined */
|
/*TODO: Some of these could be inlined */
|
||||||
/* 7.6.2 Exception */
|
/* 7.6.2 Exception */
|
||||||
|
|
||||||
extern int __cdecl feclearexcept (int);
|
extern void __cdecl feclearexcept (int);
|
||||||
extern int __cdecl fegetexceptflag (fexcept_t * flagp, int excepts);
|
extern void __cdecl fegetexceptflag (fexcept_t * flagp, int excepts);
|
||||||
extern int __cdecl feraiseexcept (int excepts );
|
extern void __cdecl feraiseexcept (int excepts );
|
||||||
extern int __cdecl fesetexceptflag (const fexcept_t *, int);
|
extern void __cdecl fesetexceptflag (const fexcept_t *, int);
|
||||||
extern int __cdecl fetestexcept (int excepts);
|
extern int __cdecl fetestexcept (int excepts);
|
||||||
|
|
||||||
/* 7.6.3 Rounding */
|
/* 7.6.3 Rounding */
|
||||||
|
@ -78,9 +78,9 @@ extern int __cdecl fesetround (int mode);
|
||||||
|
|
||||||
/* 7.6.4 Environment */
|
/* 7.6.4 Environment */
|
||||||
|
|
||||||
extern int __cdecl fegetenv (fenv_t * envp);
|
extern void __cdecl fegetenv (fenv_t * envp);
|
||||||
extern int __cdecl fesetenv (const fenv_t * );
|
extern void __cdecl fesetenv (const fenv_t * );
|
||||||
extern int __cdecl feupdateenv (const fenv_t *);
|
extern void __cdecl feupdateenv (const fenv_t *);
|
||||||
extern int __cdecl feholdexcept (fenv_t *);
|
extern int __cdecl feholdexcept (fenv_t *);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -4,11 +4,10 @@
|
||||||
The feclearexcept function clears the supported exceptions
|
The feclearexcept function clears the supported exceptions
|
||||||
represented by its argument. */
|
represented by its argument. */
|
||||||
|
|
||||||
int feclearexcept (int excepts)
|
void feclearexcept (int excepts)
|
||||||
{
|
{
|
||||||
fenv_t _env;
|
fenv_t _env;
|
||||||
__asm__ volatile ("fnstenv %0;" : "=m" (_env)); /* get the env */
|
__asm__ volatile ("fnstenv %0;" : "=m" (_env)); /* get the env */
|
||||||
_env.__status_word &= ~(excepts & FE_ALL_EXCEPT); /* clear the except */
|
_env.__status_word &= ~(excepts & FE_ALL_EXCEPT); /* clear the except */
|
||||||
__asm__ volatile ("fldenv %0;" :: "m" (_env)); /*set the env */
|
__asm__ volatile ("fldenv %0;" :: "m" (_env)); /*set the env */
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,9 +4,8 @@
|
||||||
The fegetenv function stores the current floating-point environment
|
The fegetenv function stores the current floating-point environment
|
||||||
in the object pointed to by envp. */
|
in the object pointed to by envp. */
|
||||||
|
|
||||||
int fegetenv (fenv_t * envp)
|
void fegetenv (fenv_t * envp)
|
||||||
{
|
{
|
||||||
__asm__ ("fnstenv %0;": "=m" (*envp));
|
__asm__ ("fnstenv %0;": "=m" (*envp));
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,10 +6,9 @@
|
||||||
representation of the exception flags indicated by the argument
|
representation of the exception flags indicated by the argument
|
||||||
excepts in the object pointed to by the argument flagp. */
|
excepts in the object pointed to by the argument flagp. */
|
||||||
|
|
||||||
int fegetexceptflag (fexcept_t * flagp, int excepts)
|
void fegetexceptflag (fexcept_t * flagp, int excepts)
|
||||||
{
|
{
|
||||||
unsigned short _sw;
|
unsigned short _sw;
|
||||||
__asm__ ("fnstsw %%ax;": "=a" (_sw));
|
__asm__ ("fnstsw %%ax;": "=a" (_sw));
|
||||||
*flagp = _sw & excepts & FE_ALL_EXCEPT;
|
*flagp = _sw & excepts & FE_ALL_EXCEPT;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,12 +8,11 @@
|
||||||
the inexact exception whenever it raises the overflow
|
the inexact exception whenever it raises the overflow
|
||||||
or underflow exception is implementation-defined. */
|
or underflow exception is implementation-defined. */
|
||||||
|
|
||||||
int feraiseexcept (int excepts)
|
void feraiseexcept (int excepts)
|
||||||
{
|
{
|
||||||
fenv_t _env;
|
fenv_t _env;
|
||||||
__asm__ volatile ("fnstenv %0;" : "=m" (_env));
|
__asm__ volatile ("fnstenv %0;" : "=m" (_env));
|
||||||
_env.__status_word |= excepts & FE_ALL_EXCEPT;
|
_env.__status_word |= excepts & FE_ALL_EXCEPT;
|
||||||
__asm__ volatile ("fldenv %0;"
|
__asm__ volatile ("fldenv %0;"
|
||||||
"fwait;" : : "m" (_env));
|
"fwait;" : : "m" (_env));
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
extern void (*_imp___fpreset)( void ) ;
|
extern void (*_imp___fpreset)( void ) ;
|
||||||
|
|
||||||
int fesetenv (const fenv_t * envp)
|
void fesetenv (const fenv_t * envp)
|
||||||
{
|
{
|
||||||
if (envp == FE_PC64_ENV)
|
if (envp == FE_PC64_ENV)
|
||||||
/*
|
/*
|
||||||
|
@ -38,5 +38,4 @@ int fesetenv (const fenv_t * envp)
|
||||||
|
|
||||||
else
|
else
|
||||||
__asm__ ("fldenv %0;" : : "m" (*envp));
|
__asm__ ("fldenv %0;" : : "m" (*envp));
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
represented by the argument excepts. This function does not raise
|
represented by the argument excepts. This function does not raise
|
||||||
exceptions, but only sets the state of the flags. */
|
exceptions, but only sets the state of the flags. */
|
||||||
|
|
||||||
int fesetexceptflag (const fexcept_t * flagp, int excepts)
|
void fesetexceptflag (const fexcept_t * flagp, int excepts)
|
||||||
{
|
{
|
||||||
fenv_t _env;
|
fenv_t _env;
|
||||||
|
|
||||||
|
@ -18,5 +18,4 @@ int fesetexceptflag (const fexcept_t * flagp, int excepts)
|
||||||
_env.__status_word &= ~excepts;
|
_env.__status_word &= ~excepts;
|
||||||
_env.__status_word |= (*flagp & excepts);
|
_env.__status_word |= (*flagp & excepts);
|
||||||
__asm__ volatile ("fldenv %0;" : : "m" (_env));
|
__asm__ volatile ("fldenv %0;" : : "m" (_env));
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,11 +10,10 @@
|
||||||
|
|
||||||
/* FIXME: this works but surely there must be a better way. */
|
/* FIXME: this works but surely there must be a better way. */
|
||||||
|
|
||||||
int feupdateenv (const fenv_t * envp)
|
void feupdateenv (const fenv_t * envp)
|
||||||
{
|
{
|
||||||
unsigned int _fexcept = fetestexcept (FE_ALL_EXCEPT); /*save excepts */
|
unsigned int _fexcept = fetestexcept (FE_ALL_EXCEPT); /*save excepts */
|
||||||
fesetenv (envp); /* install the env */
|
fesetenv (envp); /* install the env */
|
||||||
feraiseexcept (_fexcept); /* raise the execept */
|
feraiseexcept (_fexcept); /* raise the execept */
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue