aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/powerpc
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/powerpc')
-rw-r--r--sysdeps/powerpc/fpu_control.h39
-rw-r--r--sysdeps/powerpc/powerpc32/__longjmp-common.S42
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/Makefile9
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feclearexcept.c50
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feholdexcept.c55
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feupdateenv.c46
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fclrexcpt.c53
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fe_note_change.c39
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fedisblxcpt.c54
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/feenablxcpt.c54
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c49
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fegetexcept.c36
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fegetmode.c37
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fegetround.c31
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/feholdexcpt.c59
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fenv_const.c45
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fenv_libc.h99
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fesetenv.c50
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fesetexcept.c37
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fesetmode.c43
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fesetround.c37
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fetestexceptflag.c25
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/feupdateenv.c48
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_from_prctl.c42
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_from_spe.c41
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_to_prctl.c42
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_to_spe.c41
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fgetexcptflg.c41
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/flt-rounds.c39
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fraiseexcept-soft.c25
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fraiseexcpt.c41
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fsetexcptflg.c55
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/ftestexcept.c31
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/get-rounding-mode.h4
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/s_fabsf.S28
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/spe-raise.c53
-rw-r--r--sysdeps/powerpc/powerpc32/setjmp-common.S42
-rw-r--r--sysdeps/powerpc/preconfigure20
38 files changed, 52 insertions, 1530 deletions
diff --git a/sysdeps/powerpc/fpu_control.h b/sysdeps/powerpc/fpu_control.h
index e0c5cf6534..e88d81640d 100644
--- a/sysdeps/powerpc/fpu_control.h
+++ b/sysdeps/powerpc/fpu_control.h
@@ -19,6 +19,10 @@
#ifndef _FPU_CONTROL_H
#define _FPU_CONTROL_H
+#if defined __SPE__ || (defined __NO_FPRS__ && !defined _SOFT_FLOAT)
+# error "SPE/e500 is no longer supported"
+#endif
+
#ifdef _SOFT_FLOAT
# define _FPU_RESERVED 0xffffffff
@@ -28,41 +32,6 @@ typedef unsigned int fpu_control_t;
# define _FPU_SETCW(cw) (void) (cw)
extern fpu_control_t __fpu_control;
-#elif defined __NO_FPRS__ /* e500 */
-
-/* rounding control */
-# define _FPU_RC_NEAREST 0x00 /* RECOMMENDED */
-# define _FPU_RC_DOWN 0x03
-# define _FPU_RC_UP 0x02
-# define _FPU_RC_ZERO 0x01
-
-/* masking of interrupts */
-# define _FPU_MASK_ZM 0x10 /* zero divide */
-# define _FPU_MASK_OM 0x04 /* overflow */
-# define _FPU_MASK_UM 0x08 /* underflow */
-# define _FPU_MASK_XM 0x40 /* inexact */
-# define _FPU_MASK_IM 0x20 /* invalid operation */
-
-# define _FPU_RESERVED 0x00c10080 /* These bits are reserved and not changed. */
-
-/* Correct IEEE semantics require traps to be enabled at the hardware
- level; the kernel then does the emulation and determines whether
- generation of signals from those traps was enabled using prctl. */
-# define _FPU_DEFAULT 0x0000003c /* Default value. */
-# define _FPU_IEEE _FPU_DEFAULT
-
-/* Type of the control word. */
-typedef unsigned int fpu_control_t;
-
-/* Macros for accessing the hardware control word. */
-# define _FPU_GETCW(cw) \
- __asm__ volatile ("mfspefscr %0" : "=r" (cw))
-# define _FPU_SETCW(cw) \
- __asm__ volatile ("mtspefscr %0" : : "r" (cw))
-
-/* Default control word set at startup. */
-extern fpu_control_t __fpu_control;
-
#else /* PowerPC 6xx floating-point. */
/* rounding control */
diff --git a/sysdeps/powerpc/powerpc32/__longjmp-common.S b/sysdeps/powerpc/powerpc32/__longjmp-common.S
index 850b02a821..e7a70076f9 100644
--- a/sysdeps/powerpc/powerpc32/__longjmp-common.S
+++ b/sysdeps/powerpc/powerpc32/__longjmp-common.S
@@ -25,12 +25,6 @@
# include <jmpbuf-offsets.h>
#endif
-#if defined __SPE__ || (defined __NO_FPRS__ && !defined _SOFT_FLOAT)
-# define LOAD_GP(N) evldd r##N,((JB_FPRS+((N)-14)*2)*4)(r3)
-#else
-# define LOAD_GP(N) lwz r##N,((JB_GPRS+(N)-14)*4)(r3)
-#endif
-
ENTRY (__longjmp_symbol)
#if defined PTR_DEMANGLE || defined CHECK_SP
@@ -46,13 +40,13 @@ ENTRY (__longjmp_symbol)
lwz r1,(JB_GPR1*4)(r3)
#endif
lwz r0,(JB_LR*4)(r3)
- LOAD_GP (14)
- LOAD_GP (15)
- LOAD_GP (16)
- LOAD_GP (17)
- LOAD_GP (18)
- LOAD_GP (19)
- LOAD_GP (20)
+ lwz r14,((JB_GPRS+14-14)*4)(r3)
+ lwz r15,((JB_GPRS+15-14)*4)(r3)
+ lwz r16,((JB_GPRS+16-14)*4)(r3)
+ lwz r17,((JB_GPRS+17-14)*4)(r3)
+ lwz r18,((JB_GPRS+18-14)*4)(r3)
+ lwz r19,((JB_GPRS+19-14)*4)(r3)
+ lwz r20,((JB_GPRS+20-14)*4)(r3)
#ifdef PTR_DEMANGLE
# ifndef CHECK_SP
PTR_DEMANGLE3 (r1, r24, r25)
@@ -63,19 +57,19 @@ ENTRY (__longjmp_symbol)
second argument (-4@4), and target address (4@0), respectively. */
LIBC_PROBE (longjmp, 3, 4@3, -4@4, 4@0)
mtlr r0
- LOAD_GP (21)
- LOAD_GP (22)
+ lwz r21,((JB_GPRS+21-14)*4)(r3)
+ lwz r22,((JB_GPRS+22-14)*4)(r3)
lwz r5,(JB_CR*4)(r3)
- LOAD_GP (23)
- LOAD_GP (24)
- LOAD_GP (25)
+ lwz r23,((JB_GPRS+23-14)*4)(r3)
+ lwz r24,((JB_GPRS+24-14)*4)(r3)
+ lwz r25,((JB_GPRS+25-14)*4)(r3)
mtcrf 0xFF,r5
- LOAD_GP (26)
- LOAD_GP (27)
- LOAD_GP (28)
- LOAD_GP (29)
- LOAD_GP (30)
- LOAD_GP (31)
+ lwz r26,((JB_GPRS+26-14)*4)(r3)
+ lwz r27,((JB_GPRS+27-14)*4)(r3)
+ lwz r28,((JB_GPRS+28-14)*4)(r3)
+ lwz r29,((JB_GPRS+29-14)*4)(r3)
+ lwz r30,((JB_GPRS+30-14)*4)(r3)
+ lwz r31,((JB_GPRS+31-14)*4)(r3)
LIBC_PROBE (longjmp_target, 3, 4@3, -4@4, 4@0)
mr r3,r4
blr
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/Makefile b/sysdeps/powerpc/powerpc32/e500/nofpu/Makefile
deleted file mode 100644
index adf556870a..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-ifeq ($(subdir),math)
-libm-routines += fexcepts_to_spe fexcepts_from_spe
-libm-routines += fexcepts_to_prctl fexcepts_from_prctl
-libm-routines += fe_note_change
-endif
-
-ifeq ($(subdir),soft-fp)
-sysdep_routines += fraiseexcept-soft
-endif
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feclearexcept.c b/sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feclearexcept.c
deleted file mode 100644
index b94d302353..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feclearexcept.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Clear floating-point exceptions for atomic compound assignment.
- e500 version.
- Copyright (C) 2004-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-#include <stdlib.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-void
-__atomic_feclearexcept (void)
-{
- unsigned int fpescr, old_fpescr;
-
- /* Get the current state. */
- old_fpescr = fpescr = fegetenv_register ();
-
- /* Clear the relevant bits. */
- fpescr &= ~SPEFSCR_ALL_EXCEPT;
-
- /* Put the new state in effect. */
- fesetenv_register (fpescr);
-
- /* Let the kernel know if the "invalid" or "underflow" bit was
- cleared. */
- if (old_fpescr & (SPEFSCR_FINVS | SPEFSCR_FUNFS))
- {
- int pflags __attribute__ ((__unused__)), r;
- INTERNAL_SYSCALL_DECL (err);
-
- r = INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &pflags);
- if (INTERNAL_SYSCALL_ERROR_P (r, err))
- abort ();
- }
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feholdexcept.c b/sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feholdexcept.c
deleted file mode 100644
index 05428b87e0..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feholdexcept.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Store current floating-point environment and clear exceptions for
- atomic compound assignment. e500 version.
- Copyright (C) 2004-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-#include <stdlib.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-void
-__atomic_feholdexcept (fenv_t *envp)
-{
- fenv_union_t u;
- INTERNAL_SYSCALL_DECL (err);
- int r;
-
- /* Get the current state. */
- r = INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &u.l[0]);
- if (INTERNAL_SYSCALL_ERROR_P (r, err))
- abort ();
-
- u.l[1] = fegetenv_register ();
- *envp = u.fenv;
-
- /* Clear everything except for the rounding mode and trapping to the
- kernel. */
- u.l[0] &= ~(PR_FP_EXC_DIV
- | PR_FP_EXC_OVF
- | PR_FP_EXC_UND
- | PR_FP_EXC_RES
- | PR_FP_EXC_INV);
- u.l[1] &= SPEFSCR_FRMC | (SPEFSCR_ALL_EXCEPT_ENABLE & ~SPEFSCR_FINXE);
-
- /* Put the new state in effect. */
- fesetenv_register (u.l[1]);
- r = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC,
- u.l[0] | PR_FP_EXC_SW_ENABLE);
- if (INTERNAL_SYSCALL_ERROR_P (r, err))
- abort ();
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feupdateenv.c b/sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feupdateenv.c
deleted file mode 100644
index 9a9a2e3da1..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feupdateenv.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Install given floating-point environment and raise exceptions for
- atomic compound assignment. e500 version.
- Copyright (C) 2004-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-#include <stdlib.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-void
-__atomic_feupdateenv (const fenv_t *envp)
-{
- int exc;
- fenv_union_t u;
- INTERNAL_SYSCALL_DECL (err);
- int r;
-
- /* Save the currently set exceptions. */
- exc = fegetenv_register () & SPEFSCR_ALL_EXCEPT;
-
- u.fenv = *envp;
-
- fesetenv_register (u.l[1]);
- r = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC,
- u.l[0] | PR_FP_EXC_SW_ENABLE);
- if (INTERNAL_SYSCALL_ERROR_P (r, err))
- abort ();
-
- /* Raise (if appropriate) saved exceptions. */
- __feraiseexcept_soft (exc);
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fclrexcpt.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fclrexcpt.c
deleted file mode 100644
index 0bdf7ed76f..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fclrexcpt.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Clear given exceptions in current floating-point environment. e500 version.
- Copyright (C) 2004-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-
-#undef feclearexcept
-int
-__feclearexcept (int excepts)
-{
- unsigned int fpescr;
- int excepts_spe = __fexcepts_to_spe (excepts);
-
- /* Get the current state. */
- fpescr = fegetenv_register ();
-
- /* Clear the relevant bits. */
- fpescr &= ~excepts_spe;
-
- /* Put the new state in effect. */
- fesetenv_register (fpescr);
-
- /* Let the kernel know if the "invalid" or "underflow" bit was
- cleared. */
- if (excepts & (FE_INVALID | FE_UNDERFLOW))
- __fe_note_change ();
-
- /* Success. */
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__feclearexcept, __old_feclearexcept)
-compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
-#endif
-
-libm_hidden_ver (__feclearexcept, feclearexcept)
-versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fe_note_change.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fe_note_change.c
deleted file mode 100644
index b2bb79f9c8..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fe_note_change.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Note a change to floating-point exceptions.
- Copyright (C) 2013-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-/* Inform the kernel of a change to floating-point exceptions. */
-
-void
-__fe_note_change (void)
-{
- int pflags, r;
- INTERNAL_SYSCALL_DECL (err);
-
- r = INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &pflags);
- if (INTERNAL_SYSCALL_ERROR_P (r, err))
- return;
- if ((pflags & PR_FP_EXC_SW_ENABLE) == 0)
- INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC,
- pflags | PR_FP_EXC_SW_ENABLE);
-}
-
-libm_hidden_def (__fe_note_change)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fedisblxcpt.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fedisblxcpt.c
deleted file mode 100644
index 89422d5b01..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fedisblxcpt.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Disable floating-point exceptions. e500 version.
- Copyright (C) 2004-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-int
-fedisableexcept (int excepts)
-{
- int result = 0, pflags, r;
- INTERNAL_SYSCALL_DECL (err);
-
- r = INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &pflags);
- if (INTERNAL_SYSCALL_ERROR_P (r, err))
- return -1;
-
- /* Save old enable bits. */
- result = __fexcepts_from_prctl (pflags);
-
- pflags &= ~__fexcepts_to_prctl (excepts);
- r = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC,
- pflags | PR_FP_EXC_SW_ENABLE);
- if (INTERNAL_SYSCALL_ERROR_P (r, err))
- return -1;
-
- /* If disabling signals for "inexact", also disable trapping to the
- kernel. */
- if ((excepts & FE_INEXACT) != 0)
- {
- unsigned long fpescr;
-
- fpescr = fegetenv_register ();
- fpescr &= ~SPEFSCR_FINXE;
- fesetenv_register (fpescr);
- }
-
- return result;
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/feenablxcpt.c b/sysdeps/powerpc/powerpc32/e500/nofpu/feenablxcpt.c
deleted file mode 100644
index b0c313a7d9..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/feenablxcpt.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Enable floating-point exceptions. e500 version.
- Copyright (C) 2004-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-int
-feenableexcept (int excepts)
-{
- unsigned int result = 0, pflags, r;
- INTERNAL_SYSCALL_DECL (err);
-
- r = INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &pflags);
- if (INTERNAL_SYSCALL_ERROR_P (r, err))
- return -1;
-
- /* Save old enable bits. */
- result = __fexcepts_from_prctl (pflags);
-
- pflags |= __fexcepts_to_prctl (excepts);
- r = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC,
- pflags | PR_FP_EXC_SW_ENABLE);
- if (INTERNAL_SYSCALL_ERROR_P (r, err))
- return -1;
-
- /* If enabling signals for "inexact", also enable trapping to the
- kernel. */
- if ((excepts & FE_INEXACT) != 0)
- {
- unsigned long fpescr;
-
- fpescr = fegetenv_register ();
- fpescr |= SPEFSCR_FINXE;
- fesetenv_register (fpescr);
- }
-
- return result;
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c
deleted file mode 100644
index 91e4348b04..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Store current floating-point environment. e500 version.
- Copyright (C) 2004-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-int
-__fegetenv (fenv_t *envp)
-{
- fenv_union_t u;
- INTERNAL_SYSCALL_DECL (err);
- int r;
-
- r = INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &u.l[0]);
- if (INTERNAL_SYSCALL_ERROR_P (r, err))
- return -1;
-
- u.l[1] = fegetenv_register ();
- *envp = u.fenv;
-
- /* Success. */
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fegetenv, __old_fegetenv)
-compat_symbol (libm, __old_fegetenv, fegetenv, GLIBC_2_1);
-#endif
-libm_hidden_def (__fegetenv)
-libm_hidden_ver (__fegetenv, fegetenv)
-
-versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2);
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetexcept.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fegetexcept.c
deleted file mode 100644
index c751811560..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetexcept.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Get floating-point exceptions. e500 version.
- Copyright (C) 2004-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-int
-fegetexcept (void)
-{
- int result = 0, pflags, r;
- INTERNAL_SYSCALL_DECL (err);
-
- r = INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &pflags);
- if (INTERNAL_SYSCALL_ERROR_P (r, err))
- return -1;
-
- result = __fexcepts_from_prctl (pflags);
-
- return result;
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetmode.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fegetmode.c
deleted file mode 100644
index 9ffffd455e..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetmode.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Store current floating-point control modes. e500 version.
- Copyright (C) 2016-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-int
-fegetmode (femode_t *modep)
-{
- fenv_union_t u;
- INTERNAL_SYSCALL_DECL (err);
- int r;
-
- r = INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &u.l[0]);
- if (INTERNAL_SYSCALL_ERROR_P (r, err))
- return -1;
-
- u.l[1] = fegetenv_register ();
- *modep = u.fenv;
- return 0;
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetround.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fegetround.c
deleted file mode 100644
index b70dd8a6ce..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetround.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Return current rounding direction. e500 version.
- Copyright (C) 2004-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-
-int
-__fegetround (void)
-{
- unsigned long fpescr;
-
- fpescr = fegetenv_register ();
- return fpescr & 3;
-}
-libm_hidden_def (__fegetround)
-weak_alias (__fegetround, fegetround)
-libm_hidden_weak (fegetround)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/feholdexcpt.c b/sysdeps/powerpc/powerpc32/e500/nofpu/feholdexcpt.c
deleted file mode 100644
index 25b55f4b43..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/feholdexcpt.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Store current floating-point environment and clear exceptions.
- e500 version.
- Copyright (C) 2004-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-int
-__feholdexcept (fenv_t *envp)
-{
- fenv_union_t u;
- INTERNAL_SYSCALL_DECL (err);
- int r;
-
- /* Get the current state. */
- r = INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &u.l[0]);
- if (INTERNAL_SYSCALL_ERROR_P (r, err))
- return -1;
-
- u.l[1] = fegetenv_register ();
- *envp = u.fenv;
-
- /* Clear everything except for the rounding mode and trapping to the
- kernel. */
- u.l[0] &= ~(PR_FP_EXC_DIV
- | PR_FP_EXC_OVF
- | PR_FP_EXC_UND
- | PR_FP_EXC_RES
- | PR_FP_EXC_INV);
- u.l[1] &= SPEFSCR_FRMC | (SPEFSCR_ALL_EXCEPT_ENABLE & ~SPEFSCR_FINXE);
-
- /* Put the new state in effect. */
- fesetenv_register (u.l[1]);
- r = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC,
- u.l[0] | PR_FP_EXC_SW_ENABLE);
- if (INTERNAL_SYSCALL_ERROR_P (r, err))
- return -1;
-
- return 0;
-}
-libm_hidden_def (__feholdexcept)
-weak_alias (__feholdexcept, feholdexcept)
-libm_hidden_weak (feholdexcept)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fenv_const.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fenv_const.c
deleted file mode 100644
index 532fde94ef..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fenv_const.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Constant floating-point environments for e500.
- Copyright (C) 2004-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-/* The use of "unsigned long long" as the type to define the
- bit-pattern explicitly, rather than the type "double" used in
- <bits/fenv.h>, means that we cannot include <fenv_libc.h> here to
- get the enum constants for the SPEFSCR bits to enable
- exceptions. */
-
-#include <sys/prctl.h>
-
-/* If the default argument is used we use this value. */
-const unsigned long long __fe_dfl_env __attribute__ ((aligned (8))) =
- 0x3cULL;
-
-/* The same representation is used for femode_t. */
-extern const unsigned long long __fe_dfl_mode
- __attribute__ ((aligned (8), alias ("__fe_dfl_env")));
-
-/* Floating-point environment where none of the exceptions are masked. */
-const unsigned long long __fe_enabled_env __attribute__ ((aligned (8))) =
- (((unsigned long long) (PR_FP_EXC_DIV
- | PR_FP_EXC_OVF
- | PR_FP_EXC_UND
- | PR_FP_EXC_RES
- | PR_FP_EXC_INV)) << 32) | 0x7cULL;
-
-/* Non-IEEE mode. */
-const unsigned long long __fe_nonieee_env __attribute__ ((aligned (8))) =
- 0x0ULL;
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fenv_libc.h b/sysdeps/powerpc/powerpc32/e500/nofpu/fenv_libc.h
deleted file mode 100644
index 521e22445d..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fenv_libc.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/* Internal libc stuff for floating point environment routines. e500 version.
- Copyright (C) 2004-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#ifndef _FENV_LIBC_H
-#define _FENV_LIBC_H 1
-
-#include <fenv.h>
-
-int __feraiseexcept_spe (int);
-libm_hidden_proto (__feraiseexcept_spe)
-
-int __feraiseexcept_soft (int);
-libc_hidden_proto (__feraiseexcept_soft)
-
-int __fexcepts_to_spe (int);
-libm_hidden_proto (__fexcepts_to_spe)
-
-int __fexcepts_from_spe (int);
-libm_hidden_proto (__fexcepts_from_spe)
-
-int __fexcepts_to_prctl (int);
-libm_hidden_proto (__fexcepts_to_prctl)
-
-int __fexcepts_from_prctl (int);
-libm_hidden_proto (__fexcepts_from_prctl)
-
-void __fe_note_change (void);
-libm_hidden_proto (__fe_note_change)
-
-/* Equivalent to fegetenv, but returns an unsigned int instead of
- taking a pointer. */
-#define fegetenv_register() \
- ({ unsigned int fscr; asm volatile ("mfspefscr %0" : "=r" (fscr)); fscr; })
-
-/* Equivalent to fesetenv, but takes an unsigned int instead of a
- pointer. */
-#define fesetenv_register(fscr) \
- ({ asm volatile ("mtspefscr %0" : : "r" (fscr)); })
-
-typedef union
-{
- fenv_t fenv;
- unsigned int l[2];
-} fenv_union_t;
-
-/* Definitions of all the SPEFSCR bit numbers. */
-enum {
- SPEFSCR_SOVH = 0x80000000,
- SPEFSCR_OVH = 0x40000000,
- SPEFSCR_FGH = 0x20000000,
- SPEFSCR_FXH = 0x10000000,
- SPEFSCR_FINVH = 0x08000000,
- SPEFSCR_FDBZH = 0x04000000,
- SPEFSCR_FUNFH = 0x02000000,
- SPEFSCR_FOVFH = 0x01000000,
- /* 2 unused bits. */
- SPEFSCR_FINXS = 0x00200000,
- SPEFSCR_FINVS = 0x00100000,
- SPEFSCR_FDBZS = 0x00080000,
- SPEFSCR_FUNFS = 0x00040000,
- SPEFSCR_FOVFS = 0x00020000,
- /* Combination of the exception bits. */
- SPEFSCR_ALL_EXCEPT = 0x003e0000,
- SPEFSCR_MODE = 0x00010000,
- SPEFSCR_SOV = 0x00008000,
- SPEFSCR_OV = 0x00004000,
- SPEFSCR_FG = 0x00002000,
- SPEFSCR_FX = 0x00001000,
- SPEFSCR_FINV = 0x00000800,
- SPEFSCR_FDBZ = 0x00000400,
- SPEFSCR_FUNF = 0x00000200,
- SPEFSCR_FOVF = 0x00000100,
- /* 1 unused bit. */
- SPEFSCR_FINXE = 0x00000040,
- SPEFSCR_FINVE = 0x00000020,
- SPEFSCR_FDBZE = 0x00000010,
- SPEFSCR_FUNFE = 0x00000008,
- SPEFSCR_FOVFE = 0x00000004,
- /* Combination of the exception trap enable bits. */
- SPEFSCR_ALL_EXCEPT_ENABLE = 0x0000007c,
- SPEFSCR_FRMC = 0x00000003
-};
-
-#endif /* fenv_libc.h */
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fesetenv.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fesetenv.c
deleted file mode 100644
index c47a204153..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fesetenv.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Install given floating-point environment. e500 version.
- Copyright (C) 1997-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-int
-__fesetenv (const fenv_t *envp)
-{
- fenv_union_t u;
- INTERNAL_SYSCALL_DECL (err);
- int r;
-
- u.fenv = *envp;
-
- fesetenv_register (u.l[1]);
- r = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC,
- u.l[0] | PR_FP_EXC_SW_ENABLE);
- if (INTERNAL_SYSCALL_ERROR_P (r, err))
- return -1;
-
- /* Success. */
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fesetenv, __old_fesetenv)
-compat_symbol (libm, __old_fesetenv, fesetenv, GLIBC_2_1);
-#endif
-
-libm_hidden_def (__fesetenv)
-libm_hidden_ver (__fesetenv, fesetenv)
-versioned_symbol (libm, __fesetenv, fesetenv, GLIBC_2_2);
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fesetexcept.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fesetexcept.c
deleted file mode 100644
index 85e375c12f..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fesetexcept.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Set given exception flags. e500 version.
- Copyright (C) 2016-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-
-int
-fesetexcept (int excepts)
-{
- unsigned long old_spefscr, spefscr;
- int excepts_spe = __fexcepts_to_spe (excepts);
-
- old_spefscr = fegetenv_register ();
- spefscr = old_spefscr | excepts_spe;
- fesetenv_register (spefscr);
-
- /* If the state of the "invalid" or "underflow" flag has changed,
- inform the kernel. */
- if (((spefscr ^ old_spefscr) & (SPEFSCR_FINVS | SPEFSCR_FUNFS)) != 0)
- __fe_note_change ();
-
- return 0;
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fesetmode.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fesetmode.c
deleted file mode 100644
index a0a2744f64..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fesetmode.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Install given floating-point control modes. e500 version.
- Copyright (C) 2016-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-#define SPEFSCR_STATUS 0xff3eff00
-
-int
-fesetmode (const femode_t *modep)
-{
- fenv_union_t u;
- INTERNAL_SYSCALL_DECL (err);
- int r;
-
- u.fenv = *modep;
- unsigned int spefscr = fegetenv_register ();
- spefscr = (spefscr & SPEFSCR_STATUS) | (u.l[1] & ~SPEFSCR_STATUS);
-
- fesetenv_register (spefscr);
- r = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC,
- u.l[0] | PR_FP_EXC_SW_ENABLE);
- if (INTERNAL_SYSCALL_ERROR_P (r, err))
- return -1;
-
- return 0;
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fesetround.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fesetround.c
deleted file mode 100644
index 7a9aeb45e1..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fesetround.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Set current rounding direction. e500 version.
- Copyright (C) 2004-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-
-int
-__fesetround (int round)
-{
- unsigned long fpescr;
-
- if ((unsigned int) round > 3)
- return 1;
-
- fpescr = fegetenv_register ();
- fpescr = (fpescr & ~SPEFSCR_FRMC) | (round & 3);
- fesetenv_register (fpescr);
-
- return 0;
-}
-libm_hidden_def (__fesetround)
-weak_alias (__fesetround, fesetround)
-libm_hidden_weak (fesetround)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fetestexceptflag.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fetestexceptflag.c
deleted file mode 100644
index c76104a75f..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fetestexceptflag.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Test exception in saved exception state. e500 version.
- Copyright (C) 2016-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-
-int
-fetestexceptflag (const fexcept_t *flagp, int excepts)
-{
- return __fexcepts_from_spe (*flagp) & excepts & FE_ALL_EXCEPT;
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/feupdateenv.c b/sysdeps/powerpc/powerpc32/e500/nofpu/feupdateenv.c
deleted file mode 100644
index 3e86c30e88..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/feupdateenv.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Install given floating-point environment and raise exceptions.
- e500 version.
- Copyright (C) 2004-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-
-int
-__feupdateenv (const fenv_t *envp)
-{
- int exc;
-
- /* Save the currently set exceptions. */
- exc = fegetenv_register () & SPEFSCR_ALL_EXCEPT;
-
- /* Install new environment. */
- __fesetenv (envp);
-
- /* Raise (if appropriate) saved exceptions. */
- __feraiseexcept_spe (exc);
-
- /* Success. */
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__feupdateenv, __old_feupdateenv)
-compat_symbol (libm, __old_feupdateenv, feupdateenv, GLIBC_2_1);
-#endif
-
-libm_hidden_def (__feupdateenv)
-libm_hidden_ver (__feupdateenv, feupdateenv)
-versioned_symbol (libm, __feupdateenv, feupdateenv, GLIBC_2_2);
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_from_prctl.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_from_prctl.c
deleted file mode 100644
index fe485de612..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_from_prctl.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Convert floating-point exceptions from prctl form.
- Copyright (C) 2013-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-#include <sys/prctl.h>
-
-/* Convert EXCEPTS from prctl bits to FE_* form, returning the
- converted value. */
-
-int
-__fexcepts_from_prctl (int excepts)
-{
- int result = 0;
- if (excepts & PR_FP_EXC_OVF)
- result |= FE_OVERFLOW;
- if (excepts & PR_FP_EXC_UND)
- result |= FE_UNDERFLOW;
- if (excepts & PR_FP_EXC_INV)
- result |= FE_INVALID;
- if (excepts & PR_FP_EXC_DIV)
- result |= FE_DIVBYZERO;
- if (excepts & PR_FP_EXC_RES)
- result |= FE_INEXACT;
- return result;
-}
-
-libm_hidden_def (__fexcepts_from_prctl)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_from_spe.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_from_spe.c
deleted file mode 100644
index 1eec29c5a9..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_from_spe.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Convert floating-point exceptions from SPEFSCR form.
- Copyright (C) 2013-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-
-/* Convert EXCEPTS from SPEFSCR bits to FE_* form, returning the
- converted value. */
-
-int
-__fexcepts_from_spe (int excepts)
-{
- int result = 0;
- if (excepts & SPEFSCR_FINXS)
- result |= FE_INEXACT;
- if (excepts & SPEFSCR_FDBZS)
- result |= FE_DIVBYZERO;
- if (excepts & SPEFSCR_FUNFS)
- result |= FE_UNDERFLOW;
- if (excepts & SPEFSCR_FOVFS)
- result |= FE_OVERFLOW;
- if (excepts & SPEFSCR_FINVS)
- result |= FE_INVALID;
- return result;
-}
-
-libm_hidden_def (__fexcepts_from_spe)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_to_prctl.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_to_prctl.c
deleted file mode 100644
index 17cb8765e5..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_to_prctl.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Convert floating-point exceptions to prctl form.
- Copyright (C) 2013-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-#include <sys/prctl.h>
-
-/* Convert EXCEPTS from FE_* form to prctl bits, returning the
- converted value. */
-
-int
-__fexcepts_to_prctl (int excepts)
-{
- int result = 0;
- if (excepts & FE_INEXACT)
- result |= PR_FP_EXC_RES;
- if (excepts & FE_DIVBYZERO)
- result |= PR_FP_EXC_DIV;
- if (excepts & FE_UNDERFLOW)
- result |= PR_FP_EXC_UND;
- if (excepts & FE_OVERFLOW)
- result |= PR_FP_EXC_OVF;
- if (excepts & FE_INVALID)
- result |= PR_FP_EXC_INV;
- return result;
-}
-
-libm_hidden_def (__fexcepts_to_prctl)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_to_spe.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_to_spe.c
deleted file mode 100644
index d796e622ed..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_to_spe.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Convert floating-point exceptions to SPEFSCR form.
- Copyright (C) 2013-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-
-/* Convert EXCEPTS from FE_* form to SPEFSCR bits, returning the
- converted value. */
-
-int
-__fexcepts_to_spe (int excepts)
-{
- int result = 0;
- if (excepts & FE_INEXACT)
- result |= SPEFSCR_FINXS;
- if (excepts & FE_DIVBYZERO)
- result |= SPEFSCR_FDBZS;
- if (excepts & FE_UNDERFLOW)
- result |= SPEFSCR_FUNFS;
- if (excepts & FE_OVERFLOW)
- result |= SPEFSCR_FOVFS;
- if (excepts & FE_INVALID)
- result |= SPEFSCR_FINVS;
- return result;
-}
-
-libm_hidden_def (__fexcepts_to_spe)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fgetexcptflg.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fgetexcptflg.c
deleted file mode 100644
index 8c6fd73f2a..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fgetexcptflg.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Store current representation for exceptions. e500 version.
- Copyright (C) 2004-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-
-int
-__fegetexceptflag (fexcept_t *flagp, int excepts)
-{
- unsigned long fpescr;
-
- /* Get the current state. */
- fpescr = fegetenv_register ();
-
- *flagp = fpescr & SPEFSCR_ALL_EXCEPT;
-
- /* Success. */
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fegetexceptflag, __old_fegetexceptflag)
-compat_symbol (libm, __old_fegetexceptflag, fegetexceptflag, GLIBC_2_1);
-#endif
-
-versioned_symbol (libm, __fegetexceptflag, fegetexceptflag, GLIBC_2_2);
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/flt-rounds.c b/sysdeps/powerpc/powerpc32/e500/nofpu/flt-rounds.c
deleted file mode 100644
index 176dcc0359..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/flt-rounds.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Return current rounding mode as correct value for FLT_ROUNDS. e500
- version.
- Copyright (C) 2013-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-#include <stdlib.h>
-
-int
-__flt_rounds (void)
-{
- switch (fegetenv_register () & SPEFSCR_FRMC)
- {
- case FE_TOWARDZERO:
- return 0;
- case FE_TONEAREST:
- return 1;
- case FE_UPWARD:
- return 2;
- case FE_DOWNWARD:
- return 3;
- default:
- abort ();
- }
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fraiseexcept-soft.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fraiseexcept-soft.c
deleted file mode 100644
index 4eb14a87f4..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fraiseexcept-soft.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Raise given exceptions. e500 version for use from soft-fp.
- Copyright (C) 2004-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Aldy Hernandez <aldyh@redhat.com>, 2004.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-#include <libc-symbols.h>
-
-#define __FERAISEEXCEPT_INTERNAL __feraiseexcept_soft
-#include "spe-raise.c"
-libc_hidden_def (__feraiseexcept_soft)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fraiseexcpt.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fraiseexcpt.c
deleted file mode 100644
index c80116aa80..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fraiseexcpt.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Raise given exceptions. e500 version.
- Copyright (C) 2004-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-
-#define __FERAISEEXCEPT_INTERNAL __feraiseexcept_spe
-#include "spe-raise.c"
-
-libm_hidden_def (__feraiseexcept_spe)
-
-#undef feraiseexcept
-int
-__feraiseexcept (int excepts)
-{
- return __feraiseexcept_spe (__fexcepts_to_spe (excepts));
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__feraiseexcept, __old_feraiseexcept)
-compat_symbol (libm, __old_feraiseexcept, feraiseexcept, GLIBC_2_1);
-#endif
-
-libm_hidden_def (__feraiseexcept)
-libm_hidden_ver (__feraiseexcept, feraiseexcept)
-versioned_symbol (libm, __feraiseexcept, feraiseexcept, GLIBC_2_2);
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fsetexcptflg.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fsetexcptflg.c
deleted file mode 100644
index 31cdfc78ec..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fsetexcptflg.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Set floating-point environment exception handling. e500 version.
- Copyright (C) 1997-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-
-int
-__fesetexceptflag (const fexcept_t *flagp, int excepts)
-{
- unsigned long old_spefscr, spefscr;
- fexcept_t flag;
- int excepts_spe = __fexcepts_to_spe (excepts);
-
- /* Get the current state. */
- old_spefscr = fegetenv_register ();
-
- /* Ignore exceptions not listed in 'excepts'. */
- flag = *flagp & excepts_spe;
-
- /* Replace the exception status */
- spefscr = (old_spefscr & ~excepts_spe) | flag;
-
- /* Store the new status word (along with the rest of the environment). */
- fesetenv_register (spefscr);
-
- /* If the state of the "invalid" or "underflow" flag has changed,
- inform the kernel. */
- if (((spefscr ^ old_spefscr) & (SPEFSCR_FINVS | SPEFSCR_FUNFS)) != 0)
- __fe_note_change ();
-
- /* Success. */
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fesetexceptflag, __old_fesetexceptflag)
-compat_symbol (libm, __old_fesetexceptflag, fesetexceptflag, GLIBC_2_1);
-#endif
-
-versioned_symbol (libm, __fesetexceptflag, fesetexceptflag, GLIBC_2_2);
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/ftestexcept.c b/sysdeps/powerpc/powerpc32/e500/nofpu/ftestexcept.c
deleted file mode 100644
index dab8811cf3..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/ftestexcept.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Test exception in current environment. e500 version.
- Copyright (C) 2004-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-
-int
-fetestexcept (int excepts)
-{
- unsigned long f;
-
- /* Get the current state. */
- f = fegetenv_register ();
-
- return __fexcepts_from_spe (f) & excepts;
-}
-libm_hidden_def (fetestexcept)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/get-rounding-mode.h b/sysdeps/powerpc/powerpc32/e500/nofpu/get-rounding-mode.h
deleted file mode 100644
index 117e7331e9..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/get-rounding-mode.h
+++ /dev/null
@@ -1,4 +0,0 @@
-/* The generic version of get-rounding-mode.h using fpu_control.h, not
- the one using the software rounding mode, is correct for e500. */
-
-#include <sysdeps/generic/get-rounding-mode.h>
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/s_fabsf.S b/sysdeps/powerpc/powerpc32/e500/nofpu/s_fabsf.S
deleted file mode 100644
index 2f57d30125..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/s_fabsf.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Floating-point absolute value. e500 version.
- Copyright (C) 2004-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-#include <libm-alias-float.h>
-
-ENTRY (__fabsf)
-/* float [r3] fabsf (float [r3] x) ; */
- efsabs r3,r3
- blr
-END (__fabsf)
-
-libm_alias_float (__fabs, fabs)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/spe-raise.c b/sysdeps/powerpc/powerpc32/e500/nofpu/spe-raise.c
deleted file mode 100644
index e1ad994fcb..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/spe-raise.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Raise given exceptions, given the SPEFSCR bits for those exceptions.
- Copyright (C) 1997-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <fenv_libc.h>
-
-int
-__FERAISEEXCEPT_INTERNAL (int excepts)
-{
- unsigned long f;
-
- f = fegetenv_register ();
- f |= (excepts & SPEFSCR_ALL_EXCEPT);
- fesetenv_register (f);
-
- /* Force the operations that cause the exceptions. */
- if ((SPEFSCR_FINVS & excepts) != 0)
- /* 0 / 0 */
- asm volatile ("efsdiv %0,%0,%1" : : "r" (0), "r" (0));
-
- if ((SPEFSCR_FDBZS & excepts) != 0)
- /* 1.0 / 0.0 */
- asm volatile ("efsdiv %0,%0,%1" : : "r" (1.0F), "r" (0));
-
- if ((SPEFSCR_FOVFS & excepts) != 0)
- /* Largest normalized number plus itself. */
- asm volatile ("efsadd %0,%0,%1" : : "r" (0x7f7fffff), "r" (0x7f7fffff));
-
- if ((SPEFSCR_FUNFS & excepts) != 0)
- /* Smallest normalized number times itself. */
- asm volatile ("efsmul %0,%0,%1" : : "r" (0x800000), "r" (0x800000));
-
- if ((SPEFSCR_FINXS & excepts) != 0)
- /* Smallest normalized minus 1.0 raises the inexact flag. */
- asm volatile ("efssub %0,%0,%1" : : "r" (0x00800000), "r" (1.0F));
-
- /* Success. */
- return 0;
-}
diff --git a/sysdeps/powerpc/powerpc32/setjmp-common.S b/sysdeps/powerpc/powerpc32/setjmp-common.S
index b4d77865ee..1b9629bb18 100644
--- a/sysdeps/powerpc/powerpc32/setjmp-common.S
+++ b/sysdeps/powerpc/powerpc32/setjmp-common.S
@@ -25,12 +25,6 @@
# include <jmpbuf-offsets.h>
#endif
-#if defined __SPE__ || (defined __NO_FPRS__ && !defined _SOFT_FLOAT)
-# define SAVE_GP(N) evstdd r##N,((JB_FPRS+((N)-14)*2)*4)(3)
-#else
-# define SAVE_GP(N) stw r##N,((JB_GPRS+(N)-14)*4)(3)
-#endif
-
ENTRY (__sigsetjmp_symbol)
#ifdef PTR_MANGLE
@@ -44,31 +38,31 @@ ENTRY (__sigsetjmp_symbol)
/* setjmp probe expects longjmp first argument (4@3), second argument
(-4@4), and target address (4@0), respectively. */
LIBC_PROBE (setjmp, 3, 4@3, -4@4, 4@0)
- SAVE_GP (14)
+ stw r14,((JB_GPRS+14-14)*4)(3)
#ifdef PTR_MANGLE
PTR_MANGLE2 (r0, r10)
li r10,0
#endif
stw r0,(JB_LR*4)(3)
- SAVE_GP (15)
+ stw r15,((JB_GPRS+15-14)*4)(3)
mfcr r0
- SAVE_GP (16)
+ stw r16,((JB_GPRS+16-14)*4)(3)
stw r0,(JB_CR*4)(3)
- SAVE_GP (17)
- SAVE_GP (18)
- SAVE_GP (19)
- SAVE_GP (20)
- SAVE_GP (21)
- SAVE_GP (22)
- SAVE_GP (23)
- SAVE_GP (24)
- SAVE_GP (25)
- SAVE_GP (26)
- SAVE_GP (27)
- SAVE_GP (28)
- SAVE_GP (29)
- SAVE_GP (30)
- SAVE_GP (31)
+ stw r17,((JB_GPRS+17-14)*4)(3)
+ stw r18,((JB_GPRS+18-14)*4)(3)
+ stw r19,((JB_GPRS+19-14)*4)(3)
+ stw r20,((JB_GPRS+20-14)*4)(3)
+ stw r21,((JB_GPRS+21-14)*4)(3)
+ stw r22,((JB_GPRS+22-14)*4)(3)
+ stw r23,((JB_GPRS+23-14)*4)(3)
+ stw r24,((JB_GPRS+24-14)*4)(3)
+ stw r25,((JB_GPRS+25-14)*4)(3)
+ stw r26,((JB_GPRS+26-14)*4)(3)
+ stw r27,((JB_GPRS+27-14)*4)(3)
+ stw r28,((JB_GPRS+28-14)*4)(3)
+ stw r29,((JB_GPRS+29-14)*4)(3)
+ stw r30,((JB_GPRS+30-14)*4)(3)
+ stw r31,((JB_GPRS+31-14)*4)(3)
#if IS_IN (rtld)
li r3,0
blr
diff --git a/sysdeps/powerpc/preconfigure b/sysdeps/powerpc/preconfigure
index e3ad6ec57f..a0ea745bb4 100644
--- a/sysdeps/powerpc/preconfigure
+++ b/sysdeps/powerpc/preconfigure
@@ -8,14 +8,18 @@ powerpc64*)
base_machine=powerpc machine=powerpc/powerpc64/be
;;
powerpc*)
- # Check for e500.
- $CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null > conftest.i
- if grep -q __NO_FPRS__ conftest.i && ! grep -q _SOFT_FLOAT conftest.i; then
- base_machine=powerpc machine=powerpc/powerpc32/e500
- else
- base_machine=powerpc machine=powerpc/powerpc32
- fi
- rm -f conftest.i
+ base_machine=powerpc machine=powerpc/powerpc32
with_fp_cond="!defined __NO_FPRS__"
+ case "$host_os" in
+ *gnuspe*)
+ # SPE support was dropped in glibc 2.30.
+ # We can't use AC_MSG_ERROR here.
+ # The parent script is in the middle of printing the
+ # "checking for sysdeps preconfigure fragments" line.
+ echo >&2
+ echo "Host system type $host is no longer supported." >&2
+ exit 1
+ ;;
+ esac
;;
esac