aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/powerpc/fegetround.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/powerpc/fegetround.c')
-rw-r--r--sysdeps/powerpc/fegetround.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/sysdeps/powerpc/fegetround.c b/sysdeps/powerpc/fegetround.c
index 05395f0797..3bb9fb49e0 100644
--- a/sysdeps/powerpc/fegetround.c
+++ b/sysdeps/powerpc/fegetround.c
@@ -19,13 +19,11 @@
#include <fenv_libc.h>
+#undef fegetround
int
fegetround (void)
{
- fenv_union_t u;
-
- u.fenv = fegetenv_register ();
-
- /* The rounding mode is bits 30 and 31 of the FPSCR. */
- return u.l[1] & 3;
+ int result;
+ asm ("mcrfs 7,7 ; mfcr %0" : "=r"(result) : : "cr7"); \
+ return result & 3;
}