about summary refs log tree commit diff
diff options
context:
space:
mode:
authorStafford Horne <shorne@gmail.com>2024-03-19 20:53:37 +0000
committerStafford Horne <shorne@gmail.com>2024-03-22 15:43:34 +0000
commitdf7e29e2a4aadc7e19669eaf953cee1bcf8b156f (patch)
tree3b0b645737f4343ac9ed0a29f561297b15624552
parent2e982a3937f20156a72a59560061dda006d3480b (diff)
downloadglibc-df7e29e2a4aadc7e19669eaf953cee1bcf8b156f.tar.gz
glibc-df7e29e2a4aadc7e19669eaf953cee1bcf8b156f.tar.xz
glibc-df7e29e2a4aadc7e19669eaf953cee1bcf8b156f.zip
or1k: Only define fpu rouding and exceptions with hard-float
This test failure:

  math/test-fenv

If rounding mode and exception macros are defined then the fenv tests
run and always fail.  This patch adds an ifdef using the
__or1k_hard_float__ macro provided by gcc to avoid defining these fenv
macros when they cnnot be used.  This is similar to what is done in csky.

Note, I will post the or1k hard-float support soon. So, I prefer to
leave the hard-float bits here for now.
-rw-r--r--sysdeps/or1k/bits/fenv.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/sysdeps/or1k/bits/fenv.h b/sysdeps/or1k/bits/fenv.h
index 587039ca03..01267805e6 100644
--- a/sysdeps/or1k/bits/fenv.h
+++ b/sysdeps/or1k/bits/fenv.h
@@ -21,6 +21,7 @@
 # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
 #endif
 
+#ifdef __or1k_hard_float__
 /* Define bits representing exceptions in the FPCSR status word.  */
 enum
   {
@@ -51,6 +52,24 @@ enum
 #define FE_UPWARD     (0x2 << 1)
 #define FE_DOWNWARD   (0x3 << 1)
 
+#else
+
+/* In the soft-float case only rounding to nearest is supported, with
+   no exceptions.  */
+
+enum
+  {
+    __FE_UNDEFINED = -1,
+
+    FE_TONEAREST =
+# define FE_TONEAREST	0x0
+      FE_TONEAREST
+  };
+
+# define FE_ALL_EXCEPT 0
+
+#endif /* __or1k_hard_float__ */
+
 /* Type representing exception flags.  */
 typedef unsigned int fexcept_t;