]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
or1k: Only define fpu rouding and exceptions with hard-float
authorStafford Horne <shorne@gmail.com>
Tue, 19 Mar 2024 20:53:37 +0000 (20:53 +0000)
committerStafford Horne <shorne@gmail.com>
Fri, 22 Mar 2024 15:43:34 +0000 (15:43 +0000)
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.

sysdeps/or1k/bits/fenv.h

index 587039ca0356b806260e7d57f824cb9236434620..01267805e65722d7d7f143aeb04f216f2877da3c 100644 (file)
@@ -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;