summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/msun/Symbol.map10
-rw-r--r--lib/msun/amd64/Symbol.map2
-rw-r--r--lib/msun/amd64/fenv.c15
-rw-r--r--lib/msun/amd64/fenv.h19
-rw-r--r--lib/msun/arm/Symbol.map8
-rw-r--r--lib/msun/arm/fenv.c17
-rw-r--r--lib/msun/arm/fenv.h34
-rw-r--r--lib/msun/i387/Symbol.map2
-rw-r--r--lib/msun/i387/fenv.c20
-rw-r--r--lib/msun/i387/fenv.h19
-rw-r--r--lib/msun/ia64/Symbol.map7
-rw-r--r--lib/msun/ia64/fenv.c17
-rw-r--r--lib/msun/ia64/fenv.h32
-rw-r--r--lib/msun/mips/Symbol.map8
-rw-r--r--lib/msun/mips/fenv.c17
-rw-r--r--lib/msun/mips/fenv.h34
-rw-r--r--lib/msun/powerpc/Symbol.map8
-rw-r--r--lib/msun/powerpc/fenv.c17
-rw-r--r--lib/msun/powerpc/fenv.h34
-rw-r--r--lib/msun/sparc64/Symbol.map8
-rw-r--r--lib/msun/sparc64/fenv.c17
-rw-r--r--lib/msun/sparc64/fenv.h34
22 files changed, 288 insertions, 91 deletions
diff --git a/lib/msun/Symbol.map b/lib/msun/Symbol.map
index bb53ac3..cd823ae 100644
--- a/lib/msun/Symbol.map
+++ b/lib/msun/Symbol.map
@@ -228,3 +228,13 @@ FBSD_1.2 {
log2;
log2f;
};
+
+/* First added in 10.0-CURRENT */
+FBSD_1.3 {
+ feclearexcept;
+ fegetexceptflag;
+ fetestexcept;
+ fegetround;
+ fesetround;
+ fesetenv;
+};
diff --git a/lib/msun/amd64/Symbol.map b/lib/msun/amd64/Symbol.map
index f4c13a4..3da32ff 100644
--- a/lib/msun/amd64/Symbol.map
+++ b/lib/msun/amd64/Symbol.map
@@ -7,8 +7,6 @@ FBSD_1.0 {
fegetenv;
feholdexcept;
feupdateenv;
- __feenableexcept;
- __fedisableexcept;
feenableexcept;
fedisableexcept;
};
diff --git a/lib/msun/amd64/fenv.c b/lib/msun/amd64/fenv.c
index e126070..c543bd5 100644
--- a/lib/msun/amd64/fenv.c
+++ b/lib/msun/amd64/fenv.c
@@ -29,8 +29,14 @@
#include <sys/cdefs.h>
#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,
@@ -41,6 +47,9 @@ const fenv_t __fe_dfl_env = {
__INITIAL_MXCSR__
};
+extern inline int feclearexcept(int __excepts);
+extern inline int fegetexceptflag(fexcept_t *__flagp, int __excepts);
+
int
fesetexceptflag(const fexcept_t *flagp, int excepts)
{
@@ -69,6 +78,10 @@ feraiseexcept(int excepts)
return (0);
}
+extern inline int fetestexcept(int __excepts);
+extern inline int fegetround(void);
+extern inline int fesetround(int __round);
+
int
fegetenv(fenv_t *envp)
{
@@ -98,6 +111,8 @@ feholdexcept(fenv_t *envp)
return (0);
}
+extern inline int fesetenv(const fenv_t *__envp);
+
int
feupdateenv(const fenv_t *envp)
{
diff --git a/lib/msun/amd64/fenv.h b/lib/msun/amd64/fenv.h
index 875664a..b7c9873 100644
--- a/lib/msun/amd64/fenv.h
+++ b/lib/msun/amd64/fenv.h
@@ -32,6 +32,10 @@
#include <sys/cdefs.h>
#include <sys/_types.h>
+#ifndef __fenv_static
+#define __fenv_static static
+#endif
+
typedef struct {
struct {
__uint32_t __control;
@@ -89,7 +93,7 @@ extern const fenv_t __fe_dfl_env;
#define __ldmxcsr(__csr) __asm __volatile("ldmxcsr %0" : : "m" (__csr))
#define __stmxcsr(__csr) __asm __volatile("stmxcsr %0" : "=m" (*(__csr)))
-static __inline int
+__fenv_static inline int
feclearexcept(int __excepts)
{
fenv_t __env;
@@ -107,7 +111,7 @@ feclearexcept(int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
fegetexceptflag(fexcept_t *__flagp, int __excepts)
{
__uint32_t __mxcsr;
@@ -122,7 +126,7 @@ fegetexceptflag(fexcept_t *__flagp, int __excepts)
int fesetexceptflag(const fexcept_t *__flagp, int __excepts);
int feraiseexcept(int __excepts);
-static __inline int
+__fenv_static inline int
fetestexcept(int __excepts)
{
__uint32_t __mxcsr;
@@ -133,7 +137,7 @@ fetestexcept(int __excepts)
return ((__status | __mxcsr) & __excepts);
}
-static __inline int
+__fenv_static inline int
fegetround(void)
{
__uint16_t __control;
@@ -148,7 +152,7 @@ fegetround(void)
return (__control & _ROUND_MASK);
}
-static __inline int
+__fenv_static inline int
fesetround(int __round)
{
__uint32_t __mxcsr;
@@ -173,7 +177,7 @@ fesetround(int __round)
int fegetenv(fenv_t *__envp);
int feholdexcept(fenv_t *__envp);
-static __inline int
+__fenv_static inline int
fesetenv(const fenv_t *__envp)
{
@@ -197,7 +201,8 @@ int feupdateenv(const fenv_t *__envp);
int feenableexcept(int __mask);
int fedisableexcept(int __mask);
-static __inline int
+/* We currently provide no external definition of fegetexcept(). */
+static inline int
fegetexcept(void)
{
__uint16_t __control;
diff --git a/lib/msun/arm/Symbol.map b/lib/msun/arm/Symbol.map
index 3121177..971112e 100644
--- a/lib/msun/arm/Symbol.map
+++ b/lib/msun/arm/Symbol.map
@@ -3,3 +3,11 @@
*/
FBSD_1.0 {
};
+
+FBSD_1.3 {
+ fesetexceptflag;
+ feraiseexcept;
+ fegetenv;
+ feholdexcept;
+ feupdateenv;
+};
diff --git a/lib/msun/arm/fenv.c b/lib/msun/arm/fenv.c
index a6781e0..f96bb64 100644
--- a/lib/msun/arm/fenv.c
+++ b/lib/msun/arm/fenv.c
@@ -26,10 +26,27 @@
* $FreeBSD$
*/
+#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.
*/
const fenv_t __fe_dfl_env = 0;
+
+extern inline int 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);
diff --git a/lib/msun/arm/fenv.h b/lib/msun/arm/fenv.h
index d540ae2..f114998 100644
--- a/lib/msun/arm/fenv.h
+++ b/lib/msun/arm/fenv.h
@@ -31,6 +31,10 @@
#include <sys/_types.h>
+#ifndef __fenv_static
+#define __fenv_static static
+#endif
+
typedef __uint32_t fenv_t;
typedef __uint32_t fexcept_t;
@@ -68,7 +72,7 @@ extern const fenv_t __fe_dfl_env;
#define __wfs(__fpsr)
#endif
-static __inline int
+__fenv_static inline int
feclearexcept(int __excepts)
{
fexcept_t __fpsr;
@@ -79,7 +83,7 @@ feclearexcept(int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
fegetexceptflag(fexcept_t *__flagp, int __excepts)
{
fexcept_t __fpsr;
@@ -89,7 +93,7 @@ fegetexceptflag(fexcept_t *__flagp, int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
fesetexceptflag(const fexcept_t *__flagp, int __excepts)
{
fexcept_t __fpsr;
@@ -101,7 +105,7 @@ fesetexceptflag(const fexcept_t *__flagp, int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
feraiseexcept(int __excepts)
{
fexcept_t __ex = __excepts;
@@ -110,7 +114,7 @@ feraiseexcept(int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
fetestexcept(int __excepts)
{
fexcept_t __fpsr;
@@ -119,7 +123,7 @@ fetestexcept(int __excepts)
return (__fpsr & __excepts);
}
-static __inline int
+__fenv_static inline int
fegetround(void)
{
@@ -131,14 +135,14 @@ fegetround(void)
return (-1);
}
-static __inline int
+__fenv_static inline int
fesetround(int __round)
{
return (-1);
}
-static __inline int
+__fenv_static inline int
fegetenv(fenv_t *__envp)
{
@@ -146,7 +150,7 @@ fegetenv(fenv_t *__envp)
return (0);
}
-static __inline int
+__fenv_static inline int
feholdexcept(fenv_t *__envp)
{
fenv_t __env;
@@ -158,7 +162,7 @@ feholdexcept(fenv_t *__envp)
return (0);
}
-static __inline int
+__fenv_static inline int
fesetenv(const fenv_t *__envp)
{
@@ -166,7 +170,7 @@ fesetenv(const fenv_t *__envp)
return (0);
}
-static __inline int
+__fenv_static inline int
feupdateenv(const fenv_t *__envp)
{
fexcept_t __fpsr;
@@ -179,7 +183,9 @@ feupdateenv(const fenv_t *__envp)
#if __BSD_VISIBLE
-static __inline int
+/* We currently provide no external definitions of the functions below. */
+
+static inline int
feenableexcept(int __mask)
{
fenv_t __old_fpsr, __new_fpsr;
@@ -190,7 +196,7 @@ feenableexcept(int __mask)
return ((__old_fpsr >> _FPUSW_SHIFT) & FE_ALL_EXCEPT);
}
-static __inline int
+static inline int
fedisableexcept(int __mask)
{
fenv_t __old_fpsr, __new_fpsr;
@@ -201,7 +207,7 @@ fedisableexcept(int __mask)
return ((__old_fpsr >> _FPUSW_SHIFT) & FE_ALL_EXCEPT);
}
-static __inline int
+static inline int
fegetexcept(void)
{
fenv_t __fpsr;
diff --git a/lib/msun/i387/Symbol.map b/lib/msun/i387/Symbol.map
index aa81690..35e6e18 100644
--- a/lib/msun/i387/Symbol.map
+++ b/lib/msun/i387/Symbol.map
@@ -9,8 +9,6 @@ FBSD_1.0 {
fegetenv;
feholdexcept;
feupdateenv;
- __feenableexcept;
- __fedisableexcept;
feenableexcept;
fedisableexcept;
};
diff --git a/lib/msun/i387/fenv.c b/lib/msun/i387/fenv.c
index 5c996b3..326f7f7 100644
--- a/lib/msun/i387/fenv.c
+++ b/lib/msun/i387/fenv.c
@@ -29,7 +29,13 @@
#include <sys/cdefs.h>
#include <sys/types.h>
#include <machine/npx.h>
-#include "fenv.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__,
@@ -83,6 +89,9 @@ __test_sse(void)
return (0);
}
+extern inline int feclearexcept(int __excepts);
+extern inline int fegetexceptflag(fexcept_t *__flagp, int __excepts);
+
int
fesetexceptflag(const fexcept_t *flagp, int excepts)
{
@@ -114,6 +123,10 @@ feraiseexcept(int excepts)
return (0);
}
+extern inline int fetestexcept(int __excepts);
+extern inline int fegetround(void);
+extern inline int fesetround(int __round);
+
int
fegetenv(fenv_t *envp)
{
@@ -149,6 +162,8 @@ feholdexcept(fenv_t *envp)
return (0);
}
+extern inline int fesetenv(const fenv_t *__envp);
+
int
feupdateenv(const fenv_t *envp)
{
@@ -208,6 +223,3 @@ __fedisableexcept(int mask)
}
return (~omask);
}
-
-__weak_reference(__feenableexcept, feenableexcept);
-__weak_reference(__fedisableexcept, fedisableexcept);
diff --git a/lib/msun/i387/fenv.h b/lib/msun/i387/fenv.h
index cc58a92..329dfe1 100644
--- a/lib/msun/i387/fenv.h
+++ b/lib/msun/i387/fenv.h
@@ -32,6 +32,10 @@
#include <sys/cdefs.h>
#include <sys/_types.h>
+#ifndef __fenv_static
+#define __fenv_static static
+#endif
+
/*
* To preserve binary compatibility with FreeBSD 5.3, we pack the
* mxcsr into some reserved fields, rather than changing sizeof(fenv_t).
@@ -110,7 +114,7 @@ extern const fenv_t __fe_dfl_env;
#define __ldmxcsr(__csr) __asm __volatile("ldmxcsr %0" : : "m" (__csr))
#define __stmxcsr(__csr) __asm __volatile("stmxcsr %0" : "=m" (*(__csr)))
-static __inline int
+__fenv_static inline int
feclearexcept(int __excepts)
{
fenv_t __env;
@@ -131,7 +135,7 @@ feclearexcept(int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
fegetexceptflag(fexcept_t *__flagp, int __excepts)
{
__uint32_t __mxcsr;
@@ -149,7 +153,7 @@ fegetexceptflag(fexcept_t *__flagp, int __excepts)
int fesetexceptflag(const fexcept_t *__flagp, int __excepts);
int feraiseexcept(int __excepts);
-static __inline int
+__fenv_static inline int
fetestexcept(int __excepts)
{
__uint32_t __mxcsr;
@@ -163,7 +167,7 @@ fetestexcept(int __excepts)
return ((__status | __mxcsr) & __excepts);
}
-static __inline int
+__fenv_static inline int
fegetround(void)
{
__uint16_t __control;
@@ -178,7 +182,7 @@ fegetround(void)
return (__control & _ROUND_MASK);
}
-static __inline int
+__fenv_static inline int
fesetround(int __round)
{
__uint32_t __mxcsr;
@@ -205,7 +209,7 @@ fesetround(int __round)
int fegetenv(fenv_t *__envp);
int feholdexcept(fenv_t *__envp);
-static __inline int
+__fenv_static inline int
fesetenv(const fenv_t *__envp)
{
fenv_t __env = *__envp;
@@ -234,7 +238,8 @@ int feupdateenv(const fenv_t *__envp);
int feenableexcept(int __mask);
int fedisableexcept(int __mask);
-static __inline int
+/* We currently provide no external definition of fegetexcept(). */
+static inline int
fegetexcept(void)
{
__uint16_t __control;
diff --git a/lib/msun/ia64/Symbol.map b/lib/msun/ia64/Symbol.map
index 00ed4ee..c92e75d 100644
--- a/lib/msun/ia64/Symbol.map
+++ b/lib/msun/ia64/Symbol.map
@@ -4,3 +4,10 @@
FBSD_1.0 {
feupdateenv;
};
+
+FBSD_1.3 {
+ fesetexceptflag;
+ feraiseexcept;
+ fegetenv;
+ feholdexcept;
+};
diff --git a/lib/msun/ia64/fenv.c b/lib/msun/ia64/fenv.c
index 95a5809..9e760da 100644
--- a/lib/msun/ia64/fenv.c
+++ b/lib/msun/ia64/fenv.c
@@ -27,10 +27,27 @@
*/
#include <sys/types.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 = 0x0009804c8a70033fULL;
+extern inline int 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);
+
/*
* It doesn't pay to inline feupdateenv() because it includes one of
* the rare uses of feraiseexcept() where the argument is not a
diff --git a/lib/msun/ia64/fenv.h b/lib/msun/ia64/fenv.h
index 6f0240f..0f001db 100644
--- a/lib/msun/ia64/fenv.h
+++ b/lib/msun/ia64/fenv.h
@@ -31,6 +31,10 @@
#include <sys/_types.h>
+#ifndef __fenv_static
+#define __fenv_static static
+#endif
+
typedef __uint64_t fenv_t;
typedef __uint16_t fexcept_t;
@@ -63,7 +67,7 @@ extern const fenv_t __fe_dfl_env;
#define __stfpsr(__r) __asm __volatile("mov %0=ar.fpsr" : "=r" (*(__r)))
#define __ldfpsr(__r) __asm __volatile("mov ar.fpsr=%0;;" : : "r" (__r))
-static __inline int
+__fenv_static inline int
feclearexcept(int __excepts)
{
fenv_t __fpsr;
@@ -74,7 +78,7 @@ feclearexcept(int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
fegetexceptflag(fexcept_t *__flagp, int __excepts)
{
fenv_t __fpsr;
@@ -84,7 +88,7 @@ fegetexceptflag(fexcept_t *__flagp, int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
fesetexceptflag(const fexcept_t *__flagp, int __excepts)
{
fenv_t __fpsr;
@@ -103,7 +107,7 @@ fesetexceptflag(const fexcept_t *__flagp, int __excepts)
* figure this out automatically, and there's no way to tell it.
* We assume that constant arguments will be the common case.
*/
-static __inline int
+__fenv_static inline int
feraiseexcept(int __excepts)
{
volatile double d;
@@ -138,7 +142,7 @@ feraiseexcept(int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
fetestexcept(int __excepts)
{
fenv_t __fpsr;
@@ -148,7 +152,7 @@ fetestexcept(int __excepts)
}
-static __inline int
+__fenv_static inline int
fegetround(void)
{
fenv_t __fpsr;
@@ -157,7 +161,7 @@ fegetround(void)
return (__fpsr & _ROUND_MASK);
}
-static __inline int
+__fenv_static inline int
fesetround(int __round)
{
fenv_t __fpsr;
@@ -171,7 +175,7 @@ fesetround(int __round)
return (0);
}
-static __inline int
+__fenv_static inline int
fegetenv(fenv_t *__envp)
{
@@ -179,7 +183,7 @@ fegetenv(fenv_t *__envp)
return (0);
}
-static __inline int
+__fenv_static inline int
feholdexcept(fenv_t *__envp)
{
fenv_t __fpsr;
@@ -192,7 +196,7 @@ feholdexcept(fenv_t *__envp)
return (0);
}
-static __inline int
+__fenv_static inline int
fesetenv(const fenv_t *__envp)
{
@@ -204,7 +208,9 @@ int feupdateenv(const fenv_t *__envp);
#if __BSD_VISIBLE
-static __inline int
+/* We currently provide no external definitions of the functions below. */
+
+static inline int
feenableexcept(int __mask)
{
fenv_t __newfpsr, __oldfpsr;
@@ -215,7 +221,7 @@ feenableexcept(int __mask)
return (~__oldfpsr & FE_ALL_EXCEPT);
}
-static __inline int
+static inline int
fedisableexcept(int __mask)
{
fenv_t __newfpsr, __oldfpsr;
@@ -226,7 +232,7 @@ fedisableexcept(int __mask)
return (~__oldfpsr & FE_ALL_EXCEPT);
}
-static __inline int
+static inline int
fegetexcept(void)
{
fenv_t __fpsr;
diff --git a/lib/msun/mips/Symbol.map b/lib/msun/mips/Symbol.map
index 3121177..971112e 100644
--- a/lib/msun/mips/Symbol.map
+++ b/lib/msun/mips/Symbol.map
@@ -3,3 +3,11 @@
*/
FBSD_1.0 {
};
+
+FBSD_1.3 {
+ fesetexceptflag;
+ feraiseexcept;
+ fegetenv;
+ feholdexcept;
+ feupdateenv;
+};
diff --git a/lib/msun/mips/fenv.c b/lib/msun/mips/fenv.c
index a6781e0..f96bb64 100644
--- a/lib/msun/mips/fenv.c
+++ b/lib/msun/mips/fenv.c
@@ -26,10 +26,27 @@
* $FreeBSD$
*/
+#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.
*/
const fenv_t __fe_dfl_env = 0;
+
+extern inline int 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);
diff --git a/lib/msun/mips/fenv.h b/lib/msun/mips/fenv.h
index d540ae2..f114998 100644
--- a/lib/msun/mips/fenv.h
+++ b/lib/msun/mips/fenv.h
@@ -31,6 +31,10 @@
#include <sys/_types.h>
+#ifndef __fenv_static
+#define __fenv_static static
+#endif
+
typedef __uint32_t fenv_t;
typedef __uint32_t fexcept_t;
@@ -68,7 +72,7 @@ extern const fenv_t __fe_dfl_env;
#define __wfs(__fpsr)
#endif
-static __inline int
+__fenv_static inline int
feclearexcept(int __excepts)
{
fexcept_t __fpsr;
@@ -79,7 +83,7 @@ feclearexcept(int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
fegetexceptflag(fexcept_t *__flagp, int __excepts)
{
fexcept_t __fpsr;
@@ -89,7 +93,7 @@ fegetexceptflag(fexcept_t *__flagp, int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
fesetexceptflag(const fexcept_t *__flagp, int __excepts)
{
fexcept_t __fpsr;
@@ -101,7 +105,7 @@ fesetexceptflag(const fexcept_t *__flagp, int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
feraiseexcept(int __excepts)
{
fexcept_t __ex = __excepts;
@@ -110,7 +114,7 @@ feraiseexcept(int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
fetestexcept(int __excepts)
{
fexcept_t __fpsr;
@@ -119,7 +123,7 @@ fetestexcept(int __excepts)
return (__fpsr & __excepts);
}
-static __inline int
+__fenv_static inline int
fegetround(void)
{
@@ -131,14 +135,14 @@ fegetround(void)
return (-1);
}
-static __inline int
+__fenv_static inline int
fesetround(int __round)
{
return (-1);
}
-static __inline int
+__fenv_static inline int
fegetenv(fenv_t *__envp)
{
@@ -146,7 +150,7 @@ fegetenv(fenv_t *__envp)
return (0);
}
-static __inline int
+__fenv_static inline int
feholdexcept(fenv_t *__envp)
{
fenv_t __env;
@@ -158,7 +162,7 @@ feholdexcept(fenv_t *__envp)
return (0);
}
-static __inline int
+__fenv_static inline int
fesetenv(const fenv_t *__envp)
{
@@ -166,7 +170,7 @@ fesetenv(const fenv_t *__envp)
return (0);
}
-static __inline int
+__fenv_static inline int
feupdateenv(const fenv_t *__envp)
{
fexcept_t __fpsr;
@@ -179,7 +183,9 @@ feupdateenv(const fenv_t *__envp)
#if __BSD_VISIBLE
-static __inline int
+/* We currently provide no external definitions of the functions below. */
+
+static inline int
feenableexcept(int __mask)
{
fenv_t __old_fpsr, __new_fpsr;
@@ -190,7 +196,7 @@ feenableexcept(int __mask)
return ((__old_fpsr >> _FPUSW_SHIFT) & FE_ALL_EXCEPT);
}
-static __inline int
+static inline int
fedisableexcept(int __mask)
{
fenv_t __old_fpsr, __new_fpsr;
@@ -201,7 +207,7 @@ fedisableexcept(int __mask)
return ((__old_fpsr >> _FPUSW_SHIFT) & FE_ALL_EXCEPT);
}
-static __inline int
+static inline int
fegetexcept(void)
{
fenv_t __fpsr;
diff --git a/lib/msun/powerpc/Symbol.map b/lib/msun/powerpc/Symbol.map
index 3121177..971112e 100644
--- a/lib/msun/powerpc/Symbol.map
+++ b/lib/msun/powerpc/Symbol.map
@@ -3,3 +3,11 @@
*/
FBSD_1.0 {
};
+
+FBSD_1.3 {
+ fesetexceptflag;
+ feraiseexcept;
+ fegetenv;
+ feholdexcept;
+ feupdateenv;
+};
diff --git a/lib/msun/powerpc/fenv.c b/lib/msun/powerpc/fenv.c
index 04bbeaf..9191a48 100644
--- a/lib/msun/powerpc/fenv.c
+++ b/lib/msun/powerpc/fenv.c
@@ -26,6 +26,23 @@
* $FreeBSD$
*/
+#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;
+
+extern inline int 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);
diff --git a/lib/msun/powerpc/fenv.h b/lib/msun/powerpc/fenv.h
index c29f8a0..b96fdee 100644
--- a/lib/msun/powerpc/fenv.h
+++ b/lib/msun/powerpc/fenv.h
@@ -31,6 +31,10 @@
#include <sys/_types.h>
+#ifndef __fenv_static
+#define __fenv_static static
+#endif
+
typedef __uint32_t fenv_t;
typedef __uint32_t fexcept_t;
@@ -98,7 +102,7 @@ union __fpscr {
} __bits;
};
-static __inline int
+__fenv_static inline int
feclearexcept(int __excepts)
{
union __fpscr __r;
@@ -111,7 +115,7 @@ feclearexcept(int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
fegetexceptflag(fexcept_t *__flagp, int __excepts)
{
union __fpscr __r;
@@ -121,7 +125,7 @@ fegetexceptflag(fexcept_t *__flagp, int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
fesetexceptflag(const fexcept_t *__flagp, int __excepts)
{
union __fpscr __r;
@@ -135,7 +139,7 @@ fesetexceptflag(const fexcept_t *__flagp, int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
feraiseexcept(int __excepts)
{
union __fpscr __r;
@@ -148,7 +152,7 @@ feraiseexcept(int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
fetestexcept(int __excepts)
{
union __fpscr __r;
@@ -157,7 +161,7 @@ fetestexcept(int __excepts)
return (__r.__bits.__reg & __excepts);
}
-static __inline int
+__fenv_static inline int
fegetround(void)
{
union __fpscr __r;
@@ -166,7 +170,7 @@ fegetround(void)
return (__r.__bits.__reg & _ROUND_MASK);
}
-static __inline int
+__fenv_static inline int
fesetround(int __round)
{
union __fpscr __r;
@@ -180,7 +184,7 @@ fesetround(int __round)
return (0);
}
-static __inline int
+__fenv_static inline int
fegetenv(fenv_t *__envp)
{
union __fpscr __r;
@@ -190,7 +194,7 @@ fegetenv(fenv_t *__envp)
return (0);
}
-static __inline int
+__fenv_static inline int
feholdexcept(fenv_t *__envp)
{
union __fpscr __r;
@@ -202,7 +206,7 @@ feholdexcept(fenv_t *__envp)
return (0);
}
-static __inline int
+__fenv_static inline int
fesetenv(const fenv_t *__envp)
{
union __fpscr __r;
@@ -212,7 +216,7 @@ fesetenv(const fenv_t *__envp)
return (0);
}
-static __inline int
+__fenv_static inline int
feupdateenv(const fenv_t *__envp)
{
union __fpscr __r;
@@ -226,7 +230,9 @@ feupdateenv(const fenv_t *__envp)
#if __BSD_VISIBLE
-static __inline int
+/* We currently provide no external definitions of the functions below. */
+
+static inline int
feenableexcept(int __mask)
{
union __fpscr __r;
@@ -239,7 +245,7 @@ feenableexcept(int __mask)
return ((__oldmask & _ENABLE_MASK) << _FPUSW_SHIFT);
}
-static __inline int
+static inline int
fedisableexcept(int __mask)
{
union __fpscr __r;
@@ -252,7 +258,7 @@ fedisableexcept(int __mask)
return ((__oldmask & _ENABLE_MASK) << _FPUSW_SHIFT);
}
-static __inline int
+static inline int
fegetexcept(void)
{
union __fpscr __r;
diff --git a/lib/msun/sparc64/Symbol.map b/lib/msun/sparc64/Symbol.map
index 3121177..971112e 100644
--- a/lib/msun/sparc64/Symbol.map
+++ b/lib/msun/sparc64/Symbol.map
@@ -3,3 +3,11 @@
*/
FBSD_1.0 {
};
+
+FBSD_1.3 {
+ fesetexceptflag;
+ feraiseexcept;
+ fegetenv;
+ feholdexcept;
+ feupdateenv;
+};
diff --git a/lib/msun/sparc64/fenv.c b/lib/msun/sparc64/fenv.c
index 6e8220f..a1db64e 100644
--- a/lib/msun/sparc64/fenv.c
+++ b/lib/msun/sparc64/fenv.c
@@ -26,11 +26,28 @@
* $FreeBSD$
*/
+#define __fenv_static
#include <fenv.h>
+#ifdef __GNUC_GNU_INLINE__
+#error "This file must be compiled with C99 'inline' semantics"
+#endif
+
/*
* The FSR_version field may be different on different
* implementations, but it is immutable and opaque to the
* application. Thus, 0 is valid as the default environment.
*/
const fenv_t __fe_dfl_env = 0;
+
+extern inline int 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);
diff --git a/lib/msun/sparc64/fenv.h b/lib/msun/sparc64/fenv.h
index 8273299..d17361f 100644
--- a/lib/msun/sparc64/fenv.h
+++ b/lib/msun/sparc64/fenv.h
@@ -31,6 +31,10 @@
#include <sys/_types.h>
+#ifndef __fenv_static
+#define __fenv_static static
+#endif
+
typedef __uint64_t fenv_t;
typedef __uint64_t fexcept_t;
@@ -70,7 +74,7 @@ extern const fenv_t __fe_dfl_env;
#define __ldxfsr(__r) __asm __volatile("ldx %0, %%fsr" : : "m" (__r))
#define __stxfsr(__r) __asm __volatile("stx %%fsr, %0" : "=m" (*(__r)))
-static __inline int
+__fenv_static __inline int
feclearexcept(int __excepts)
{
fexcept_t __r;
@@ -81,7 +85,7 @@ feclearexcept(int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
fegetexceptflag(fexcept_t *__flagp, int __excepts)
{
fexcept_t __r;
@@ -91,7 +95,7 @@ fegetexceptflag(fexcept_t *__flagp, int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
fesetexceptflag(const fexcept_t *__flagp, int __excepts)
{
fexcept_t __r;
@@ -108,7 +112,7 @@ fesetexceptflag(const fexcept_t *__flagp, int __excepts)
* inline this function on sparc64 even when the arguments are not
* compile-time constants. Perhaps this depends on the register window.
*/
-static __inline int
+__fenv_static inline int
feraiseexcept(int __excepts)
{
volatile double d;
@@ -143,7 +147,7 @@ feraiseexcept(int __excepts)
return (0);
}
-static __inline int
+__fenv_static inline int
fetestexcept(int __excepts)
{
fexcept_t __r;
@@ -152,7 +156,7 @@ fetestexcept(int __excepts)
return (__r & __excepts);
}
-static __inline int
+__fenv_static inline int
fegetround(void)
{
fenv_t __r;
@@ -161,7 +165,7 @@ fegetround(void)
return ((__r >> _ROUND_SHIFT) & _ROUND_MASK);
}
-static __inline int
+__fenv_static inline int
fesetround(int __round)
{
fenv_t __r;
@@ -175,7 +179,7 @@ fesetround(int __round)
return (0);
}
-static __inline int
+__fenv_static inline int
fegetenv(fenv_t *__envp)
{
@@ -183,7 +187,7 @@ fegetenv(fenv_t *__envp)
return (0);
}
-static __inline int
+__fenv_static inline int
feholdexcept(fenv_t *__envp)
{
fenv_t __r;
@@ -195,7 +199,7 @@ feholdexcept(fenv_t *__envp)
return (0);
}
-static __inline int
+__fenv_static inline int
fesetenv(const fenv_t *__envp)
{
@@ -203,7 +207,7 @@ fesetenv(const fenv_t *__envp)
return (0);
}
-static __inline int
+__fenv_static inline int
feupdateenv(const fenv_t *__envp)
{
fexcept_t __r;
@@ -216,7 +220,9 @@ feupdateenv(const fenv_t *__envp)
#if __BSD_VISIBLE
-static __inline int
+/* We currently provide no external definitions of the functions below. */
+
+static inline int
feenableexcept(int __mask)
{
fenv_t __old_r, __new_r;
@@ -227,7 +233,7 @@ feenableexcept(int __mask)
return ((__old_r >> _FPUSW_SHIFT) & FE_ALL_EXCEPT);
}
-static __inline int
+static inline int
fedisableexcept(int __mask)
{
fenv_t __old_r, __new_r;
@@ -238,7 +244,7 @@ fedisableexcept(int __mask)
return ((__old_r >> _FPUSW_SHIFT) & FE_ALL_EXCEPT);
}
-static __inline int
+static inline int
fegetexcept(void)
{
fenv_t __r;
OpenPOWER on IntegriCloud