fenv: provide environment primitives

This commit is contained in:
Lephenixnoir 2021-05-21 14:21:51 +02:00
parent 1cf5a91b46
commit 08f772e6ab
No known key found for this signature in database
GPG key ID: 1BBA026E13FC0495
2 changed files with 8 additions and 3 deletions

View file

@ -55,7 +55,6 @@
extern int __softfloat_float_exception_flags;
extern int __softfloat_float_exception_mask;
extern int __softfloat_float_rounding_mode;
void __softfloat_float_raise(int);
__fenv_static inline int
feclearexcept(int __excepts)
@ -86,7 +85,7 @@ __fenv_static inline int
feraiseexcept(int __excepts)
{
__softfloat_float_raise(__excepts);
__softfloat_float_exception_flags |= __excepts;
return (0);
}
@ -181,4 +180,4 @@ fegetexcept(void)
return (__softfloat_float_exception_mask);
}
#endif /* __BSD_VISIBLE */
#endif /* __BSD_VISIBLE */

View file

@ -29,6 +29,8 @@
#define __fenv_static
#include "openlibm_fenv.h"
#include <float.h>
#ifdef __GNUC_GNU_INLINE__
#error "This file must be compiled with C99 'inline' semantics"
#endif
@ -39,6 +41,10 @@
*/
const fenv_t __fe_dfl_env = 0;
int __softfloat_float_exception_flags = 0;
int __softfloat_float_exception_mask = 0;
int __softfloat_float_rounding_mode = FLT_ROUNDS;
#define __set_env(env, flags, mask, rnd) env = ((flags) \
| (mask)<<_FPUSW_SHIFT \
| (rnd) << 24)