[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
fenv-exceptions-trapping: Fix for powerpc* platforms
|
From: |
Bruno Haible |
|
Subject: |
fenv-exceptions-trapping: Fix for powerpc* platforms |
|
Date: |
Sat, 04 Nov 2023 16:55:23 +0100 |
I had made a mistake in the override code for powerpc. This patch fixes it.
2023-11-04 Bruno Haible <bruno@clisp.org>
fenv-exceptions-trapping: Fix for powerpc* platforms.
* lib/fenv-except-trapping.c (feenableexcept, fedisableexcept)
[powerpc]: Use the correct bit mask for the trap bits.
* tests/test-fenv-except-trapping-2.c (main): Reenable the '9' tests on
powerpc platforms.
diff --git a/lib/fenv-except-trapping.c b/lib/fenv-except-trapping.c
index a86cbd2d39..554f8128de 100644
--- a/lib/fenv-except-trapping.c
+++ b/lib/fenv-except-trapping.c
@@ -505,7 +505,7 @@ feenableexcept (int exceptions)
if (!(memenv.u == orig_memenv.u))
{
- if ((orig_memenv.u & 0x000000f7) == 0 && (memenv.u & 0x000000f7) != 0)
+ if ((orig_memenv.u & 0x000000f8) == 0 && (memenv.u & 0x000000f8) != 0)
{
/* Put the thread into precise trapping mode. */
# if defined __linux__ || defined __NetBSD__
@@ -537,7 +537,7 @@ fedisableexcept (int exceptions)
{
_FPU_SETCW_AS_DOUBLE (memenv.f);
- if ((orig_memenv.u & 0x000000f7) != 0 && (memenv.u & 0x000000f7) == 0)
+ if ((orig_memenv.u & 0x000000f8) != 0 && (memenv.u & 0x000000f8) == 0)
{
/* Put the thread into no-trapping mode. */
# if defined __linux__ || defined __NetBSD__
diff --git a/tests/test-fenv-except-trapping-2.c
b/tests/test-fenv-except-trapping-2.c
index 18f42b89c2..99a67d0969 100644
--- a/tests/test-fenv-except-trapping-2.c
+++ b/tests/test-fenv-except-trapping-2.c
@@ -448,10 +448,8 @@ main (int argc, char *argv[])
#if defined __i386 || defined _M_IX86
known_failure |= (operation_arg[0] == '7' || operation_arg[0] == '8');
#endif
- /* The '9' tests do not work on Linux/alpha, musl libc/powerpc64le,
- AIX/powerpc. */
- #if (__GLIBC__ >= 2 && defined __alpha) \
- || ((defined MUSL_LIBC || defined _AIX) && defined __powerpc__)
+ /* The '9' tests do not work on Linux/alpha. */
+ #if (__GLIBC__ >= 2 && defined __alpha)
known_failure |= (operation_arg[0] == '9');
#endif
/* The 'l' tests do not work on Linux/loongarch64 with glibc 2.37.
| [Prev in Thread] |
Current Thread |
[Next in Thread] |
- fenv-exceptions-trapping: Fix for powerpc* platforms,
Bruno Haible <=