Remove support for PowerPC e500 / SPE ISA extension.
diff mbox series

Message ID 20190516175456.23205-1-zackw@panix.com
State New
Headers show
Series
  • Remove support for PowerPC e500 / SPE ISA extension.
Related show

Commit Message

Zack Weinberg May 16, 2019, 5:54 p.m. UTC
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).

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

Comments

Adhemerval Zanella May 16, 2019, 6:51 p.m. UTC | #1
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.
Zack Weinberg May 16, 2019, 7:22 p.m. UTC | #2
On Thu, May 16, 2019 at 2:51 PM, Adhemerval Zanella
<adhemerval.zanella@linaro.org> wrote:
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.
>
> 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.

Thanks for the review.  I will wait to hear the results of your sanity
check before pushing.

> > 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.

OK, I will make that change.

> > 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.

I relied on the SPE ifdefs in sysdeps/powerpc/powerpc32/__longjmp-common.S
(which are removed by this patch) in writing this one.  If the PowerPC
maintainers would like to have a different construct I am happy to change it.

> > +      # 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.

I forgot that as_fn_error exists.  It's not documented, and its
calling convention is weird, but it does copy the failure message into
config.log, which is important for forensics.  How about I remove the
stars for now, as neither as_fn_error nor the existing direct messages
use them, and we discuss separately a patch to change all preconfigure
scripts to use as_fn_error, perhaps consulting the Autoconf maintainers?

zw
Segher Boessenkool May 16, 2019, 7:59 p.m. UTC | #3
On Thu, May 16, 2019 at 01:54:56PM -0400, Zack Weinberg wrote:
> GCC 9 dropped support for the e500 variation of PowerPC, so I suggest
> we should follow suit.

It didn't.  It removed support for the SPE vector extensions only.

It works in powerpc*-*-linux* the same as it always has.  If you try
to build GCC for a powerpc*-*-*spe* configuration it will tell you
that is unsupported, to prevent surprises (it would just use a non-SPE
config, otherwise, not likely what a user wants).

In glibc, e500 might be pretty much equal to SPE, of course.  But for
GCC it is not -- it is just another CPU.


Segher
Joseph Myers May 16, 2019, 8:24 p.m. UTC | #4
On Thu, 16 May 2019, Segher Boessenkool wrote:

> It didn't.  It removed support for the SPE vector extensions only.

And -mfloat-gprs=*, which goes along with them (support for having one but 
not the other in GCC was always more or less theoretical and tended to 
produce strangely broken ABIs if you tried such option combinations, 
especially -mfloat-gprs=* without -mabi=spe).

> In glibc, e500 might be pretty much equal to SPE, of course.

The support in glibc was both for the 64-bit registers, in functions such 
as setjmp/longjmp, and for the (scalar) e500 FPU (which has many 
peculiarities, including at least one documented erratum resulting in some 
glibc tests failing with wrong signs of zero results, at least one 
undocumented issue resulting in wrong exceptions in certain cases without 
kernel trap handlers being called to fix things up, and at least one 
design issue in the interface to trap handlers meaning that for certain 
instructions the kernel simply doesn't always have the information 
available in trap handlers to be able to fix up results for IEEE 
semantics).  The vector extensions themselves aren't of much relevance to 
glibc.

The ABI in the glibc port was, by design, the same ABI as for non-e500 
soft-float (same symbols and symbol versions, same function-calling ABI, 
same FE_* constants - which soft-float takes from classic hard-float - 
complete with logic to map between those and the different layout used in 
the SPEFSCR), so a program built for e500 and not relying on the hardware 
floating-point environment should be able to run with a normal soft-float 
glibc.

