Page MenuHomeFreeBSD

D56139.id174466.diff
No OneTemporary

D56139.id174466.diff

diff --git a/lib/msun/aarch64/fenv.h b/lib/msun/aarch64/fenv.h
--- a/lib/msun/aarch64/fenv.h
+++ b/lib/msun/aarch64/fenv.h
@@ -82,7 +82,28 @@
#define __msr_fpsr(__r) __asm __volatile("msr fpsr, %0" : : "r" (__r))
int feclearexcept(int);
+int fegetexceptflag(fexcept_t *, int);
+int fesetexceptflag(const fexcept_t *, int);
+int feraiseexcept(int);
+int fetestexcept(int);
+int fegetround(void);
+int fesetround(int);
+int fegetenv(fenv_t *);
+int feholdexcept(fenv_t *);
+int fesetenv(const fenv_t *);
+int feupdateenv(const fenv_t *);
+
#define feclearexcept(a) __feclearexcept_int(a)
+#define fegetexceptflag(e, a) __fegetexceptflag_int(e, a)
+#define fesetexceptflag(e, a) __fesetexceptflag_int(e, a)
+#define feraiseexcept(a) __feraiseexcept_int(a)
+#define fetestexcept(a) __fetestexcept_int(a)
+#define fegetround() __fegetround_int()
+#define fesetround(a) __fesetround_int(a)
+#define fegetenv(e) __fegetenv_int(e)
+#define feholdexcept(e) __feholdexcept_int(e)
+#define fesetenv(e) __fesetenv_int(e)
+#define feupdateenv(e) __feupdateenv_int(e)
__fenv_static inline int
__feclearexcept_int(int __excepts)
@@ -96,7 +117,7 @@
}
__fenv_static inline int
-fegetexceptflag(fexcept_t *__flagp, int __excepts)
+__fegetexceptflag_int(fexcept_t *__flagp, int __excepts)
{
fexcept_t __r;
@@ -106,7 +127,7 @@
}
__fenv_static inline int
-fesetexceptflag(const fexcept_t *__flagp, int __excepts)
+__fesetexceptflag_int(const fexcept_t *__flagp, int __excepts)
{
fexcept_t __r;
@@ -118,7 +139,7 @@
}
__fenv_static inline int
-feraiseexcept(int __excepts)
+__feraiseexcept_int(int __excepts)
{
fexcept_t __r;
@@ -129,7 +150,7 @@
}
__fenv_static inline int
-fetestexcept(int __excepts)
+__fetestexcept_int(int __excepts)
{
fexcept_t __r;
@@ -138,7 +159,7 @@
}
__fenv_static inline int
-fegetround(void)
+__fegetround_int(void)
{
fenv_t __r;
@@ -147,7 +168,7 @@
}
__fenv_static inline int
-fesetround(int __round)
+__fesetround_int(int __round)
{
fenv_t __r;
@@ -161,7 +182,7 @@
}
__fenv_static inline int
-fegetenv(fenv_t *__envp)
+__fegetenv_int(fenv_t *__envp)
{
__uint64_t fpcr;
__uint64_t fpsr;
@@ -174,7 +195,7 @@
}
__fenv_static inline int
-feholdexcept(fenv_t *__envp)
+__feholdexcept_int(fenv_t *__envp)
{
fenv_t __r;
@@ -191,7 +212,7 @@
}
__fenv_static inline int
-fesetenv(const fenv_t *__envp)
+__fesetenv_int(const fenv_t *__envp)
{
__msr_fpcr((*__envp) >> 32);
@@ -200,7 +221,7 @@
}
__fenv_static inline int
-feupdateenv(const fenv_t *__envp)
+__feupdateenv_int(const fenv_t *__envp)
{
fexcept_t __r;
diff --git a/lib/msun/aarch64/fenv.c b/lib/msun/aarch64/fenv.c
--- a/lib/msun/aarch64/fenv.c
+++ b/lib/msun/aarch64/fenv.c
@@ -25,7 +25,6 @@
* SUCH DAMAGE.
*/
-#define __fenv_static
#include "fenv.h"
/*
@@ -34,26 +33,68 @@
*/
const fenv_t __fe_dfl_env = 0;
-#ifdef __GNUC_GNU_INLINE__
-#error "This file must be compiled with C99 'inline' semantics"
-#endif
-
int
(feclearexcept)(int excepts)
{
return (__feclearexcept_int(excepts));
}
-extern inline int fegetexceptflag(fexcept_t *__flagp, int __excepts);
-extern inline int fesetexceptflag(const fexcept_t *__flagp, int __excepts);
-extern inline int feraiseexcept(int __excepts);
-extern inline int fetestexcept(int __excepts);
-extern inline int fegetround(void);
-extern inline int fesetround(int __round);
-extern inline int fegetenv(fenv_t *__envp);
-extern inline int feholdexcept(fenv_t *__envp);
-extern inline int fesetenv(const fenv_t *__envp);
-extern inline int feupdateenv(const fenv_t *__envp);
-extern inline int feenableexcept(int __mask);
-extern inline int fedisableexcept(int __mask);
-extern inline int fegetexcept(void);
+int
+(fegetexceptflag)(fexcept_t *flagp, int excepts)
+{
+ return (__fegetexceptflag_int(flagp, excepts));
+}
+
+int
+(fesetexceptflag)(const fexcept_t *flagp, int excepts)
+{
+ return (__fesetexceptflag_int(flagp, excepts));
+}
+
+int
+(feraiseexcept)(int excepts)
+{
+ return (__feraiseexcept_int(excepts));
+}
+
+int
+(fetestexcept)(int excepts)
+{
+ return (__fetestexcept_int(excepts));
+}
+
+int
+(fegetround)(void)
+{
+ return (__fegetround_int());
+}
+
+int
+(fesetround)(int round)
+{
+ return (__fesetround_int(round));
+}
+
+int
+(fegetenv)(fenv_t *envp)
+{
+ return (__fegetenv_int(envp));
+}
+
+int
+(feholdexcept)(fenv_t *envp)
+{
+ return (__feholdexcept_int(envp));
+}
+
+int
+(fesetenv)(const fenv_t *envp)
+{
+ return (__fesetenv_int(envp));
+}
+
+int
+(feupdateenv)(const fenv_t *envp)
+{
+ return (__feupdateenv_int(envp));
+}
diff --git a/lib/msun/amd64/fenv.c b/lib/msun/amd64/fenv.c
--- a/lib/msun/amd64/fenv.c
+++ b/lib/msun/amd64/fenv.c
@@ -29,13 +29,8 @@
#include <sys/types.h>
#include <machine/fpu.h>
-#define __fenv_static
#include "fenv.h"
-#ifdef __GNUC_GNU_INLINE__
-#error "This file must be compiled with C99 'inline' semantics"
-#endif
-
const fenv_t __fe_dfl_env = {
{ 0xffff0000 | __INITIAL_FPUCW__,
0xffff0000,
@@ -52,7 +47,11 @@
return (__feclearexcept_int(excepts));
}
-extern inline int fegetexceptflag(fexcept_t *__flagp, int __excepts);
+int
+(fegetexceptflag)(fexcept_t *flagp, int excepts)
+{
+ return (__fegetexceptflag_int(flagp, excepts));
+}
int
fesetexceptflag(const fexcept_t *flagp, int excepts)
@@ -82,9 +81,23 @@
return (0);
}
-extern inline int fetestexcept(int __excepts);
-extern inline int fegetround(void);
-extern inline int fesetround(int __round);
+int
+(fetestexcept)(int excepts)
+{
+ return (__fetestexcept_int(excepts));
+}
+
+int
+(fegetround)(void)
+{
+ return (__fegetround_int());
+}
+
+int
+(fesetround)(int round)
+{
+ return (__fesetround_int(round));
+}
int
fegetenv(fenv_t *envp)
@@ -115,7 +128,11 @@
return (0);
}
-extern inline int fesetenv(const fenv_t *__envp);
+int
+(fesetenv)(const fenv_t *envp)
+{
+ return (__fesetenv_int(envp));
+}
int
feupdateenv(const fenv_t *envp)
diff --git a/lib/msun/arm/fenv.h b/lib/msun/arm/fenv.h
--- a/lib/msun/arm/fenv.h
+++ b/lib/msun/arm/fenv.h
@@ -112,7 +112,39 @@
#define _FPU_MASK_SHIFT 8
int feclearexcept(int);
+int fegetexceptflag(fexcept_t *, int);
+int fesetexceptflag(const fexcept_t *, int);
+int feraiseexcept(int);
+int fetestexcept(int);
+int fegetround(void);
+int fesetround(int);
+int fegetenv(fenv_t *);
+int feholdexcept(fenv_t *);
+int fesetenv(const fenv_t *);
+int feupdateenv(const fenv_t *);
+int fegetexcept(void);
+#if __BSD_VISIBLE
+int feenableexcept(int);
+int fedisableexcept(int);
+int fegetexcept(void);
+#endif
+
#define feclearexcept(a) __feclearexcept_int(a)
+#define fegetexceptflag(e, a) __fegetexceptflag_int(e, a)
+#define fesetexceptflag(e, a) __fesetexceptflag_int(e, a)
+#define feraiseexcept(a) __feraiseexcept_int(a)
+#define fetestexcept(a) __fetestexcept_int(a)
+#define fegetround() __fegetround_int()
+#define fesetround(a) __fesetround_int(a)
+#define fegetenv(e) __fegetenv_int(e)
+#define feholdexcept(e) __feholdexcept_int(e)
+#define fesetenv(e) __fesetenv_int(e)
+#define feupdateenv(e) __feupdateenv_int(e)
+#if __BSD_VISIBLE
+#define feenableexcept(a) __feenableexcept_int(a)
+#define fedisableexcept(a) __fedisableexcept_int(a)
+#define fegetexcept() __fegetexcept_int()
+#endif
__fenv_static inline int
__feclearexcept_int(int __excepts)
@@ -126,7 +158,7 @@
}
__fenv_static inline int
-fegetexceptflag(fexcept_t *__flagp, int __excepts)
+__fegetexceptflag_int(fexcept_t *__flagp, int __excepts)
{
fexcept_t __fpsr;
@@ -136,7 +168,7 @@
}
__fenv_static inline int
-fesetexceptflag(const fexcept_t *__flagp, int __excepts)
+__fesetexceptflag_int(const fexcept_t *__flagp, int __excepts)
{
fexcept_t __fpsr;
@@ -148,7 +180,7 @@
}
__fenv_static inline int
-feraiseexcept(int __excepts)
+__feraiseexcept_int(int __excepts)
{
fexcept_t __ex = __excepts;
@@ -157,7 +189,7 @@
}
__fenv_static inline int
-fetestexcept(int __excepts)
+__fetestexcept_int(int __excepts)
{
fexcept_t __fpsr;
@@ -166,7 +198,7 @@
}
__fenv_static inline int
-fegetround(void)
+__fegetround_int(void)
{
fenv_t __fpsr;
@@ -175,7 +207,7 @@
}
__fenv_static inline int
-fesetround(int __round)
+__fesetround_int(int __round)
{
fenv_t __fpsr;
@@ -187,7 +219,7 @@
}
__fenv_static inline int
-fegetenv(fenv_t *__envp)
+__fegetenv_int(fenv_t *__envp)
{
vmrs_fpscr(*__envp);
@@ -195,7 +227,7 @@
}
__fenv_static inline int
-feholdexcept(fenv_t *__envp)
+__feholdexcept_int(fenv_t *__envp)
{
fenv_t __env;
@@ -207,7 +239,7 @@
}
__fenv_static inline int
-fesetenv(const fenv_t *__envp)
+__fesetenv_int(const fenv_t *__envp)
{
vmsr_fpscr(*__envp);
@@ -215,7 +247,7 @@
}
__fenv_static inline int
-feupdateenv(const fenv_t *__envp)
+__feupdateenv_int(const fenv_t *__envp)
{
fexcept_t __fpsr;
@@ -230,7 +262,7 @@
/* We currently provide no external definitions of the functions below. */
__fenv_static inline int
-feenableexcept(int __mask)
+__feenableexcept_int(int __mask)
{
fenv_t __old_fpsr, __new_fpsr;
@@ -242,7 +274,7 @@
}
__fenv_static inline int
-fedisableexcept(int __mask)
+__fedisableexcept_int(int __mask)
{
fenv_t __old_fpsr, __new_fpsr;
@@ -254,7 +286,7 @@
}
__fenv_static inline int
-fegetexcept(void)
+__fegetexcept_int(void)
{
fenv_t __fpsr;
diff --git a/lib/msun/arm/fenv.c b/lib/msun/arm/fenv.c
--- a/lib/msun/arm/fenv.c
+++ b/lib/msun/arm/fenv.c
@@ -27,7 +27,6 @@
* SUCH DAMAGE.
*/
-#define __fenv_static
#include "fenv.h"
#include <machine/acle-compat.h>
@@ -66,29 +65,89 @@
#include "fenv-softfloat.h"
#endif
-#ifdef __GNUC_GNU_INLINE__
-#error "This file must be compiled with C99 'inline' semantics"
-#endif
-
int
(feclearexcept)(int excepts)
{
return (__feclearexcept_int(excepts));
}
-extern inline int fegetexceptflag(fexcept_t *__flagp, int __excepts);
-extern inline int fesetexceptflag(const fexcept_t *__flagp, int __excepts);
-extern inline int feraiseexcept(int __excepts);
-extern inline int fetestexcept(int __excepts);
-extern inline int fegetround(void);
-extern inline int fesetround(int __round);
-extern inline int fegetenv(fenv_t *__envp);
-extern inline int feholdexcept(fenv_t *__envp);
-extern inline int fesetenv(const fenv_t *__envp);
-extern inline int feupdateenv(const fenv_t *__envp);
-extern inline int feenableexcept(int __mask);
-extern inline int fedisableexcept(int __mask);
-extern inline int fegetexcept(void);
+int
+(fegetexceptflag)(fexcept_t *flagp, int excepts)
+{
+ return (__fegetexceptflag_int(flagp, excepts));
+}
+
+int
+(fesetexceptflag)(const fexcept_t *flagp, int excepts)
+{
+ return (__fesetexceptflag_int(flagp, excepts));
+}
+
+int
+(feraiseexcept)(int excepts)
+{
+ return (__feraiseexcept_int(excepts));
+}
+
+int
+(fetestexcept)(int excepts)
+{
+ return (__fetestexcept_int(excepts));
+}
+
+int
+(fegetround)(void)
+{
+ return (__fegetround_int());
+}
+
+int
+(fesetround)(int round)
+{
+ return (__fesetround_int(round));
+}
+
+int
+(fegetenv)(fenv_t *envp)
+{
+ return (__fegetenv_int(envp));
+}
+
+int
+(feholdexcept)(fenv_t *envp)
+{
+ return (__feholdexcept_int(envp));
+}
+
+int
+(fesetenv)(const fenv_t *envp)
+{
+ return (__fesetenv_int(envp));
+}
+
+int
+(feupdateenv)(const fenv_t *envp)
+{
+ return (__feupdateenv_int(envp));
+}
+
+int
+(feenableexcept)(int mask)
+{
+ return (__feenableexcept_int(mask));
+}
+
+int
+(fedisableexcept)(int mask)
+{
+ return (__fedisableexcept_int(mask));
+}
+
+int
+(fegetexcept)(void)
+{
+ return (__fegetexcept_int());
+}
#else /* !FENV_MANGLE && SOFTFP_ABI */
/* Set by libc when the VFP unit is enabled */
@@ -158,7 +217,8 @@
}
}
-int feclearexcept(int __excepts)
+int
+(feclearexcept)(int __excepts)
{
if (_libc_arm_fpu_present)
@@ -168,7 +228,8 @@
return (0);
}
-int fegetexceptflag(fexcept_t *__flagp, int __excepts)
+int
+(fegetexceptflag)(fexcept_t *__flagp, int __excepts)
{
fexcept_t __vfp_flagp;
@@ -182,7 +243,8 @@
return (0);
}
-int fesetexceptflag(const fexcept_t *__flagp, int __excepts)
+int
+(fesetexceptflag)(const fexcept_t *__flagp, int __excepts)
{
if (_libc_arm_fpu_present)
@@ -192,7 +254,8 @@
return (0);
}
-int feraiseexcept(int __excepts)
+int
+(feraiseexcept)(int __excepts)
{
if (_libc_arm_fpu_present)
@@ -202,7 +265,8 @@
return (0);
}
-int fetestexcept(int __excepts)
+int
+(fetestexcept)(int __excepts)
{
int __got_excepts;
@@ -214,7 +278,8 @@
return (__got_excepts);
}
-int fegetround(void)
+int
+(fegetround)(void)
{
if (_libc_arm_fpu_present)
@@ -222,7 +287,8 @@
return __softfp_fegetround();
}
-int fesetround(int __round)
+int
+(fesetround)(int __round)
{
if (_libc_arm_fpu_present)
@@ -232,7 +298,8 @@
return (0);
}
-int fegetenv(fenv_t *__envp)
+int
+(fegetenv)(fenv_t *__envp)
{
fenv_t __vfp_envp;
@@ -245,7 +312,8 @@
return (0);
}
-int feholdexcept(fenv_t *__envp)
+int
+(feholdexcept)(fenv_t *__envp)
{
fenv_t __vfp_envp;
@@ -258,7 +326,8 @@
return (0);
}
-int fesetenv(const fenv_t *__envp)
+int
+(fesetenv)(const fenv_t *__envp)
{
if (_libc_arm_fpu_present)
@@ -268,7 +337,8 @@
return (0);
}
-int feupdateenv(const fenv_t *__envp)
+int
+(feupdateenv)(const fenv_t *__envp)
{
if (_libc_arm_fpu_present)
@@ -278,7 +348,8 @@
return (0);
}
-int feenableexcept(int __mask)
+int
+(feenableexcept)(int __mask)
{
int __unmasked;
@@ -290,7 +361,8 @@
return (__unmasked);
}
-int fedisableexcept(int __mask)
+int
+(fedisableexcept)(int __mask)
{
int __unmasked;
@@ -302,7 +374,8 @@
return (__unmasked);
}
-int fegetexcept(void)
+int
+(fegetexcept)(void)
{
int __unmasked;
@@ -315,4 +388,3 @@
}
#endif
-
diff --git a/lib/msun/i387/fenv.c b/lib/msun/i387/fenv.c
--- a/lib/msun/i387/fenv.c
+++ b/lib/msun/i387/fenv.c
@@ -29,13 +29,8 @@
#include <sys/types.h>
#include <machine/npx.h>
-#define __fenv_static
#include "fenv.h"
-#ifdef __GNUC_GNU_INLINE__
-#error "This file must be compiled with C99 'inline' semantics"
-#endif
-
const fenv_t __fe_dfl_env = {
__INITIAL_NPXCW__,
0x0000,
@@ -94,7 +89,11 @@
return (__feclearexcept_int(excepts));
}
-extern inline int fegetexceptflag(fexcept_t *__flagp, int __excepts);
+int
+(fegetexceptflag)(fexcept_t *flagp, int excepts)
+{
+ return (__fegetexceptflag_int(flagp, excepts));
+}
int
fesetexceptflag(const fexcept_t *flagp, int excepts)
@@ -127,9 +126,23 @@
return (0);
}
-extern inline int fetestexcept(int __excepts);
-extern inline int fegetround(void);
-extern inline int fesetround(int __round);
+int
+(fetestexcept)(int excepts)
+{
+ return (__fetestexcept_int(excepts));
+}
+
+int
+(fegetround)(void)
+{
+ return (__fegetround_int());
+}
+
+int
+(fesetround)(int round)
+{
+ return (__fesetround_int(round));
+}
int
fegetenv(fenv_t *envp)
@@ -166,7 +179,11 @@
return (0);
}
-extern inline int fesetenv(const fenv_t *__envp);
+int
+(fesetenv)(const fenv_t *envp)
+{
+ return (__fesetenv_int(envp));
+}
int
feupdateenv(const fenv_t *envp)
diff --git a/lib/msun/powerpc/fenv.h b/lib/msun/powerpc/fenv.h
--- a/lib/msun/powerpc/fenv.h
+++ b/lib/msun/powerpc/fenv.h
@@ -112,7 +112,28 @@
};
int feclearexcept(int);
+int fegetexceptflag(fexcept_t *, int);
+int fesetexceptflag(const fexcept_t *, int);
+int feraiseexcept(int);
+int fetestexcept(int);
+int fegetround(void);
+int fesetround(int);
+int fegetenv(fenv_t *);
+int feholdexcept(fenv_t *);
+int fesetenv(const fenv_t *);
+int feupdateenv(const fenv_t *);
+
#define feclearexcept(a) __feclearexcept_int(a)
+#define fegetexceptflag(e, a) __fegetexceptflag_int(e, a)
+#define fesetexceptflag(e, a) __fesetexceptflag_int(e, a)
+#define feraiseexcept(a) __feraiseexcept_int(a)
+#define fetestexcept(a) __fetestexcept_int(a)
+#define fegetround() __fegetround_int()
+#define fesetround(a) __fesetround_int(a)
+#define fegetenv(e) __fegetenv_int(e)
+#define feholdexcept(e) __feholdexcept_int(e)
+#define fesetenv(e) __fesetenv_int(e)
+#define feupdateenv(e) __feupdateenv_int(e)
__fenv_static inline int
__feclearexcept_int(int __excepts)
@@ -128,7 +149,7 @@
}
__fenv_static inline int
-fegetexceptflag(fexcept_t *__flagp, int __excepts)
+__fegetexceptflag_int(fexcept_t *__flagp, int __excepts)
{
union __fpscr __r;
@@ -138,7 +159,7 @@
}
__fenv_static inline int
-fesetexceptflag(const fexcept_t *__flagp, int __excepts)
+__fesetexceptflag_int(const fexcept_t *__flagp, int __excepts)
{
union __fpscr __r;
@@ -152,7 +173,7 @@
}
__fenv_static inline int
-feraiseexcept(int __excepts)
+__feraiseexcept_int(int __excepts)
{
union __fpscr __r;
@@ -165,7 +186,7 @@
}
__fenv_static inline int
-fetestexcept(int __excepts)
+__fetestexcept_int(int __excepts)
{
union __fpscr __r;
@@ -174,7 +195,7 @@
}
__fenv_static inline int
-fegetround(void)
+__fegetround_int(void)
{
union __fpscr __r;
@@ -183,7 +204,7 @@
}
__fenv_static inline int
-fesetround(int __round)
+__fesetround_int(int __round)
{
union __fpscr __r;
@@ -197,7 +218,7 @@
}
__fenv_static inline int
-fegetenv(fenv_t *__envp)
+__fegetenv_int(fenv_t *__envp)
{
union __fpscr __r;
@@ -207,7 +228,7 @@
}
__fenv_static inline int
-feholdexcept(fenv_t *__envp)
+__feholdexcept_int(fenv_t *__envp)
{
union __fpscr __r;
@@ -219,7 +240,7 @@
}
__fenv_static inline int
-fesetenv(const fenv_t *__envp)
+__fesetenv_int(const fenv_t *__envp)
{
union __fpscr __r;
@@ -229,7 +250,7 @@
}
__fenv_static inline int
-feupdateenv(const fenv_t *__envp)
+__feupdateenv_int(const fenv_t *__envp)
{
union __fpscr __r;
@@ -242,8 +263,14 @@
#if __BSD_VISIBLE
+int feenableexcept(int);
+int fedisableexcept(int);
+
+#define feenableexcept(a) __feenableexcept_int(a)
+#define fedisableexcept(a) __fedisableexcept_int(a)
+
__fenv_static inline int
-feenableexcept(int __mask)
+__feenableexcept_int(int __mask)
{
union __fpscr __r;
fenv_t __oldmask;
@@ -256,7 +283,7 @@
}
__fenv_static inline int
-fedisableexcept(int __mask)
+__fedisableexcept_int(int __mask)
{
union __fpscr __r;
fenv_t __oldmask;
diff --git a/lib/msun/powerpc/fenv.c b/lib/msun/powerpc/fenv.c
--- a/lib/msun/powerpc/fenv.c
+++ b/lib/msun/powerpc/fenv.c
@@ -26,13 +26,8 @@
* SUCH DAMAGE.
*/
-#define __fenv_static
#include "fenv.h"
-#ifdef __GNUC_GNU_INLINE__
-#error "This file must be compiled with C99 'inline' semantics"
-#endif
-
const fenv_t __fe_dfl_env = 0x00000000;
int
@@ -41,15 +36,74 @@
return (__feclearexcept_int(excepts));
}
-extern inline int fegetexceptflag(fexcept_t *__flagp, int __excepts);
-extern inline int fesetexceptflag(const fexcept_t *__flagp, int __excepts);
-extern inline int feraiseexcept(int __excepts);
-extern inline int fetestexcept(int __excepts);
-extern inline int fegetround(void);
-extern inline int fesetround(int __round);
-extern inline int fegetenv(fenv_t *__envp);
-extern inline int feholdexcept(fenv_t *__envp);
-extern inline int fesetenv(const fenv_t *__envp);
-extern inline int feupdateenv(const fenv_t *__envp);
-extern inline int feenableexcept(int __mask);
-extern inline int fedisableexcept(int __mask);
+int
+(fegetexceptflag)(fexcept_t *flagp, int excepts)
+{
+ return (__fegetexceptflag_int(flagp, excepts));
+}
+
+int
+(fesetexceptflag)(const fexcept_t *flagp, int excepts)
+{
+ return (__fesetexceptflag_int(flagp, excepts));
+}
+
+int
+(feraiseexcept)(int excepts)
+{
+ return (__feraiseexcept_int(excepts));
+}
+
+int
+(fetestexcept)(int excepts)
+{
+ return (__fetestexcept_int(excepts));
+}
+
+int
+(fegetround)(void)
+{
+ return (__fegetround_int());
+}
+
+int
+(fesetround)(int round)
+{
+ return (__fesetround_int(round));
+}
+
+int
+(fegetenv)(fenv_t *envp)
+{
+ return (__fegetenv_int(envp));
+}
+
+int
+(feholdexcept)(fenv_t *envp)
+{
+ return (__feholdexcept_int(envp));
+}
+
+int
+(fesetenv)(const fenv_t *envp)
+{
+ return (__fesetenv_int(envp));
+}
+
+int
+(feupdateenv)(const fenv_t *envp)
+{
+ return (__feupdateenv_int(envp));
+}
+
+int
+(feenableexcept)(int mask)
+{
+ return (__feenableexcept_int(mask));
+}
+
+int
+(fedisableexcept)(int mask)
+{
+ return (__fedisableexcept_int(mask));
+}
diff --git a/lib/msun/riscv/fenv.h b/lib/msun/riscv/fenv.h
--- a/lib/msun/riscv/fenv.h
+++ b/lib/msun/riscv/fenv.h
@@ -80,7 +80,28 @@
#define __wfs(__fcsr) __asm __volatile("csrw fcsr, %0" :: "r" (__fcsr))
int feclearexcept(int);
+int fegetexceptflag(fexcept_t *, int);
+int fesetexceptflag(const fexcept_t *, int);
+int feraiseexcept(int);
+int fetestexcept(int);
+int fegetround(void);
+int fesetround(int);
+int fegetenv(fenv_t *);
+int feholdexcept(fenv_t *);
+int fesetenv(const fenv_t *);
+int feupdateenv(const fenv_t *);
+
#define feclearexcept(a) __feclearexcept_int(a)
+#define fegetexceptflag(e, a) __fegetexceptflag_int(e, a)
+#define fesetexceptflag(e, a) __fesetexceptflag_int(e, a)
+#define feraiseexcept(a) __feraiseexcept_int(a)
+#define fetestexcept(a) __fetestexcept_int(a)
+#define fegetround() __fegetround_int()
+#define fesetround(a) __fesetround_int(a)
+#define fegetenv(e) __fegetenv_int(e)
+#define feholdexcept(e) __feholdexcept_int(e)
+#define fesetenv(e) __fesetenv_int(e)
+#define feupdateenv(e) __feupdateenv_int(e)
__fenv_static inline int
__feclearexcept_int(int __excepts)
@@ -92,7 +113,7 @@
}
__fenv_static inline int
-fegetexceptflag(fexcept_t *__flagp, int __excepts)
+__fegetexceptflag_int(fexcept_t *__flagp, int __excepts)
{
fexcept_t __fcsr;
@@ -103,7 +124,7 @@
}
__fenv_static inline int
-fesetexceptflag(const fexcept_t *__flagp, int __excepts)
+__fesetexceptflag_int(const fexcept_t *__flagp, int __excepts)
{
fexcept_t __fcsr;
@@ -115,7 +136,7 @@
}
__fenv_static inline int
-feraiseexcept(int __excepts)
+__feraiseexcept_int(int __excepts)
{
__asm __volatile("csrs fflags, %0" :: "r"(__excepts));
@@ -124,7 +145,7 @@
}
__fenv_static inline int
-fetestexcept(int __excepts)
+__fetestexcept_int(int __excepts)
{
fexcept_t __fcsr;
@@ -134,7 +155,7 @@
}
__fenv_static inline int
-fegetround(void)
+__fegetround_int(void)
{
fexcept_t __fcsr;
@@ -144,7 +165,7 @@
}
__fenv_static inline int
-fesetround(int __round)
+__fesetround_int(int __round)
{
fexcept_t __fcsr;
@@ -160,7 +181,7 @@
}
__fenv_static inline int
-fegetenv(fenv_t *__envp)
+__fegetenv_int(fenv_t *__envp)
{
__rfs(*__envp);
@@ -169,7 +190,7 @@
}
__fenv_static inline int
-feholdexcept(fenv_t *__envp __unused)
+__feholdexcept_int(fenv_t *__envp __unused)
{
/* No exception traps. */
@@ -178,7 +199,7 @@
}
__fenv_static inline int
-fesetenv(const fenv_t *__envp)
+__fesetenv_int(const fenv_t *__envp)
{
__wfs(*__envp);
@@ -187,7 +208,7 @@
}
__fenv_static inline int
-feupdateenv(const fenv_t *__envp)
+__feupdateenv_int(const fenv_t *__envp)
{
fexcept_t __fcsr;
@@ -200,8 +221,14 @@
#if __BSD_VISIBLE
+int feenableexcept(int);
+int fedisableexcept(int);
+
+#define feenableexcept(a) __feenableexcept_int(a)
+#define fedisableexcept(a) __fedisableexcept_int(a)
+
__fenv_static inline int
-feenableexcept(int __mask __unused)
+__feenableexcept_int(int __mask __unused)
{
/* No exception traps. */
@@ -210,7 +237,7 @@
}
__fenv_static inline int
-fedisableexcept(int __mask __unused)
+__fedisableexcept_int(int __mask __unused)
{
/* No exception traps. */
diff --git a/lib/msun/riscv/fenv.c b/lib/msun/riscv/fenv.c
--- a/lib/msun/riscv/fenv.c
+++ b/lib/msun/riscv/fenv.c
@@ -24,13 +24,8 @@
* SUCH DAMAGE.
*/
-#define __fenv_static
#include "fenv.h"
-#ifdef __GNUC_GNU_INLINE__
-#error "This file must be compiled with C99 'inline' semantics"
-#endif
-
/*
* Hopefully the system ID byte is immutable, so it's valid to use
* this as a default environment.
@@ -43,16 +38,74 @@
return (__feclearexcept_int(excepts));
}
-extern inline int fegetexceptflag(fexcept_t *__flagp, int __excepts);
-extern inline int fesetexceptflag(const fexcept_t *__flagp, int __excepts);
-extern inline int feraiseexcept(int __excepts);
-extern inline int fetestexcept(int __excepts);
-extern inline int fegetround(void);
-extern inline int fesetround(int __round);
-extern inline int fegetenv(fenv_t *__envp);
-extern inline int feholdexcept(fenv_t *__envp);
-extern inline int fesetenv(const fenv_t *__envp);
-extern inline int feupdateenv(const fenv_t *__envp);
-extern inline int feenableexcept(int __mask);
-extern inline int fedisableexcept(int __mask);
-extern inline int fegetexcept(void);
+int
+(fegetexceptflag)(fexcept_t *flagp, int excepts)
+{
+ return (__fegetexceptflag_int(flagp, excepts));
+}
+
+int
+(fesetexceptflag)(const fexcept_t *flagp, int excepts)
+{
+ return (__fesetexceptflag_int(flagp, excepts));
+}
+
+int
+(feraiseexcept)(int excepts)
+{
+ return (__feraiseexcept_int(excepts));
+}
+
+int
+(fetestexcept)(int excepts)
+{
+ return (__fetestexcept_int(excepts));
+}
+
+int
+(fegetround)(void)
+{
+ return (__fegetround_int());
+}
+
+int
+(fesetround)(int round)
+{
+ return (__fesetround_int(round));
+}
+
+int
+(fegetenv)(fenv_t *envp)
+{
+ return (__fegetenv_int(envp));
+}
+
+int
+(feholdexcept)(fenv_t *envp)
+{
+ return (__feholdexcept_int(envp));
+}
+
+int
+(fesetenv)(const fenv_t *envp)
+{
+ return (__fesetenv_int(envp));
+}
+
+int
+(feupdateenv)(const fenv_t *envp)
+{
+ return (__feupdateenv_int(envp));
+}
+
+int
+(feenableexcept)(int mask)
+{
+ return (__feenableexcept_int(mask));
+}
+
+int
+(fedisableexcept)(int mask)
+{
+ return (__fedisableexcept_int(mask));
+}
diff --git a/lib/msun/x86/fenv.h b/lib/msun/x86/fenv.h
--- a/lib/msun/x86/fenv.h
+++ b/lib/msun/x86/fenv.h
@@ -108,7 +108,7 @@
int feupdateenv(const fenv_t *__envp);
__fenv_static inline int
-fegetround(void)
+__fegetround_int(void)
{
__uint16_t __control;
@@ -144,7 +144,18 @@
#endif /* __BSD_VISIBLE */
int feclearexcept(int);
+int fegetexceptflag(fexcept_t *, int);
+int fetestexcept(int);
+int fesetround(int);
+int fegetround(void);
+int fesetenv(const fenv_t *);
+
#define feclearexcept(a) __feclearexcept_int(a)
+#define fegetexceptflag(e, a) __fegetexceptflag_int(e, a)
+#define fetestexcept(a) __fetestexcept_int(a)
+#define fesetround(a) __fesetround_int(a)
+#define fegetround() __fegetround_int()
+#define fesetenv(a) __fesetenv_int(a)
#ifdef __i386__
@@ -188,7 +199,7 @@
}
__fenv_static inline int
-fegetexceptflag(fexcept_t *__flagp, int __excepts)
+__fegetexceptflag_int(fexcept_t *__flagp, int __excepts)
{
__uint32_t __mxcsr;
__uint16_t __status;
@@ -203,7 +214,7 @@
}
__fenv_static inline int
-fetestexcept(int __excepts)
+__fetestexcept_int(int __excepts)
{
__uint32_t __mxcsr;
__uint16_t __status;
@@ -217,7 +228,7 @@
}
__fenv_static inline int
-fesetround(int __round)
+__fesetround_int(int __round)
{
__uint32_t __mxcsr;
__uint16_t __control;
@@ -241,7 +252,7 @@
}
__fenv_static inline int
-fesetenv(const fenv_t *__envp)
+__fesetenv_int(const fenv_t *__envp)
{
fenv_t __env = *__envp;
__uint32_t __mxcsr;
@@ -283,7 +294,7 @@
}
__fenv_static inline int
-fegetexceptflag(fexcept_t *__flagp, int __excepts)
+__fegetexceptflag_int(fexcept_t *__flagp, int __excepts)
{
__uint32_t __mxcsr;
__uint16_t __status;
@@ -295,7 +306,7 @@
}
__fenv_static inline int
-fetestexcept(int __excepts)
+__fetestexcept_int(int __excepts)
{
__uint32_t __mxcsr;
__uint16_t __status;
@@ -306,7 +317,7 @@
}
__fenv_static inline int
-fesetround(int __round)
+__fesetround_int(int __round)
{
__uint32_t __mxcsr;
__uint16_t __control;
@@ -328,7 +339,7 @@
}
__fenv_static inline int
-fesetenv(const fenv_t *__envp)
+__fesetenv_int(const fenv_t *__envp)
{
/*

File Metadata

Mime Type
text/plain
Expires
Thu, Jul 23, 4:48 AM (18 h, 28 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35392574
Default Alt Text
D56139.id174466.diff (26 KB)

Event Timeline