53 int __softfloat_float_exception_flags;
54 int __softfloat_float_exception_mask;
55 int __softfloat_float_rounding_mode;
58 __fenv_static
inline int
59 feclearexcept(
int excepts)
62 __softfloat_float_exception_flags &= ~excepts;
66 __fenv_static
inline int
67 fegetexceptflag(fexcept_t *flagp,
int excepts)
70 *flagp = __softfloat_float_exception_flags & excepts;
74 __fenv_static
inline int
75 fesetexceptflag(
const fexcept_t *flagp,
int excepts)
78 __softfloat_float_exception_flags &= ~excepts;
79 __softfloat_float_exception_flags |= *flagp & excepts;
83 __fenv_static
inline int
84 feraiseexcept(
int excepts)
87 return(excepts ? -
ENOTSUP : 0 );
91 __fenv_static
inline int
92 fetestexcept(
int excepts)
95 return (__softfloat_float_exception_flags & excepts);
98 __fenv_static
inline int
102 return (__softfloat_float_rounding_mode);
105 __fenv_static
inline int
106 fesetround(
int rounding_mode)
109 __softfloat_float_rounding_mode = rounding_mode;
113 __fenv_static
inline int
114 fegetenv(fenv_t *envp)
117 __set_env(*envp, __softfloat_float_exception_flags,
118 __softfloat_float_exception_mask, __softfloat_float_rounding_mode);
122 __fenv_static
inline int
123 feholdexcept(fenv_t *envp)
128 __softfloat_float_exception_flags = 0;
129 __softfloat_float_exception_mask = 0;
133 __fenv_static
inline int
134 fesetenv(
const fenv_t *envp)
137 __softfloat_float_exception_flags = __env_flags(*envp);
138 __softfloat_float_exception_mask = __env_mask(*envp);
139 __softfloat_float_rounding_mode = __env_round(*envp);
143 __fenv_static
inline int
144 feupdateenv(
const fenv_t *envp)
146 int __oflags = __softfloat_float_exception_flags;
149 feraiseexcept(__oflags);
157 __fenv_static
inline int
158 feenableexcept(
int __mask)
160 int __omask = __softfloat_float_exception_mask;
162 __softfloat_float_exception_mask |= __mask;
166 __fenv_static
inline int
167 fedisableexcept(
int __mask)
169 int __omask = __softfloat_float_exception_mask;
171 __softfloat_float_exception_mask &= ~__mask;
175 __fenv_static
inline int
179 return (__softfloat_float_exception_mask);