(Aldy's old SPE add-on c. 2003/4 did have some extra functions and ABI 
differences, but those weren't in the support integrated into glibc.)
Segher Boessenkool May 16, 2019, 9:12 p.m. UTC | #5
Hi Joseph,

On Thu, May 16, 2019 at 08:24:02PM +0000, Joseph Myers wrote:
> On Thu, 16 May 2019, Segher Boessenkool wrote:
> > It didn't.  It removed support for the SPE vector extensions only.
> 
> And -mfloat-gprs=*, which goes along with them

I meant ISA extension.  But yes, all the more user-facing stuff was
removed as well of course.  I didn't phrase that very well, sorry.

> (support for having one but 
> not the other in GCC was always more or less theoretical and tended to 
> produce strangely broken ABIs if you tried such option combinations, 
> especially -mfloat-gprs=* without -mabi=spe).

Yup.

> > In glibc, e500 might be pretty much equal to SPE, of course.
> 
> The support in glibc was both for the 64-bit registers, in functions such 
> as setjmp/longjmp, and for the (scalar) e500 FPU

[ snip ]

Thanks for the explanation!


Segher
Zack Weinberg May 16, 2019, 11:57 p.m. UTC | #6
On Thu, May 16, 2019 at 5:12 PM Segher Boessenkool
<segher@kernel.crashing.org> wrote:
> On Thu, May 16, 2019 at 08:24:02PM +0000, Joseph Myers wrote:
> > On Thu, 16 May 2019, Segher Boessenkool wrote:
> > > It didn't.  It removed support for the SPE vector extensions only.
> >
> > And -mfloat-gprs=*, which goes along with them
>
> I meant ISA extension.  But yes, all the more user-facing stuff was
> removed as well of course.  I didn't phrase that very well, sorry.

It was my intention to remove only the code within glibc that was
required for powerpc-*-*gnuspe* configurations.  I'm not super
familiar with the ins and outs of PowerPC, though, so I could easily
have gotten something wrong.  I'm particularly worried about
sysdeps/powerpc/preconfigure, which was using predefined macros, not
$host_os, to decide whether to enable the "e500" sysdeps directories:

> -  $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

If __NO_FPRS__ might ever be defined, without _SOFT_FLOAT also being
defined, on a plain powerpc-*-*gnu configuration, then this change is
wrong.

zw
Segher Boessenkool May 17, 2019, 12:54 a.m. UTC | #7
On Thu, May 16, 2019 at 07:57:59PM -0400, Zack Weinberg wrote:
> I'm particularly worried about
> sysdeps/powerpc/preconfigure, which was using predefined macros, not
> $host_os, to decide whether to enable the "e500" sysdeps directories:
> 
> > -  $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
> 
> If __NO_FPRS__ might ever be defined, without _SOFT_FLOAT also being
> defined, on a plain powerpc-*-*gnu configuration, then this change is
> wrong.

From rs6000-c.c:

  if (TARGET_SOFT_FLOAT)
    builtin_define ("__NO_FPRS__");

and

  if ((flags & OPTION_MASK_SOFT_FLOAT) != 0)
    rs6000_define_or_undefine_macro (define_p, "_SOFT_FLOAT");

(with flags equal to rs6000_isa_flags normally; it can be changed with
#pragma target), while we have

#define TARGET_SOFT_FLOAT ((rs6000_isa_flags & OPTION_MASK_SOFT_FLOAT) != 0)


It is fine afaics.


Segher
Zack Weinberg May 21, 2019, 6:22 p.m. UTC | #8
On Thu, May 16, 2019 at 3:22 PM Zack Weinberg <zackw@panix.com> wrote:
> On Thu, May 16, 2019 at 2:51 PM, Adhemerval Zanella
> <adhemerval.zanella@linaro.org> wrote:
> 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.
> >
> > 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.
>
> Thanks for the review.  I will wait to hear the results of your sanity
> check before pushing.

Did you get around to doing this sanity check?

zw
Adhemerval Zanella May 21, 2019, 6:51 p.m. UTC | #9
On 21/05/2019 15:22, Zack Weinberg wrote:
> On Thu, May 16, 2019 at 3:22 PM Zack Weinberg <zackw@panix.com> wrote:
>> On Thu, May 16, 2019 at 2:51 PM, Adhemerval Zanella
>> <adhemerval.zanella@linaro.org> wrote:
>> 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.
>>>
>>> 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.
>>
>> Thanks for the review.  I will wait to hear the results of your sanity
>> check before pushing.
> 
> Did you get around to doing this sanity check?

I saw no regressions on powerpc64le-linux-gnu, powerpc64-linux-gnu,
powerpc-linux-gnu, and powerpc-linux-gnu-power4.  However, like you
I hit the same issue with powerpc-linux-gnu-soft configuration build
with hard float (link failures). I did not dig into yet.

Patch
diff mbox series

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.
+
 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
+
 #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..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
+    ;;
+  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);
 }
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);
 }
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;
 }
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
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 */
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
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
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
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)
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)