these are not public interfaces and do not match the public function, but delegate argument checking to it.
@@ -6,6 +6,7 @@ fegetround:
ret
.global __fesetround
+.hidden __fesetround
.type __fesetround,%function
__fesetround:
mrs x1, fpcr
@@ -11,6 +11,7 @@ fegetround:
bx lr
fmrx r3, fpscr
@@ -1,8 +1,9 @@
#include <fenv.h>
+#include "libc.h"
/* __fesetround wrapper for arch independent argument check */
-int __fesetround(int);
+hidden int __fesetround(int);
int fesetround(int r)
{
@@ -61,6 +61,7 @@ feraiseexcept:
.type __fesetround,@function
mov 4(%esp),%ecx
@@ -1,4 +1,5 @@
#if __HAVE_68881__ || __mcffpu__
@@ -50,7 +51,7 @@ int fegetround(void)
return getcr() & FE_UPWARD;
}
-int __fesetround(int r)
+hidden int __fesetround(int r)
setcr((getcr() & ~FE_UPWARD) | r);
return 0;
@@ -39,6 +39,7 @@ fegetround:
andi $2, $2, 3
cfc1 $5, $31
@@ -38,6 +38,7 @@ fegetround:
@@ -79,6 +79,7 @@ fegetround:
blr
/*
@@ -1,5 +1,6 @@
#define _GNU_SOURCE
static inline double get_fpscr_f(void)
@@ -49,7 +50,7 @@ int fegetround(void)
return get_fpscr() & 3;
set_fpscr(get_fpscr() & ~3L | r);
static inline unsigned get_fpc(void)
@@ -36,7 +37,7 @@ int fegetround(void)
return get_fpc() & 3;
set_fpc(get_fpc() & ~3L | r);
@@ -8,6 +8,7 @@ fegetround:
and #3, r0
.type __fesetround, @function
sts fpscr, r0
@@ -30,6 +30,7 @@ feraiseexcept:
push %rax