Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F163331655
D56139.id174466.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
26 KB
Referenced Files
None
Subscribers
None
D56139.id174466.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D56139: msun: provide external linkage for all fenv.h functions
Attached
Detach File
Event Timeline
Log In to Comment