[PATCH 3/4] or1k: Only define fpu rouding and exceptions with hard-float
Stafford Horne
shorne@gmail.com
Tue Mar 19 21:42:43 GMT 2024
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 | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
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;
--
2.44.0
More information about the Libc-alpha
mailing list