msun/powerpc: convert fenv functions to proper linkage

namely
	fegetexceptflag(3)
	fesetexceptflag(3)
	feraiseexcept(3)
	fetestexcept(3)
	fegetround(3)
	fesetround(3)
	fegetenv(3)
	feholdexcept(3)
	fesetenv(3)
	feupdateenv(3)
	feenableexcept(3)
	fedisableexcept(3)
	fegetexcept(3)

PR:     277958
Reviewed by:	dim
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:	https://reviews.freebsd.org/D56139
This commit is contained in:
Konstantin Belousov
2026-03-29 05:06:02 +03:00
parent 6b89f5360f
commit e4505a58a7
2 changed files with 110 additions and 24 deletions
+71 -12
View File
@@ -41,15 +41,74 @@ int
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));
}
+39 -12
View File
@@ -112,7 +112,28 @@ union __fpscr {
};
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 @@ __feclearexcept_int(int __excepts)
}
__fenv_static inline int
fegetexceptflag(fexcept_t *__flagp, int __excepts)
__fegetexceptflag_int(fexcept_t *__flagp, int __excepts)
{
union __fpscr __r;
@@ -138,7 +159,7 @@ fegetexceptflag(fexcept_t *__flagp, int __excepts)
}
__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 @@ fesetexceptflag(const fexcept_t *__flagp, int __excepts)
}
__fenv_static inline int
feraiseexcept(int __excepts)
__feraiseexcept_int(int __excepts)
{
union __fpscr __r;
@@ -165,7 +186,7 @@ feraiseexcept(int __excepts)
}
__fenv_static inline int
fetestexcept(int __excepts)
__fetestexcept_int(int __excepts)
{
union __fpscr __r;
@@ -174,7 +195,7 @@ fetestexcept(int __excepts)
}
__fenv_static inline int
fegetround(void)
__fegetround_int(void)
{
union __fpscr __r;
@@ -183,7 +204,7 @@ fegetround(void)
}
__fenv_static inline int
fesetround(int __round)
__fesetround_int(int __round)
{
union __fpscr __r;
@@ -197,7 +218,7 @@ fesetround(int __round)
}
__fenv_static inline int
fegetenv(fenv_t *__envp)
__fegetenv_int(fenv_t *__envp)
{
union __fpscr __r;
@@ -207,7 +228,7 @@ fegetenv(fenv_t *__envp)
}
__fenv_static inline int
feholdexcept(fenv_t *__envp)
__feholdexcept_int(fenv_t *__envp)
{
union __fpscr __r;
@@ -219,7 +240,7 @@ feholdexcept(fenv_t *__envp)
}
__fenv_static inline int
fesetenv(const fenv_t *__envp)
__fesetenv_int(const fenv_t *__envp)
{
union __fpscr __r;
@@ -229,7 +250,7 @@ fesetenv(const fenv_t *__envp)
}
__fenv_static inline int
feupdateenv(const fenv_t *__envp)
__feupdateenv_int(const fenv_t *__envp)
{
union __fpscr __r;
@@ -242,8 +263,14 @@ feupdateenv(const fenv_t *__envp)
#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 @@ feenableexcept(int __mask)
}
__fenv_static inline int
fedisableexcept(int __mask)
__fedisableexcept_int(int __mask)
{
union __fpscr __r;
fenv_t __oldmask;