This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] Remove support for PowerPC e500 / SPE ISA extension.
- From: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>
- To: libc-alpha at sourceware dot org
- Date: Thu, 16 May 2019 15:51:51 -0300
- Subject: Re: [PATCH] Remove support for PowerPC e500 / SPE ISA extension.
- References: <20190516175456.23205-1-zackw@panix.com>
On 16/05/2019 14:54, Zack Weinberg wrote:
> GCC 9 dropped support for the e500 variation of PowerPC, so I suggest
> we should follow suit.
>
> This patch was developed by grepping for “e500”, “__SPE__”, and
> “__NO_FPRS__”, and may not eliminate every vestige of e500 support.
> Also, I left most uses of __NO_FPRS__ alone, as it was not clear to me
> whether they might be relevant to normal embedded PowerPC with
> soft-float.
>
> Tested by attempting to configure with
> CC=powerpc-x-linux-gnu-gcc --host=powerpc-x-linux-gnuspe
> (this errors out, as intended) and by cross-building with
> CC=powerpc-x-linux-gnu-gcc --host=powerpc-x-linux-gnu
> (this still works).
I was about to send a similar patch. I will do a sanity check on
powerpc-linux-gnu to see if this causes any regressions. It looks ok
imho and I think it align with GCC move regarding the ABI.
>
> zw
>
> ---
> GCC 9 dropped support for the e500 variation of PowerPC. Follow suit.
>
> * sysdeps/powerpc/preconfigure: Error out on powerpc-*-*gnuspe*
> host type.
> * scripts/build-many-glibcs.py: Remove powerpc-*-linux-gnuspe
> and powerpc-*-linux-gnuspe-e500v1 from list of build configurations.
>
> * sysdeps/powerpc/powerpc32/e500: Recursively delete.
> * sysdeps/unix/sysv/linux/powerpc/powerpc32/e500: Recursively delete.
> * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/context-e500.h:
> Delete.
>
> * sysdeps/powerpc/fpu_control.h: Remove e500 code.
> Issue an #error if used with an e500 compiler.
> * sysdeps/powerpc/powerpc32/__longjmp_common.S
> * sysdeps/powerpc/powerpc32/setjmp_common.S
> * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S
> * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S
> * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S
> * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S
> * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S
> * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S:
> Remove e500 code.
>
> * sysdeps/unix/sysv/linux/powerpc/elision-lock.c
> * sysdeps/unix/sysv/linux/powerpc/elision-trylock.c
> * sysdeps/unix/sysv/linux/powerpc/elision-unlock.c
> Remove __SPE__ ifndefs.
> ---
> NEWS | 4 +
> scripts/build-many-glibcs.py | 9 --
> sysdeps/powerpc/fpu_control.h | 39 +----
> sysdeps/powerpc/powerpc32/__longjmp-common.S | 42 +++--
> sysdeps/powerpc/powerpc32/e500/nofpu/Makefile | 9 --
> .../e500/nofpu/atomic-feclearexcept.c | 50 ------
> .../e500/nofpu/atomic-feholdexcept.c | 55 -------
> .../powerpc32/e500/nofpu/atomic-feupdateenv.c | 46 ------
> .../powerpc/powerpc32/e500/nofpu/fclrexcpt.c | 53 -------
> .../powerpc32/e500/nofpu/fe_note_change.c | 39 -----
> .../powerpc32/e500/nofpu/fedisblxcpt.c | 54 -------
> .../powerpc32/e500/nofpu/feenablxcpt.c | 54 -------
> .../powerpc/powerpc32/e500/nofpu/fegetenv.c | 49 ------
> .../powerpc32/e500/nofpu/fegetexcept.c | 36 -----
> .../powerpc/powerpc32/e500/nofpu/fegetmode.c | 37 -----
> .../powerpc/powerpc32/e500/nofpu/fegetround.c | 31 ----
> .../powerpc32/e500/nofpu/feholdexcpt.c | 59 -------
> .../powerpc/powerpc32/e500/nofpu/fenv_const.c | 45 ------
> .../powerpc/powerpc32/e500/nofpu/fenv_libc.h | 99 ------------
> .../powerpc/powerpc32/e500/nofpu/fesetenv.c | 50 ------
> .../powerpc32/e500/nofpu/fesetexcept.c | 37 -----
> .../powerpc/powerpc32/e500/nofpu/fesetmode.c | 43 ------
> .../powerpc/powerpc32/e500/nofpu/fesetround.c | 37 -----
> .../powerpc32/e500/nofpu/fetestexceptflag.c | 25 ---
> .../powerpc32/e500/nofpu/feupdateenv.c | 48 ------
> .../e500/nofpu/fexcepts_from_prctl.c | 42 -----
> .../powerpc32/e500/nofpu/fexcepts_from_spe.c | 41 -----
> .../powerpc32/e500/nofpu/fexcepts_to_prctl.c | 42 -----
> .../powerpc32/e500/nofpu/fexcepts_to_spe.c | 41 -----
> .../powerpc32/e500/nofpu/fgetexcptflg.c | 41 -----
> .../powerpc/powerpc32/e500/nofpu/flt-rounds.c | 39 -----
> .../powerpc32/e500/nofpu/fraiseexcept-soft.c | 25 ---
> .../powerpc32/e500/nofpu/fraiseexcpt.c | 41 -----
> .../powerpc32/e500/nofpu/fsetexcptflg.c | 55 -------
> .../powerpc32/e500/nofpu/ftestexcept.c | 31 ----
> .../powerpc32/e500/nofpu/get-rounding-mode.h | 4 -
> .../powerpc/powerpc32/e500/nofpu/s_fabsf.S | 28 ----
> .../powerpc/powerpc32/e500/nofpu/spe-raise.c | 53 -------
> sysdeps/powerpc/powerpc32/setjmp-common.S | 42 +++--
> sysdeps/powerpc/preconfigure | 21 +--
> .../unix/sysv/linux/powerpc/elision-lock.c | 2 -
> .../unix/sysv/linux/powerpc/elision-trylock.c | 2 -
> .../unix/sysv/linux/powerpc/elision-unlock.c | 4 -
> .../powerpc/powerpc32/e500/nofpu/Implies | 2 -
> .../powerpc/powerpc32/getcontext-common.S | 4 -
> .../powerpc/powerpc32/nofpu/context-e500.h | 144 ------------------
> .../powerpc/powerpc32/nofpu/getcontext.S | 2 -
> .../powerpc/powerpc32/nofpu/setcontext.S | 2 -
> .../powerpc/powerpc32/nofpu/swapcontext.S | 2 -
> .../powerpc/powerpc32/setcontext-common.S | 4 -
> .../powerpc/powerpc32/swapcontext-common.S | 8 -
> 51 files changed, 56 insertions(+), 1716 deletions(-)
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/Makefile
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feclearexcept.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feholdexcept.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feupdateenv.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fclrexcpt.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fe_note_change.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fedisblxcpt.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/feenablxcpt.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fegetexcept.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fegetmode.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fegetround.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/feholdexcpt.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fenv_const.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fenv_libc.h
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fesetenv.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fesetexcept.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fesetmode.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fesetround.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fetestexceptflag.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/feupdateenv.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_from_prctl.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_from_spe.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_to_prctl.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_to_spe.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fgetexcptflg.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/flt-rounds.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fraiseexcept-soft.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fraiseexcpt.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fsetexcptflg.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/ftestexcept.c
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/get-rounding-mode.h
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/s_fabsf.S
> delete mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/spe-raise.c
> delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nofpu/Implies
> delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/context-e500.h
>
> diff --git a/NEWS b/NEWS
> index 0e4c57f273..fa29027715 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -54,6 +54,10 @@ Deprecated and removed features, and other changes affecting compatibility:
> * With --enable-bind-now, installed programs are now linked with the
> BIND_NOW flag.
>
> +* Support for PowerPC e500 CPUs and the PowerPC SPE ISA extension
> + (powerpc-*-*gnuspe* configurations) has been removed, following the
> + removal of support for this subarchitecture in version 9 of GCC.
I think it worth to mention it was deprecated on GCC 8 and finally
removed on GCC 9.
> +
> Changes to build and runtime requirements:
>
> * GCC 6.2 or later is required to build the GNU C Library.
> diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py
> index 6f9a35331f..c5821df25e 100755
> --- a/scripts/build-many-glibcs.py
> +++ b/scripts/build-many-glibcs.py
> @@ -318,15 +318,6 @@ class Context(object):
> self.add_config(arch='powerpc64le',
> os_name='linux-gnu',
> gcc_cfg=['--disable-multilib', '--enable-secureplt'])
> - self.add_config(arch='powerpc',
> - os_name='linux-gnuspe',
> - gcc_cfg=['--disable-multilib', '--enable-secureplt',
> - '--enable-e500-double', '--enable-obsolete'])
> - self.add_config(arch='powerpc',
> - os_name='linux-gnuspe',
> - variant='e500v1',
> - gcc_cfg=['--disable-multilib', '--enable-secureplt',
> - '--enable-obsolete'])
> self.add_config(arch='riscv64',
> os_name='linux-gnu',
> variant='rv64imac-lp64',
> 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
> +
I am not familiar with SPE, but it does seems to be what
sysdeps/powerpc/preconfigure does to check SPE support.
> #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 */
Ok.
> 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)
Ok.
> #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
Ok.
> 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
Ok.
> 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 ();
> - }
> -}
Ok.
> 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 ();
> -}
Ok.
> 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);
> -}
Ok.
> 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);
Ok.
> 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)
Ok.
> 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;
> -}
Ok.
> 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;
> -}
Ok.
> 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);
Ok.
> 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;
> -}
Ok.
> 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;
> -}
Ok.
> 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)
Ok.
> 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)
OK.
> 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;
OK.
> 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 */
OK.
> 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);
OK.
> 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;
> -}
OK.
> 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;
> -}
OK.
> 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)
OK.
> 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;
> -}
OK.
> 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);
OK.
> 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)
OK.
> 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)
OK.
> 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)
OK.
> 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)
OK.
> 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);
OK.
> 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 ();
> - }
> -}
OK.
> 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)
OK.
> 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);
OK.
> 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);
OK.
> 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)
OK.
> 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)
OK.
> 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;
> -}
OK.
> 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
OK.
> diff --git a/sysdeps/powerpc/preconfigure b/sysdeps/powerpc/preconfigure
> index e3ad6ec57f..3e8477606b 100644
> --- a/sysdeps/powerpc/preconfigure
> +++ b/sysdeps/powerpc/preconfigure
> @@ -8,14 +8,17 @@ 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
> - with_fp_cond="!defined __NO_FPRS__"
> + base_machine=powerpc machine=powerpc/powerpc32
> + 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
Other ABI (csky, riscv, m68k) seems to just write out without any prepending
(***). MIPS uses as_fn_error macro instead. I am not sure which is
preferable here.
> + ;;
> + esac
> ;;
> esac
> diff --git a/sysdeps/unix/sysv/linux/powerpc/elision-lock.c b/sysdeps/unix/sysv/linux/powerpc/elision-lock.c
> index f0e3dcab76..7564507890 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/elision-lock.c
> +++ b/sysdeps/unix/sysv/linux/powerpc/elision-lock.c
> @@ -45,7 +45,6 @@
> int
> __lll_lock_elision (int *lock, short *adapt_count, EXTRAARG int pshared)
> {
> -#ifndef __SPE__
> /* adapt_count is accessed concurrently but is just a hint. Thus,
> use atomic accesses but relaxed MO is sufficient. */
> if (atomic_load_relaxed (adapt_count) > 0)
> @@ -83,6 +82,5 @@ __lll_lock_elision (int *lock, short *adapt_count, EXTRAARG int pshared)
> aconf.skip_lock_out_of_tbegin_retries);
>
> use_lock:
> -#endif
> return LLL_LOCK ((*lock), pshared);
> }
Ok.
> diff --git a/sysdeps/unix/sysv/linux/powerpc/elision-trylock.c b/sysdeps/unix/sysv/linux/powerpc/elision-trylock.c
> index 72d707f7e6..edcf7f423d 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/elision-trylock.c
> +++ b/sysdeps/unix/sysv/linux/powerpc/elision-trylock.c
> @@ -30,7 +30,6 @@
> int
> __lll_trylock_elision (int *futex, short *adapt_count)
> {
> -#ifndef __SPE__
> /* Implement POSIX semantics by forbiding nesting elided trylocks. */
> __libc_tabort (_ABORT_NESTED_TRYLOCK);
>
> @@ -66,6 +65,5 @@ __lll_trylock_elision (int *futex, short *adapt_count)
> }
>
> use_lock:
> -#endif
> return lll_trylock (*futex);
> }
Ok.
> diff --git a/sysdeps/unix/sysv/linux/powerpc/elision-unlock.c b/sysdeps/unix/sysv/linux/powerpc/elision-unlock.c
> index 18ec23fa64..0665cb005e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/elision-unlock.c
> +++ b/sysdeps/unix/sysv/linux/powerpc/elision-unlock.c
> @@ -23,7 +23,6 @@
> int
> __lll_unlock_elision (int *lock, short *adapt_count, int pshared)
> {
> -#ifndef __SPE__
> /* When the lock was free we're in a transaction. */
> if (*lock == 0)
> __libc_tend (0);
> @@ -40,8 +39,5 @@ __lll_unlock_elision (int *lock, short *adapt_count, int pshared)
>
> lll_unlock ((*lock), pshared);
> }
> -#else
> - lll_unlock ((*lock), pshared);
> -#endif
> return 0;
> }
Ok.
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nofpu/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nofpu/Implies
> deleted file mode 100644
> index aab22f212c..0000000000
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nofpu/Implies
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -powerpc/powerpc32/e500/nofpu
> -powerpc/nofpu
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S
> index 9fde4ac29f..f7979c8262 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S
> @@ -262,10 +262,6 @@ ENTRY(__CONTEXT_FUNC_NAME)
> # endif
> #endif
>
> -#ifdef __CONTEXT_ENABLE_E500
> - getcontext_e500
> -#endif
> -
> /* We need to set up parms and call sigprocmask which will clobber
> volatile registers. So before the call we need to retrieve the
> original ucontext ptr (parm1) from stack and store the UC_REGS_PTR
Ok.
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/context-e500.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/context-e500.h
> deleted file mode 100644
> index ef53f7c069..0000000000
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/context-e500.h
> +++ /dev/null
> @@ -1,144 +0,0 @@
> -/* getcontext/setcontext/makecontext support for e500 high parts of registers.
> - Copyright (C) 2006-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 _CONTEXT_E500_H
> -#define _CONTEXT_E500_H 1
> -
> -#if defined __SPE__ || (defined __NO_FPRS__ && !defined _SOFT_FLOAT)
> -
> -# define __CONTEXT_ENABLE_E500 1
> -
> -/* We follow the kernel's layout, which saves the high parts of the
> - SPE registers in the vregs area, immediately followed by the ACC
> - value (call-clobbered, not handled here) and the SPEFSCR value. */
> -
> -.macro getcontext_e500
> - la r10,(_UC_VREGS)(r3)
> - evstwwe r0,(0*4)(r10)
> - evstwwe r1,(1*4)(r10)
> - evstwwe r2,(2*4)(r10)
> - evstwwe r3,(3*4)(r10)
> - evstwwe r4,(4*4)(r10)
> - evstwwe r5,(5*4)(r10)
> - evstwwe r6,(6*4)(r10)
> - evstwwe r7,(7*4)(r10)
> - evstwwe r8,(8*4)(r10)
> - evstwwe r9,(9*4)(r10)
> - evstwwe r10,(10*4)(r10)
> - evstwwe r11,(11*4)(r10)
> - evstwwe r12,(12*4)(r10)
> - evstwwe r13,(13*4)(r10)
> - evstwwe r14,(14*4)(r10)
> - evstwwe r15,(15*4)(r10)
> - evstwwe r16,(16*4)(r10)
> - evstwwe r17,(17*4)(r10)
> - evstwwe r18,(18*4)(r10)
> - evstwwe r19,(19*4)(r10)
> - evstwwe r20,(20*4)(r10)
> - evstwwe r21,(21*4)(r10)
> - evstwwe r22,(22*4)(r10)
> - evstwwe r23,(23*4)(r10)
> - evstwwe r24,(24*4)(r10)
> - evstwwe r25,(25*4)(r10)
> - evstwwe r26,(26*4)(r10)
> - evstwwe r27,(27*4)(r10)
> - evstwwe r28,(28*4)(r10)
> - evstwwe r29,(29*4)(r10)
> - evstwwe r30,(30*4)(r10)
> - evstwwe r31,(31*4)(r10)
> - mfspefscr r9
> - stw r9,(34*4)(r10)
> -.endm
> -
> -.macro setcontext_e500
> - lwz r3,_UC_VREGS+(0*4)(r31)
> - evmergelo r0,r3,r0
> - lwz r3,_UC_VREGS+(1*4)(r31)
> - evmergelo r1,r3,r1
> - lwz r3,_UC_VREGS+(2*4)(r31)
> - evmergelo r2,r3,r2
> - lwz r3,_UC_VREGS+(1*4)(r31)
> - evmergelo r1,r3,r1
> - lwz r3,_UC_VREGS+(2*4)(r31)
> - evmergelo r2,r3,r2
> - lwz r3,_UC_VREGS+(3*4)(r31)
> - evmergelo r3,r3,r3
> - lwz r3,_UC_VREGS+(4*4)(r31)
> - evmergelo r4,r3,r4
> - lwz r3,_UC_VREGS+(5*4)(r31)
> - evmergelo r5,r3,r5
> - lwz r3,_UC_VREGS+(6*4)(r31)
> - evmergelo r6,r3,r6
> - lwz r3,_UC_VREGS+(7*4)(r31)
> - evmergelo r7,r3,r7
> - lwz r3,_UC_VREGS+(8*4)(r31)
> - evmergelo r8,r3,r8
> - lwz r3,_UC_VREGS+(9*4)(r31)
> - evmergelo r9,r3,r9
> - lwz r3,_UC_VREGS+(10*4)(r31)
> - evmergelo r10,r3,r10
> - lwz r3,_UC_VREGS+(11*4)(r31)
> - evmergelo r11,r3,r11
> - lwz r3,_UC_VREGS+(12*4)(r31)
> - evmergelo r12,r3,r12
> - lwz r3,_UC_VREGS+(13*4)(r31)
> - evmergelo r13,r3,r13
> - lwz r3,_UC_VREGS+(14*4)(r31)
> - evmergelo r14,r3,r14
> - lwz r3,_UC_VREGS+(15*4)(r31)
> - evmergelo r15,r3,r15
> - lwz r3,_UC_VREGS+(16*4)(r31)
> - evmergelo r16,r3,r16
> - lwz r3,_UC_VREGS+(17*4)(r31)
> - evmergelo r17,r3,r17
> - lwz r3,_UC_VREGS+(18*4)(r31)
> - evmergelo r18,r3,r18
> - lwz r3,_UC_VREGS+(19*4)(r31)
> - evmergelo r19,r3,r19
> - lwz r3,_UC_VREGS+(20*4)(r31)
> - evmergelo r20,r3,r20
> - lwz r3,_UC_VREGS+(21*4)(r31)
> - evmergelo r21,r3,r21
> - lwz r3,_UC_VREGS+(22*4)(r31)
> - evmergelo r22,r3,r22
> - lwz r3,_UC_VREGS+(23*4)(r31)
> - evmergelo r23,r3,r23
> - lwz r3,_UC_VREGS+(24*4)(r31)
> - evmergelo r24,r3,r24
> - lwz r3,_UC_VREGS+(25*4)(r31)
> - evmergelo r25,r3,r25
> - lwz r3,_UC_VREGS+(26*4)(r31)
> - evmergelo r26,r3,r26
> - lwz r3,_UC_VREGS+(27*4)(r31)
> - evmergelo r27,r3,r27
> - lwz r3,_UC_VREGS+(28*4)(r31)
> - evmergelo r28,r3,r28
> - lwz r3,_UC_VREGS+(29*4)(r31)
> - evmergelo r29,r3,r29
> - lwz r3,_UC_VREGS+(30*4)(r31)
> - evmergelo r30,r3,r30
> - lwz r3,_UC_VREGS+(31*4)(r31)
> - evmergelo r31,r3,r31
> - lwz r3,_UC_VREGS+(34*4)(r31)
> - mtspefscr r3
> -.endm
> -#else
> -# undef __CONTEXT_ENABLE_E500
> -#endif
> -
> -#endif /* context-e500.h */
Ok.
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S
> index 7a0aa934d1..fc7bbf561f 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S
> @@ -24,8 +24,6 @@
> #include <asm/ptrace.h>
> #include "ucontext_i.h"
>
> -#include <context-e500.h>
> -
> #define __CONTEXT_FUNC_NAME __getcontext
> #undef __CONTEXT_ENABLE_FPRS
> #undef __CONTEXT_ENABLE_VRS
Ok.
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S
> index 0f798fd1fb..01ee68aa5a 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S
> @@ -24,8 +24,6 @@
> #include <asm/ptrace.h>
> #include "ucontext_i.h"
>
> -#include <context-e500.h>
> -
> #define __CONTEXT_FUNC_NAME __setcontext
> #undef __CONTEXT_ENABLE_FPRS
> #undef __CONTEXT_ENABLE_VRS
Ok.
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S
> index fb34390127..3e775be6b6 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S
> @@ -24,8 +24,6 @@
> #include <asm/ptrace.h>
> #include "ucontext_i.h"
>
> -#include <context-e500.h>
> -
> #define __CONTEXT_FUNC_NAME __swapcontext
> #undef __CONTEXT_ENABLE_FPRS
> #undef __CONTEXT_ENABLE_VRS
Ok.
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S
> index 47235dd0cb..b370391863 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S
> @@ -228,10 +228,6 @@ ENTRY(__CONTEXT_FUNC_NAME)
> lfd fp31,_UC_FREGS+(31*8)(r31)
> #endif /* __CONTEXT_ENABLE_FPRS */
>
> -#ifdef __CONTEXT_ENABLE_E500
> - setcontext_e500
> -#endif
> -
> /* Restore LR and CCR, and set CTR to the NIP value */
> lwz r3,_UC_GREGS+(PT_LNK*4)(r31)
> lwz r4,_UC_GREGS+(PT_NIP*4)(r31)
Ok.
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S
> index e0fd249615..efebb10bba 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S
> @@ -265,10 +265,6 @@ ENTRY(__CONTEXT_FUNC_NAME)
> # endif /* __CONTEXT_ENABLE_VRS */
> #endif /* __CONTEXT_ENABLE_FPRS */
>
> -#ifdef __CONTEXT_ENABLE_E500
> - getcontext_e500
> -#endif
> -
> /* Restore ucontext (parm1) from stack. */
> lwz r12,_FRAME_PARM_SAVE1(r1)
> lwz r4,_FRAME_PARM_SAVE2(r1)
> @@ -451,10 +447,6 @@ ENTRY(__CONTEXT_FUNC_NAME)
> lfd fp31,_UC_FREGS+(31*8)(r31)
> #endif /* __CONTEXT_ENABLE_FPRS */
>
> -#ifdef __CONTEXT_ENABLE_E500
> - setcontext_e500
> -#endif
> -
> /* Restore LR and CCR, and set CTR to the NIP value */
> lwz r3,_UC_GREGS+(PT_LNK*4)(r31)
> lwz r4,_UC_GREGS+(PT_NIP*4)(r31)
>
Ok.