[v2] Use flexible target descriptors for Linux PowerPC

Message ID 20200703190321.156086-1-rcardoso@linux.ibm.com
State New
Headers show
Series
  • [v2] Use flexible target descriptors for Linux PowerPC
Related show

Commit Message

Kevin Buettner via Gdb-patches July 3, 2020, 7:03 p.m.
Use flexible target descriptors for Linux PowerPC. This allows a fine-tune
selection of avalible target CPU features por POWER.

gdb/Changelog:

YYYY-MM-DD  Rogerio A. Cardoso  <rcardoso@linux.ibm.com>

	* ppc-linux-nat.c: Remove include arch/ppc-linux-tdesc.h.
	(read_description): Create flexible tdesc with
	ppc_create_target_description.
	* ppc-linux-tdep.c (_initialize_ppc_linux_tdep): Remove old
	target description initializations.  Remove includes from
	old target descriptions.
	(ppc_linux_core_read_description): Add new powerpc features
	check to enable avaliable cpu features.
	* target-descriptions.c (maint_print_c_tdesc_cmd): Add rs6000/
	to features list.
	* arch/ppc-linux-common.h: Include "gdbsupport/tdesc.h".
	(struct ppc_linux_features) <dscr, ebb, fpscr, pmu, ppr,
	struct htm, oea, tar>: New fields.
	(struct ppc_linux_features) <isa205, isa207,
	ppr_dscr>: Removed fields.
	(struct target_desc): Remove declaration.
	(ppc_linux_no_features): Initialize new fields.
	(ppc_linux_has_isa205): Rename to ppc_linux_has_isa205. Comment
	changed.
	(ppc_linux_match_description): Rename to
	ppc_create_target_description.
	* arch/ppc-linux-common.c: Remove include arch/ppc-linux-tdesc.h.
	Include rs6000/ features *.c files.
	(ppc_create_target_description): New function.
	(ppc_linux_match_description): Rename to
	ppc_create_target_description. Add new checks to cpu features.
	(ppc_linux_has_isa205): Rename to ppc_linux_has_fpscr64.
	* arch/ppc-linux-tdesc.h: Remove file.
	* features/Makefile: Add rs6000-feature.
	(WHICH): Remove rs6000/powerpc-*l files.
	(XMLTOC): Remove rs6000/powerpc-*l files.
	(FEATURE_XMLFILES): Add rs6000/power-*.xml features.
	* features/rs6000/powerpc-32l.xml: Remove file.
	* features/rs6000/powerpc-64l.xml: Remove file.
	* features/rs6000/powerpc-altivec32l.xml: Remove file.
	* features/rs6000/powerpc-altivec64l.xml: Remove file.
	* features/rs6000/powerpc-e500l.xml: Remove file.
	* features/rs6000/powerpc-isa205-32l.xml: Remove file.
	* features/rs6000/powerpc-isa205-64l.xml: Remove file.
	* features/rs6000/powerpc-isa205-altivec32l.xml: Remove file.
	* features/rs6000/powerpc-isa205-altivec64l.xml: Remove file.
	* features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.xml: Remove file.
	* features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.xml: Remove file.
	* features/rs6000/powerpc-isa205-vsx32l.xml: Remove file.
	* features/rs6000/powerpc-isa205-vsx64l.xml: Remove file.
	* features/rs6000/powerpc-isa207-htm-vsx32l.xml: Remove file.
	* features/rs6000/powerpc-isa207-htm-vsx64l.xml: Remove file.
	* features/rs6000/powerpc-isa207-vsx32l.xml: Remove file.
	* features/rs6000/powerpc-isa207-vsx64l.xml: Remove file.
	* features/rs6000/powerpc-vsx32l.xml: Remove file.
	* features/rs6000/powerpc-vsx64l.xml: Remove file.
	* features/rs6000/powerpc-32l.c: Remove file.
	* features/rs6000/powerpc-64l.c: Remove file.
	* features/rs6000/powerpc-altivec32l.c: Remove file.
	* features/rs6000/powerpc-altivec64l.c: Remove file.
	* features/rs6000/powerpc-e500l.c: Remove file.
	* features/rs6000/powerpc-isa205-32l.c: Remove file.
	* features/rs6000/powerpc-isa205-64l.c: Remove file.
	* features/rs6000/powerpc-isa205-altivec32l.c: Remove file.
	* features/rs6000/powerpc-isa205-altivec64l.c: Remove file.
	* features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c: Remove file.
	* features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c: Remove file.
	* features/rs6000/powerpc-isa205-vsx32l.c: Remove file.
	* features/rs6000/powerpc-isa205-vsx64l.c: Remove file.
	* features/rs6000/powerpc-isa207-htm-vsx32l.c: Remove file.
	* features/rs6000/powerpc-isa207-htm-vsx64l.c: Remove file.
	* features/rs6000/powerpc-isa207-vsx32l.c: Remove file.
	* features/rs6000/powerpc-isa207-vsx64l.c: Remove file.
	* features/rs6000/powerpc-vsx32l.c: Remove file.
	* features/rs6000/powerpc-vsx64l.c: Remove file.
	* features/rs6000/power-fpu-isa205.xml: Renamed to
	(power-fpu-fpscr64.xml).
	* features/rs6000/power-altivec.c: New generated file.
	* features/rs6000/power-core.c: New generated file.
	* features/rs6000/power-dscr.c: New generated file.
	* features/rs6000/power-ebb.c: New generated file.
	* features/rs6000/power-fpu-fpscr64.c: New generated file.
	* features/rs6000/power-fpu.c: New generated file.
	* features/rs6000/power-htm-altivec.c: New generated file.
	* features/rs6000/power-htm-core.c: New generated file.
	* features/rs6000/power-htm-dscr.c: New generated file.
	* features/rs6000/power-htm-fpu.c: New generated file.
	* features/rs6000/power-htm-ppr.c: New generated file.
	* features/rs6000/power-htm-spr.c: New generated file.
	* features/rs6000/power-htm-tar.c: New generated file.
	* features/rs6000/power-htm-vsx.c: New generated file.
	* features/rs6000/power-linux-pmu.c: New generated file.
	* features/rs6000/power-linux.c: New generated file.
	* features/rs6000/power-oea.c: New generated file.
	* features/rs6000/power-ppr.c: New generated file.
	* features/rs6000/power-spe.c: New generated file.
	* features/rs6000/power-tar.c: New generated file.
	* features/rs6000/power-vsx.c: New generated file.
	* regformats/rs6000/powerpc-32l.dat: Remove file.
	* regformats/rs6000/powerpc-64l.dat: Remove file.
	* regformats/rs6000/powerpc-altivec32l.dat: Remove file.
	* regformats/rs6000/powerpc-altivec64l.dat: Remove file.
	* regformats/rs6000/powerpc-e500l.dat: Remove file.
	* regformats/rs6000/powerpc-isa205-32l.dat: Remove file.
	* regformats/rs6000/powerpc-isa205-64l.dat: Remove file.
	* regformats/rs6000/powerpc-isa205-altivec32l.dat: Remove file.
	* regformats/rs6000/powerpc-isa205-altivec64l.dat: Remove file.
	* regformats/rs6000/powerpc-isa205-ppr-dscr-vsx32l.dat: Remove
	file.
	* regformats/rs6000/powerpc-isa205-ppr-dscr-vsx64l.dat: Remove
	file.
	* regformats/rs6000/powerpc-isa205-vsx32l.dat: Remove file.
	* regformats/rs6000/powerpc-isa205-vsx64l.dat: Remove file.
	* regformats/rs6000/powerpc-isa207-htm-vsx32l.dat: Remove file.
	* regformats/rs6000/powerpc-isa207-htm-vsx64l.dat: Remove file.
	* regformats/rs6000/powerpc-isa207-vsx32l.dat: Remove file.
	* regformats/rs6000/powerpc-isa207-vsx64l.dat: Remove file.
	* regformats/rs6000/powerpc-vsx32l.dat: Remove file.
	* regformats/rs6000/powerpc-vsx64l.dat: Remove file.

gdbserver/Changelog:

YYYY-MM-DD  Rogerio A. Cardoso  <rcardoso@linux.ibm.com>

	* configure.srv: (powerpc*-*-linux*): Remove all srv_regobj.
	Remove rs6000/powerpc-*l.xml from srv_xmlfiles.
	Add linux-ppc-tdesc.o srv_tgtobj.  Add linux-ppc-tdesc-ipa.o
	and arch/ppc-linux-common-ipa.o to ipa_obj.
	* linux-ppc-tdesc-init.h: Remove file.
	* linux-ppc-tdesc.h: New file.
	* linux-ppc-tdesc.cc: New file.
	* linux-ppc-ipa.cc: Remove include linux-ppc-tdesc-init.h.
	(get_ipa_tdesc): Remove old static tdesc selections.  Return
	ppc_linux_read_description.
	(initialize_low_tracepoint): Remove registers initializations.
	Return ppc_linux_read_description.
	* linux-ppc-low.cc: Remove include linux-ppc-tdesc-init.h.
	(ppc_arch_setup): Replace ppc_linux_match_description to
	ppc_create_target_description.  Add new features check.
---
 gdb/arch/ppc-linux-common.c                   | 135 ++++--
 gdb/arch/ppc-linux-common.h                   |  47 ++-
 gdb/arch/ppc-linux-tdesc.h                    |  46 --
 gdb/features/Makefile                         |  54 ++-
 gdb/features/rs6000/power-altivec.c           |  74 ++++
 gdb/features/rs6000/power-core.c              |  52 +++
 gdb/features/rs6000/power-dscr.c              |  14 +
 gdb/features/rs6000/power-ebb.c               |  16 +
 gdb/features/rs6000/power-fpu-fpscr64.c       |  48 +++
 ...r-fpu-isa205.xml => power-fpu-fpscr64.xml} |   0
 gdb/features/rs6000/power-fpu.c               |  48 +++
 gdb/features/rs6000/power-htm-altivec.c       |  74 ++++
 gdb/features/rs6000/power-htm-core.c          |  49 +++
 gdb/features/rs6000/power-htm-dscr.c          |  14 +
 gdb/features/rs6000/power-htm-fpu.c           |  46 ++
 gdb/features/rs6000/power-htm-ppr.c           |  14 +
 gdb/features/rs6000/power-htm-spr.c           |  16 +
 gdb/features/rs6000/power-htm-tar.c           |  14 +
 gdb/features/rs6000/power-htm-vsx.c           |  45 ++
 gdb/features/rs6000/power-linux-pmu.c         |  18 +
 gdb/features/rs6000/power-linux.c             |  16 +
 gdb/features/rs6000/power-oea.c               |  62 +++
 gdb/features/rs6000/power-ppr.c               |  14 +
 gdb/features/rs6000/power-spe.c               |  49 +++
 gdb/features/rs6000/power-tar.c               |  14 +
 gdb/features/rs6000/power-vsx.c               |  45 ++
 gdb/features/rs6000/powerpc-32l.c             |  97 -----
 gdb/features/rs6000/powerpc-32l.xml           |  17 -
 gdb/features/rs6000/powerpc-64l.c             |  97 -----
 gdb/features/rs6000/powerpc-64l.xml           |  17 -
 gdb/features/rs6000/powerpc-altivec32l.c      | 160 -------
 gdb/features/rs6000/powerpc-altivec32l.xml    |  19 -
 gdb/features/rs6000/powerpc-altivec64l.c      | 160 -------
 gdb/features/rs6000/powerpc-altivec64l.xml    |  19 -
 gdb/features/rs6000/powerpc-e500l.c           |  98 -----
 gdb/features/rs6000/powerpc-e500l.xml         |  14 -
 gdb/features/rs6000/powerpc-isa205-32l.c      |  97 -----
 gdb/features/rs6000/powerpc-isa205-32l.xml    |  17 -
 gdb/features/rs6000/powerpc-isa205-64l.c      |  97 -----
 gdb/features/rs6000/powerpc-isa205-64l.xml    |  17 -
 .../rs6000/powerpc-isa205-altivec32l.c        | 160 -------
 .../rs6000/powerpc-isa205-altivec32l.xml      |  19 -
 .../rs6000/powerpc-isa205-altivec64l.c        | 160 -------
 .../rs6000/powerpc-isa205-altivec64l.xml      |  19 -
 .../rs6000/powerpc-isa205-ppr-dscr-vsx32l.c   | 200 ---------
 .../rs6000/powerpc-isa205-ppr-dscr-vsx32l.xml |  18 -
 .../rs6000/powerpc-isa205-ppr-dscr-vsx64l.c   | 200 ---------
 .../rs6000/powerpc-isa205-ppr-dscr-vsx64l.xml |  18 -
 gdb/features/rs6000/powerpc-isa205-vsx32l.c   | 194 ---------
 gdb/features/rs6000/powerpc-isa205-vsx32l.xml |  20 -
 gdb/features/rs6000/powerpc-isa205-vsx64l.c   | 194 ---------
 gdb/features/rs6000/powerpc-isa205-vsx64l.xml |  20 -
 .../rs6000/powerpc-isa207-htm-vsx32l.c        | 396 ------------------
 .../rs6000/powerpc-isa207-htm-vsx32l.xml      |  29 --
 .../rs6000/powerpc-isa207-htm-vsx64l.c        | 396 ------------------
 .../rs6000/powerpc-isa207-htm-vsx64l.xml      |  29 --
 gdb/features/rs6000/powerpc-isa207-vsx32l.c   | 215 ----------
 gdb/features/rs6000/powerpc-isa207-vsx32l.xml |  21 -
 gdb/features/rs6000/powerpc-isa207-vsx64l.c   | 215 ----------
 gdb/features/rs6000/powerpc-isa207-vsx64l.xml |  21 -
 gdb/features/rs6000/powerpc-vsx32l.c          | 194 ---------
 gdb/features/rs6000/powerpc-vsx32l.xml        |  20 -
 gdb/features/rs6000/powerpc-vsx64l.c          | 194 ---------
 gdb/features/rs6000/powerpc-vsx64l.xml        |  20 -
 gdb/ppc-linux-nat.c                           |  73 +++-
 gdb/ppc-linux-tdep.c                          | 105 +++--
 gdb/regformats/rs6000/powerpc-32l.dat         |  78 ----
 gdb/regformats/rs6000/powerpc-64l.dat         |  78 ----
 gdb/regformats/rs6000/powerpc-altivec32l.dat  | 112 -----
 gdb/regformats/rs6000/powerpc-altivec64l.dat  | 112 -----
 gdb/regformats/rs6000/powerpc-e500l.dat       |  80 ----
 gdb/regformats/rs6000/powerpc-isa205-32l.dat  |  78 ----
 gdb/regformats/rs6000/powerpc-isa205-64l.dat  |  78 ----
 .../rs6000/powerpc-isa205-altivec32l.dat      | 112 -----
 .../rs6000/powerpc-isa205-altivec64l.dat      | 112 -----
 .../rs6000/powerpc-isa205-ppr-dscr-vsx32l.dat | 146 -------
 .../rs6000/powerpc-isa205-ppr-dscr-vsx64l.dat | 146 -------
 .../rs6000/powerpc-isa205-vsx32l.dat          | 144 -------
 .../rs6000/powerpc-isa205-vsx64l.dat          | 144 -------
 .../rs6000/powerpc-isa207-htm-vsx32l.dat      | 296 -------------
 .../rs6000/powerpc-isa207-htm-vsx64l.dat      | 296 -------------
 .../rs6000/powerpc-isa207-vsx32l.dat          | 155 -------
 .../rs6000/powerpc-isa207-vsx64l.dat          | 155 -------
 gdb/regformats/rs6000/powerpc-vsx32l.dat      | 144 -------
 gdb/regformats/rs6000/powerpc-vsx64l.dat      | 144 -------
 gdb/target-descriptions.c                     |   3 +-
 gdbserver/configure.srv                       |  45 +-
 gdbserver/linux-ppc-ipa.cc                    |  88 +---
 gdbserver/linux-ppc-low.cc                    |  41 +-
 gdbserver/linux-ppc-tdesc-init.h              | 106 -----
 gdbserver/linux-ppc-tdesc.cc                  |  47 +++
 gdbserver/linux-ppc-tdesc.h                   |  21 +
 92 files changed, 1116 insertions(+), 6945 deletions(-)
 delete mode 100644 gdb/arch/ppc-linux-tdesc.h
 create mode 100644 gdb/features/rs6000/power-altivec.c
 create mode 100644 gdb/features/rs6000/power-core.c
 create mode 100644 gdb/features/rs6000/power-dscr.c
 create mode 100644 gdb/features/rs6000/power-ebb.c
 create mode 100644 gdb/features/rs6000/power-fpu-fpscr64.c
 rename gdb/features/rs6000/{power-fpu-isa205.xml => power-fpu-fpscr64.xml} (100%)
 create mode 100644 gdb/features/rs6000/power-fpu.c
 create mode 100644 gdb/features/rs6000/power-htm-altivec.c
 create mode 100644 gdb/features/rs6000/power-htm-core.c
 create mode 100644 gdb/features/rs6000/power-htm-dscr.c
 create mode 100644 gdb/features/rs6000/power-htm-fpu.c
 create mode 100644 gdb/features/rs6000/power-htm-ppr.c
 create mode 100644 gdb/features/rs6000/power-htm-spr.c
 create mode 100644 gdb/features/rs6000/power-htm-tar.c
 create mode 100644 gdb/features/rs6000/power-htm-vsx.c
 create mode 100644 gdb/features/rs6000/power-linux-pmu.c
 create mode 100644 gdb/features/rs6000/power-linux.c
 create mode 100644 gdb/features/rs6000/power-oea.c
 create mode 100644 gdb/features/rs6000/power-ppr.c
 create mode 100644 gdb/features/rs6000/power-spe.c
 create mode 100644 gdb/features/rs6000/power-tar.c
 create mode 100644 gdb/features/rs6000/power-vsx.c
 delete mode 100644 gdb/features/rs6000/powerpc-32l.c
 delete mode 100644 gdb/features/rs6000/powerpc-32l.xml
 delete mode 100644 gdb/features/rs6000/powerpc-64l.c
 delete mode 100644 gdb/features/rs6000/powerpc-64l.xml
 delete mode 100644 gdb/features/rs6000/powerpc-altivec32l.c
 delete mode 100644 gdb/features/rs6000/powerpc-altivec32l.xml
 delete mode 100644 gdb/features/rs6000/powerpc-altivec64l.c
 delete mode 100644 gdb/features/rs6000/powerpc-altivec64l.xml
 delete mode 100644 gdb/features/rs6000/powerpc-e500l.c
 delete mode 100644 gdb/features/rs6000/powerpc-e500l.xml
 delete mode 100644 gdb/features/rs6000/powerpc-isa205-32l.c
 delete mode 100644 gdb/features/rs6000/powerpc-isa205-32l.xml
 delete mode 100644 gdb/features/rs6000/powerpc-isa205-64l.c
 delete mode 100644 gdb/features/rs6000/powerpc-isa205-64l.xml
 delete mode 100644 gdb/features/rs6000/powerpc-isa205-altivec32l.c
 delete mode 100644 gdb/features/rs6000/powerpc-isa205-altivec32l.xml
 delete mode 100644 gdb/features/rs6000/powerpc-isa205-altivec64l.c
 delete mode 100644 gdb/features/rs6000/powerpc-isa205-altivec64l.xml
 delete mode 100644 gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c
 delete mode 100644 gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.xml
 delete mode 100644 gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c
 delete mode 100644 gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.xml
 delete mode 100644 gdb/features/rs6000/powerpc-isa205-vsx32l.c
 delete mode 100644 gdb/features/rs6000/powerpc-isa205-vsx32l.xml
 delete mode 100644 gdb/features/rs6000/powerpc-isa205-vsx64l.c
 delete mode 100644 gdb/features/rs6000/powerpc-isa205-vsx64l.xml
 delete mode 100644 gdb/features/rs6000/powerpc-isa207-htm-vsx32l.c
 delete mode 100644 gdb/features/rs6000/powerpc-isa207-htm-vsx32l.xml
 delete mode 100644 gdb/features/rs6000/powerpc-isa207-htm-vsx64l.c
 delete mode 100644 gdb/features/rs6000/powerpc-isa207-htm-vsx64l.xml
 delete mode 100644 gdb/features/rs6000/powerpc-isa207-vsx32l.c
 delete mode 100644 gdb/features/rs6000/powerpc-isa207-vsx32l.xml
 delete mode 100644 gdb/features/rs6000/powerpc-isa207-vsx64l.c
 delete mode 100644 gdb/features/rs6000/powerpc-isa207-vsx64l.xml
 delete mode 100644 gdb/features/rs6000/powerpc-vsx32l.c
 delete mode 100644 gdb/features/rs6000/powerpc-vsx32l.xml
 delete mode 100644 gdb/features/rs6000/powerpc-vsx64l.c
 delete mode 100644 gdb/features/rs6000/powerpc-vsx64l.xml
 delete mode 100644 gdb/regformats/rs6000/powerpc-32l.dat
 delete mode 100644 gdb/regformats/rs6000/powerpc-64l.dat
 delete mode 100644 gdb/regformats/rs6000/powerpc-altivec32l.dat
 delete mode 100644 gdb/regformats/rs6000/powerpc-altivec64l.dat
 delete mode 100644 gdb/regformats/rs6000/powerpc-e500l.dat
 delete mode 100644 gdb/regformats/rs6000/powerpc-isa205-32l.dat
 delete mode 100644 gdb/regformats/rs6000/powerpc-isa205-64l.dat
 delete mode 100644 gdb/regformats/rs6000/powerpc-isa205-altivec32l.dat
 delete mode 100644 gdb/regformats/rs6000/powerpc-isa205-altivec64l.dat
 delete mode 100644 gdb/regformats/rs6000/powerpc-isa205-ppr-dscr-vsx32l.dat
 delete mode 100644 gdb/regformats/rs6000/powerpc-isa205-ppr-dscr-vsx64l.dat
 delete mode 100644 gdb/regformats/rs6000/powerpc-isa205-vsx32l.dat
 delete mode 100644 gdb/regformats/rs6000/powerpc-isa205-vsx64l.dat
 delete mode 100644 gdb/regformats/rs6000/powerpc-isa207-htm-vsx32l.dat
 delete mode 100644 gdb/regformats/rs6000/powerpc-isa207-htm-vsx64l.dat
 delete mode 100644 gdb/regformats/rs6000/powerpc-isa207-vsx32l.dat
 delete mode 100644 gdb/regformats/rs6000/powerpc-isa207-vsx64l.dat
 delete mode 100644 gdb/regformats/rs6000/powerpc-vsx32l.dat
 delete mode 100644 gdb/regformats/rs6000/powerpc-vsx64l.dat
 delete mode 100644 gdbserver/linux-ppc-tdesc-init.h
 create mode 100644 gdbserver/linux-ppc-tdesc.cc
 create mode 100644 gdbserver/linux-ppc-tdesc.h

-- 
2.17.1

Comments

Kevin Buettner via Gdb-patches July 9, 2020, 3:48 p.m. | #1
On Fri, Jul 03, 2020 at 04:03:21PM -0300, Rogerio Alves wrote:
> Use flexible target descriptors for Linux PowerPC. This allows a fine-tune

> selection of avalible target CPU features por POWER.


Thanks for working on this!

> diff --git a/gdb/arch/ppc-linux-common.c b/gdb/arch/ppc-linux-common.c

> index 183fc03395..36e2319a7f 100644

> --- a/gdb/arch/ppc-linux-common.c

> +++ b/gdb/arch/ppc-linux-common.c

> -const struct target_desc *

> -ppc_linux_match_description (struct ppc_linux_features features)

> +const target_desc *

> +ppc_create_target_description (struct ppc_linux_features features)


So you've renamed it from a name including "linux" to one without,
while the function is still actually Linux-specific.  Is this a
good idea?

[ I guess a separate question is whether we shouldn't also switch
all other powerpc targets to the new method ... ]

>  {

> -  struct target_desc *tdesc = NULL;

> +  target_desc *tdesc = allocate_target_description ();

> +  long regnum = 0;

>  

>    if (features.wordsize == 8)

>      {

> -      if (features.vsx)

> -	tdesc = (features.htm? tdesc_powerpc_isa207_htm_vsx64l

> -		 : features.isa207? tdesc_powerpc_isa207_vsx64l

> -		 : features.ppr_dscr? tdesc_powerpc_isa205_ppr_dscr_vsx64l

> -		 : features.isa205? tdesc_powerpc_isa205_vsx64l

> -		 : tdesc_powerpc_vsx64l);

> -      else if (features.altivec)

> -	tdesc = (features.isa205? tdesc_powerpc_isa205_altivec64l

> -		 : tdesc_powerpc_altivec64l);

> -      else

> -	tdesc = (features.isa205? tdesc_powerpc_isa205_64l

> -		 : tdesc_powerpc_64l);

> +      #ifndef IN_PROCESS_AGENT

> +	set_tdesc_architecture (tdesc, "power:common64");


Do we need to call set_tdesc_osabi here like is done for other targets?

> index cc65baa6ed..3140eeb00c 100644

> --- a/gdb/features/Makefile

> +++ b/gdb/features/Makefile

> @@ -51,17 +51,6 @@ WHICH = arm/arm-with-iwmmxt arm/arm-with-vfpv2 arm/arm-with-vfpv3 \

>  	mips64-linux mips64-dsp-linux \

>  	nios2-linux \

>  	rs6000/powerpc-32 \


It seems to me that this file is actually unused as well, so we can really
remove all the rs6000 regformats files then.  (Including the special Makefile
rule associated with them.)

Talking about removed regformats files: did you verify that the new code still
uses the same layout of the register packets, e.g. by running a new gdb against
an old gdbserver and vice versa?

> diff --git a/gdbserver/configure.srv b/gdbserver/configure.srv

> index 9a027e44af..0ff094d32c 100644

> --- a/gdbserver/configure.srv

> +++ b/gdbserver/configure.srv


> -  powerpc*-*-linux*)	srv_regobj="powerpc-32l.o"


Should we now use
  srv_regobj=""
like the other targets do?

>  			ipa_obj="${ipa_ppc_linux_regobj} linux-ppc-ipa.o"

> +			ipa_obj="${ipa_obj} linux-ppc-tdesc-ipa.o"

> +			ipa_obj="${ipa_obj} arch/ppc-linux-common-ipa.o"


I believe we now no longer need ${ipa_ppc_linux_regobj}, right?

> --- a/gdbserver/linux-ppc-ipa.cc

> +++ b/gdbserver/linux-ppc-ipa.cc

> @@ -22,7 +22,6 @@

>  #include <sys/mman.h>

>  #include "tracepoint.h"

>  #include "arch/ppc-linux-tdesc.h"


Wasn't that file deleted?  How does this still build?  Or am I
missing something here ...

> @@ -174,58 +173,12 @@ alloc_jump_pad_buffer (size_t size)

>  const struct target_desc *

>  get_ipa_tdesc (int idx)

>  {

> -  switch (idx)

> -    {

> -#ifdef __powerpc64__

> -    case PPC_TDESC_BASE:

> -      return tdesc_powerpc_64l;

> -    case PPC_TDESC_ALTIVEC:

> -      return tdesc_powerpc_altivec64l;

> -    case PPC_TDESC_VSX:

> -      return tdesc_powerpc_vsx64l;

> -    case PPC_TDESC_ISA205:

> -      return tdesc_powerpc_isa205_64l;

> -    case PPC_TDESC_ISA205_ALTIVEC:

> -      return tdesc_powerpc_isa205_altivec64l;

> -    case PPC_TDESC_ISA205_VSX:

> -      return tdesc_powerpc_isa205_vsx64l;

> -    case PPC_TDESC_ISA205_PPR_DSCR_VSX:

> -      return tdesc_powerpc_isa205_ppr_dscr_vsx64l;

> -    case PPC_TDESC_ISA207_VSX:

> -      return tdesc_powerpc_isa207_vsx64l;

> -    case PPC_TDESC_ISA207_HTM_VSX:

> -      return tdesc_powerpc_isa207_htm_vsx64l;

> -#else

> -    case PPC_TDESC_BASE:

> -      return tdesc_powerpc_32l;

> -    case PPC_TDESC_ALTIVEC:

> -      return tdesc_powerpc_altivec32l;

> -    case PPC_TDESC_VSX:

> -      return tdesc_powerpc_vsx32l;

> -    case PPC_TDESC_ISA205:

> -      return tdesc_powerpc_isa205_32l;

> -    case PPC_TDESC_ISA205_ALTIVEC:

> -      return tdesc_powerpc_isa205_altivec32l;

> -    case PPC_TDESC_ISA205_VSX:

> -      return tdesc_powerpc_isa205_vsx32l;

> -    case PPC_TDESC_ISA205_PPR_DSCR_VSX:

> -      return tdesc_powerpc_isa205_ppr_dscr_vsx32l;

> -    case PPC_TDESC_ISA207_VSX:

> -      return tdesc_powerpc_isa207_vsx32l;

> -    case PPC_TDESC_ISA207_HTM_VSX:

> -      return tdesc_powerpc_isa207_htm_vsx32l;

> -    case PPC_TDESC_E500:

> -      return tdesc_powerpc_e500l;

> -#endif

> -    default:

> -      internal_error (__FILE__, __LINE__,

> -                     "unknown ipa tdesc index: %d", idx);

> -#ifdef __powerpc64__

> -      return tdesc_powerpc_64l;

> -#else

> -      return tdesc_powerpc_32l;

> -#endif

> -    }

> +  bool is_ppc64 = false;

> +  #ifdef __powerpc64__

> +    is_ppc64 = true;

> +  #endif

> +

> +  return ppc_linux_read_description (is_ppc64);


Something seems wrong here.  If I'm reading this correctly,
that description will only have the bare minimum register set,
with all optional features switched off.  The original code
used the full register set available on the current machine.

> @@ -234,26 +187,11 @@ get_ipa_tdesc (int idx)

>  void

>  initialize_low_tracepoint (void)

>  {

> -#ifdef __powerpc64__

> -  init_registers_powerpc_64l ();

> -  init_registers_powerpc_altivec64l ();

> -  init_registers_powerpc_vsx64l ();

> -  init_registers_powerpc_isa205_64l ();

> -  init_registers_powerpc_isa205_altivec64l ();

> -  init_registers_powerpc_isa205_vsx64l ();

> -  init_registers_powerpc_isa205_ppr_dscr_vsx64l ();

> -  init_registers_powerpc_isa207_vsx64l ();

> -  init_registers_powerpc_isa207_htm_vsx64l ();

> -#else

> -  init_registers_powerpc_32l ();

> -  init_registers_powerpc_altivec32l ();

> -  init_registers_powerpc_vsx32l ();

> -  init_registers_powerpc_isa205_32l ();

> -  init_registers_powerpc_isa205_altivec32l ();

> -  init_registers_powerpc_isa205_vsx32l ();

> -  init_registers_powerpc_isa205_ppr_dscr_vsx32l ();

> -  init_registers_powerpc_isa207_vsx32l ();

> -  init_registers_powerpc_isa207_htm_vsx32l ();

> -  init_registers_powerpc_e500l ();

> -#endif

> +

> +  bool is_ppc64 = false;

> +  #ifdef __powerpc64__

> +    is_ppc64 = true;

> +  #endif

> +

> +  ppc_linux_read_description (is_ppc64)


Why do you call that routine and ignore it's result?
Isn't that a no-op here?

> diff --git a/gdbserver/linux-ppc-low.cc b/gdbserver/linux-ppc-low.cc

> index 337d555aee..b982be3e1b 100644

> --- a/gdbserver/linux-ppc-low.cc

> +++ b/gdbserver/linux-ppc-low.cc

> @@ -29,7 +29,6 @@

>  #include "arch/ppc-linux-tdesc.h"


Same question as above: wasn't that file deleted?

> diff --git a/gdbserver/linux-ppc-tdesc.cc b/gdbserver/linux-ppc-tdesc.cc

> new file mode 100644

> index 0000000000..3bf97d20fc


> +#include <inttypes.h>


What is this needed for?

> +/* All possible ppc target descriptors.  */

> +struct target_desc *tdesc_ppc_list[2];


See above, I don't believe it is correct to only
support two variants here.

> +/* Create the Power target description.  */

> +const target_desc *

> +ppc_linux_read_description (bool is_ppc64)

> +{

> +  struct target_desc *tdesc = tdesc_ppc_list[is_ppc64];

> +

> +  if (tdesc == NULL)

> +   {

> +      struct ppc_linux_features features;

> +      features.wordsize = (is_ppc64) ? 8 : 4;

> +      *tdesc = ppc_create_target_description (features);

> +

> +      static const char* expedite_regs[] = { "r1", "pc" };

> +      init_target_desc (tdesc, expedite_regs);

> +

> +      tdesc_ppc_list[is_pp64] = tdesc;

> +   }

> +

> +  return tdesc;

> +}


You're using this only in the -ipa code.  I don't think
it makes sense to have a separate file just for that.

On some other platforms that do have this file, they're
using it both from the linux-low code and the -ipa code,
but you're directly calling ppc_create_target_description
there.

However, it does look like you're missing the call to
init_target_desc in your linux-low code, so we don't
actually get expedite_regs set, which is a regression.

Bye,
Ulrich
Kevin Buettner via Gdb-patches Sept. 9, 2020, 8:19 p.m. | #2
Sorry for take me that long to reply this message. I was busy with other 
GDB tasks and I missed that reply

On 7/9/20 12:48 PM, Ulrich Weigand wrote:
> On Fri, Jul 03, 2020 at 04:03:21PM -0300, Rogerio Alves wrote:

>> Use flexible target descriptors for Linux PowerPC. This allows a fine-tune

>> selection of avalible target CPU features por POWER.

> 

> Thanks for working on this!

> 

>> diff --git a/gdb/arch/ppc-linux-common.c b/gdb/arch/ppc-linux-common.c

>> index 183fc03395..36e2319a7f 100644

>> --- a/gdb/arch/ppc-linux-common.c

>> +++ b/gdb/arch/ppc-linux-common.c

>> -const struct target_desc *

>> -ppc_linux_match_description (struct ppc_linux_features features)

>> +const target_desc *

>> +ppc_create_target_description (struct ppc_linux_features features)

> 

> So you've renamed it from a name including "linux" to one without,

> while the function is still actually Linux-specific.  Is this a

> good idea?

>

I've renamed this only because the others architectures uses something
like <arch>_create_target_description. But in fact this is linux specfic 
so I will change it to ppc_linux_create_target_description.

> [ I guess a separate question is whether we shouldn't also switch

> all other powerpc targets to the new method ... ]

> 


Not sure about the other power targets for now I only targeted linux.
If that's the case maybe I should sent a separated patch if you agree 
with that.

>>   {

>> -  struct target_desc *tdesc = NULL;

>> +  target_desc *tdesc = allocate_target_description ();

>> +  long regnum = 0;

>>   

>>     if (features.wordsize == 8)

>>       {

>> -      if (features.vsx)

>> -	tdesc = (features.htm? tdesc_powerpc_isa207_htm_vsx64l

>> -		 : features.isa207? tdesc_powerpc_isa207_vsx64l

>> -		 : features.ppr_dscr? tdesc_powerpc_isa205_ppr_dscr_vsx64l

>> -		 : features.isa205? tdesc_powerpc_isa205_vsx64l

>> -		 : tdesc_powerpc_vsx64l);

>> -      else if (features.altivec)

>> -	tdesc = (features.isa205? tdesc_powerpc_isa205_altivec64l

>> -		 : tdesc_powerpc_altivec64l);

>> -      else

>> -	tdesc = (features.isa205? tdesc_powerpc_isa205_64l

>> -		 : tdesc_powerpc_64l);

>> +      #ifndef IN_PROCESS_AGENT

>> +	set_tdesc_architecture (tdesc, "power:common64");

> 

> Do we need to call set_tdesc_osabi here like is done for other targets?

> 


Yes. Since it's linux I should call set_tdesc_osbi here. [Not sure why 
aarch64 did not call it]

>> index cc65baa6ed..3140eeb00c 100644

>> --- a/gdb/features/Makefile

>> +++ b/gdb/features/Makefile

>> @@ -51,17 +51,6 @@ WHICH = arm/arm-with-iwmmxt arm/arm-with-vfpv2 arm/arm-with-vfpv3 \

>>   	mips64-linux mips64-dsp-linux \

>>   	nios2-linux \

>>   	rs6000/powerpc-32 \

> 

> It seems to me that this file is actually unused as well, so we can really

> remove all the rs6000 regformats files then.  (Including the special Makefile

> rule associated with them.)

> 


In that case we have a rs6000-tdep files on top folder that use this 
regformats that is why I did not remove. I've only remove the rules for 
rs6000/powerpc-*l* (linux) since my patch only target Linux for now.
In fact it's is kinda confusing to me why we have those rs6000?

> Talking about removed regformats files: did you verify that the new code still

> uses the same layout of the register packets, e.g. by running a new gdb against

> an old gdbserver and vice versa?

>


I am checking it here. Since I am new on GDB I am not sure how to check 
this layout.

>> diff --git a/gdbserver/configure.srv b/gdbserver/configure.srv

>> index 9a027e44af..0ff094d32c 100644

>> --- a/gdbserver/configure.srv

>> +++ b/gdbserver/configure.srv

> 

>> -  powerpc*-*-linux*)	srv_regobj="powerpc-32l.o"

> 

> Should we now use

>    srv_regobj=""

> like the other targets do?

> 


With the new interface we should not use srv_regobj. Only the old 
interfaces use it. Targets like aarch64 and x86_64 do not uses.

>>   			ipa_obj="${ipa_ppc_linux_regobj} linux-ppc-ipa.o"

>> +			ipa_obj="${ipa_obj} linux-ppc-tdesc-ipa.o"

>> +			ipa_obj="${ipa_obj} arch/ppc-linux-common-ipa.o"

> 

> I believe we now no longer need ${ipa_ppc_linux_regobj}, right?

> 


In fact we don't need. Not sure why I did not removed this.

>> --- a/gdbserver/linux-ppc-ipa.cc

>> +++ b/gdbserver/linux-ppc-ipa.cc

>> @@ -22,7 +22,6 @@

>>   #include <sys/mman.h>

>>   #include "tracepoint.h"

>>   #include "arch/ppc-linux-tdesc.h"

> 

> Wasn't that file deleted?  How does this still build?  Or am I

> missing something here ...

> 


Yes. In fact I did forgot to remove those but when I've tested it got a 
build error I removed those and works but I forgot to commit this small 
change before generate the patch. It will be fixed on v3

>> @@ -174,58 +173,12 @@ alloc_jump_pad_buffer (size_t size)

>>   const struct target_desc *

>>   get_ipa_tdesc (int idx)

>>   {

>> -  switch (idx)

>> -    {

>> -#ifdef __powerpc64__

>> -    case PPC_TDESC_BASE:

>> -      return tdesc_powerpc_64l;

>> -    case PPC_TDESC_ALTIVEC:

>> -      return tdesc_powerpc_altivec64l;

>> -    case PPC_TDESC_VSX:

>> -      return tdesc_powerpc_vsx64l;

>> -    case PPC_TDESC_ISA205:

>> -      return tdesc_powerpc_isa205_64l;

>> -    case PPC_TDESC_ISA205_ALTIVEC:

>> -      return tdesc_powerpc_isa205_altivec64l;

>> -    case PPC_TDESC_ISA205_VSX:

>> -      return tdesc_powerpc_isa205_vsx64l;

>> -    case PPC_TDESC_ISA205_PPR_DSCR_VSX:

>> -      return tdesc_powerpc_isa205_ppr_dscr_vsx64l;

>> -    case PPC_TDESC_ISA207_VSX:

>> -      return tdesc_powerpc_isa207_vsx64l;

>> -    case PPC_TDESC_ISA207_HTM_VSX:

>> -      return tdesc_powerpc_isa207_htm_vsx64l;

>> -#else

>> -    case PPC_TDESC_BASE:

>> -      return tdesc_powerpc_32l;

>> -    case PPC_TDESC_ALTIVEC:

>> -      return tdesc_powerpc_altivec32l;

>> -    case PPC_TDESC_VSX:

>> -      return tdesc_powerpc_vsx32l;

>> -    case PPC_TDESC_ISA205:

>> -      return tdesc_powerpc_isa205_32l;

>> -    case PPC_TDESC_ISA205_ALTIVEC:

>> -      return tdesc_powerpc_isa205_altivec32l;

>> -    case PPC_TDESC_ISA205_VSX:

>> -      return tdesc_powerpc_isa205_vsx32l;

>> -    case PPC_TDESC_ISA205_PPR_DSCR_VSX:

>> -      return tdesc_powerpc_isa205_ppr_dscr_vsx32l;

>> -    case PPC_TDESC_ISA207_VSX:

>> -      return tdesc_powerpc_isa207_vsx32l;

>> -    case PPC_TDESC_ISA207_HTM_VSX:

>> -      return tdesc_powerpc_isa207_htm_vsx32l;

>> -    case PPC_TDESC_E500:

>> -      return tdesc_powerpc_e500l;

>> -#endif

>> -    default:

>> -      internal_error (__FILE__, __LINE__,

>> -                     "unknown ipa tdesc index: %d", idx);

>> -#ifdef __powerpc64__

>> -      return tdesc_powerpc_64l;

>> -#else

>> -      return tdesc_powerpc_32l;

>> -#endif

>> -    }

>> +  bool is_ppc64 = false;

>> +  #ifdef __powerpc64__

>> +    is_ppc64 = true;

>> +  #endif

>> +

>> +  return ppc_linux_read_description (is_ppc64);

> 

> Something seems wrong here.  If I'm reading this correctly,

> that description will only have the bare minimum register set,

> with all optional features switched off.  The original code

> used the full register set available on the current machine.

> 


I was talking to Pedro about it by the time I was working on this patch 
he explains that IPA only colects a few registers and we may not get 
those registers in IPA that's why I did that. Now I am testing using a 
fast tracepoint to see what registers it collects and I may include the 
ones that is missing here.

>> @@ -234,26 +187,11 @@ get_ipa_tdesc (int idx)

>>   void

>>   initialize_low_tracepoint (void)

>>   {

>> -#ifdef __powerpc64__

>> -  init_registers_powerpc_64l ();

>> -  init_registers_powerpc_altivec64l ();

>> -  init_registers_powerpc_vsx64l ();

>> -  init_registers_powerpc_isa205_64l ();

>> -  init_registers_powerpc_isa205_altivec64l ();

>> -  init_registers_powerpc_isa205_vsx64l ();

>> -  init_registers_powerpc_isa205_ppr_dscr_vsx64l ();

>> -  init_registers_powerpc_isa207_vsx64l ();

>> -  init_registers_powerpc_isa207_htm_vsx64l ();

>> -#else

>> -  init_registers_powerpc_32l ();

>> -  init_registers_powerpc_altivec32l ();

>> -  init_registers_powerpc_vsx32l ();

>> -  init_registers_powerpc_isa205_32l ();

>> -  init_registers_powerpc_isa205_altivec32l ();

>> -  init_registers_powerpc_isa205_vsx32l ();

>> -  init_registers_powerpc_isa205_ppr_dscr_vsx32l ();

>> -  init_registers_powerpc_isa207_vsx32l ();

>> -  init_registers_powerpc_isa207_htm_vsx32l ();

>> -  init_registers_powerpc_e500l ();

>> -#endif

>> +

>> +  bool is_ppc64 = false;

>> +  #ifdef __powerpc64__

>> +    is_ppc64 = true;

>> +  #endif

>> +

>> +  ppc_linux_read_description (is_ppc64)

> 

> Why do you call that routine and ignore it's result?

> Isn't that a no-op here?

> 


Yes I am ignoring the result in that case because I don't need the tdesc 
returned. read_description calls create description and save that on a 
table. The original intend was to call that function on linux-low too 
(to get the expedite regs):

ppc-linux-low.cc:

current_process ()->tdesc = tdesc;

should be

current_process ()->tdesc = ppc_linux_read_description (features);

But I made a mistake and change the parameter to is_ppc and decide to 
call create_description directly on ppc-linux-low. In fact I have to 
replace = tdesc to ppc_linux_read_description (features) and change the 
parameter from is_ppc64 to features.

>> diff --git a/gdbserver/linux-ppc-low.cc b/gdbserver/linux-ppc-low.cc

>> index 337d555aee..b982be3e1b 100644

>> --- a/gdbserver/linux-ppc-low.cc

>> +++ b/gdbserver/linux-ppc-low.cc

>> @@ -29,7 +29,6 @@

>>   #include "arch/ppc-linux-tdesc.h"

> 

> Same question as above: wasn't that file deleted?

> 


Yes.

>> diff --git a/gdbserver/linux-ppc-tdesc.cc b/gdbserver/linux-ppc-tdesc.cc

>> new file mode 100644

>> index 0000000000..3bf97d20fc

> 

>> +#include <inttypes.h>

> 

> What is this needed for?

> 


I will remove this include. I put that based on other linux-*-tdesc.cc 
files.

>> +/* All possible ppc target descriptors.  */

>> +struct target_desc *tdesc_ppc_list[2];

> 

> See above, I don't believe it is correct to only

> support two variants here.

>


Ok.

>> +/* Create the Power target description.  */

>> +const target_desc *

>> +ppc_linux_read_description (bool is_ppc64)

>> +{

>> +  struct target_desc *tdesc = tdesc_ppc_list[is_ppc64];

>> +

>> +  if (tdesc == NULL)

>> +   {

>> +      struct ppc_linux_features features;

>> +      features.wordsize = (is_ppc64) ? 8 : 4;

>> +      *tdesc = ppc_create_target_description (features);

>> +

>> +      static const char* expedite_regs[] = { "r1", "pc" };

>> +      init_target_desc (tdesc, expedite_regs);

>> +

>> +      tdesc_ppc_list[is_pp64] = tdesc;

>> +   }

>> +

>> +  return tdesc;

>> +}

> 

> You're using this only in the -ipa code.  I don't think

> it makes sense to have a separate file just for that.

> 

> On some other platforms that do have this file, they're

> using it both from the linux-low code and the -ipa code,

> but you're directly calling ppc_create_target_description

> there.

> 

> However, it does look like you're missing the call to

> init_target_desc in your linux-low code, so we don't

> actually get expedite_regs set, which is a regression.

> 


I kinda explain that above when I call ppc_linux_read_description and 
ignore the result. My solution will be change the parameter and call 
ppc_linux_read_description on linux-low instead call create_description 
directly. This should fix this mistake.

> Bye,

> Ulrich

> 


Regards
Rogerio
Kevin Buettner via Gdb-patches Sept. 14, 2020, 12:16 p.m. | #3
On Wed, Sep 09, 2020 at 05:19:49PM -0300, Rogerio Alves wrote:
> On 7/9/20 12:48 PM, Ulrich Weigand wrote:

> > On Fri, Jul 03, 2020 at 04:03:21PM -0300, Rogerio Alves wrote:

> >> -const struct target_desc *

> >> -ppc_linux_match_description (struct ppc_linux_features features)

> >> +const target_desc *

> >> +ppc_create_target_description (struct ppc_linux_features features)

> > 

> > So you've renamed it from a name including "linux" to one without,

> > while the function is still actually Linux-specific.  Is this a

> > good idea?

> >

> I've renamed this only because the others architectures uses something

> like <arch>_create_target_description. But in fact this is linux specfic 

> so I will change it to ppc_linux_create_target_description.


OK, thanks.

> > [ I guess a separate question is whether we shouldn't also switch

> > all other powerpc targets to the new method ... ]

> 

> Not sure about the other power targets for now I only targeted linux.

> If that's the case maybe I should sent a separated patch if you agree 

> with that.


It's certainly fine to do Linux first.  Just something to think about.

> > Do we need to call set_tdesc_osabi here like is done for other targets?

> 

> Yes. Since it's linux I should call set_tdesc_osbi here. [Not sure why 

> aarch64 did not call it]


OK.

> >> index cc65baa6ed..3140eeb00c 100644

> >> --- a/gdb/features/Makefile

> >> +++ b/gdb/features/Makefile

> >> @@ -51,17 +51,6 @@ WHICH = arm/arm-with-iwmmxt arm/arm-with-vfpv2 arm/arm-with-vfpv3 \

> >>   	mips64-linux mips64-dsp-linux \

> >>   	nios2-linux \

> >>   	rs6000/powerpc-32 \

> > 

> > It seems to me that this file is actually unused as well, so we can really

> > remove all the rs6000 regformats files then.  (Including the special Makefile

> > rule associated with them.)

> > 

> 

> In that case we have a rs6000-tdep files on top folder that use this 

> regformats that is why I did not remove. I've only remove the rules for 

> rs6000/powerpc-*l* (linux) since my patch only target Linux for now.

> In fact it's is kinda confusing to me why we have those rs6000?


Yes, we still need the XML files, but this rule is about the *.dat files
in regformats, and I believe the powerpc-32.dat file is actually unused.
These files are only used by gdbserver, and there is no gdbserver target
that uses powerpc-32.o as far as I can see.  I believe I just forgot to
remove that rule years ago.

> > Talking about removed regformats files: did you verify that the new code still

> > uses the same layout of the register packets, e.g. by running a new gdb against

> > an old gdbserver and vice versa?

> >

> 

> I am checking it here. Since I am new on GDB I am not sure how to check 

> this layout.


That's actually good question, I don't think there's a simple way to
perform this check.  One option to check, as I mentioned, would be
to run the GDB test suite running a GDB built with the patch against
a gdbserver built without the patch, and vice versa, and making sure
there are no additional failures.

> >> diff --git a/gdbserver/configure.srv b/gdbserver/configure.srv

> >> index 9a027e44af..0ff094d32c 100644

> >> --- a/gdbserver/configure.srv

> >> +++ b/gdbserver/configure.srv

> > 

> >> -  powerpc*-*-linux*)	srv_regobj="powerpc-32l.o"

> > 

> > Should we now use

> >    srv_regobj=""

> > like the other targets do?

> > 

> 

> With the new interface we should not use srv_regobj. Only the old 

> interfaces use it. Targets like aarch64 and x86_64 do not uses.


I was just confused why some targets explicitly set srv_regobj to
the empty string, while others do not set it at all.  But I guess
given that other Linux targets also do not set it at all, that
should be fine.

> >>   			ipa_obj="${ipa_ppc_linux_regobj} linux-ppc-ipa.o"

> >> +			ipa_obj="${ipa_obj} linux-ppc-tdesc-ipa.o"

> >> +			ipa_obj="${ipa_obj} arch/ppc-linux-common-ipa.o"

> > 

> > I believe we now no longer need ${ipa_ppc_linux_regobj}, right?

> > 

> 

> In fact we don't need. Not sure why I did not removed this.


OK.

> >> --- a/gdbserver/linux-ppc-ipa.cc

> >> +++ b/gdbserver/linux-ppc-ipa.cc

> >> @@ -22,7 +22,6 @@

> >>   #include <sys/mman.h>

> >>   #include "tracepoint.h"

> >>   #include "arch/ppc-linux-tdesc.h"

> > 

> > Wasn't that file deleted?  How does this still build?  Or am I

> > missing something here ...

> > 

> 

> Yes. In fact I did forgot to remove those but when I've tested it got a 

> build error I removed those and works but I forgot to commit this small 

> change before generate the patch. It will be fixed on v3


OK.

> > Something seems wrong here.  If I'm reading this correctly,

> > that description will only have the bare minimum register set,

> > with all optional features switched off.  The original code

> > used the full register set available on the current machine.

> > 

> 

> I was talking to Pedro about it by the time I was working on this patch 

> he explains that IPA only colects a few registers and we may not get 

> those registers in IPA that's why I did that. Now I am testing using a 

> fast tracepoint to see what registers it collects and I may include the 

> ones that is missing here.


Well, I believe even with fast tracepoints the user can specify which
registers he wants to collect, so I do think the full set should be
available.  That's what other target do as well, anyway.


> >> +  bool is_ppc64 = false;

> >> +  #ifdef __powerpc64__

> >> +    is_ppc64 = true;

> >> +  #endif

> >> +

> >> +  ppc_linux_read_description (is_ppc64)

> > 

> > Why do you call that routine and ignore it's result?

> > Isn't that a no-op here?

> > 

> 

> Yes I am ignoring the result in that case because I don't need the tdesc 

> returned. read_description calls create description and save that on a 

> table. The original intend was to call that function on linux-low too 

> (to get the expedite regs):

> 

> ppc-linux-low.cc:

> 

> current_process ()->tdesc = tdesc;

> 

> should be

> 

> current_process ()->tdesc = ppc_linux_read_description (features);

> 

> But I made a mistake and change the parameter to is_ppc and decide to 

> call create_description directly on ppc-linux-low. In fact I have to 

> replace = tdesc to ppc_linux_read_description (features) and change the 

> parameter from is_ppc64 to features.


OK.

> > You're using this only in the -ipa code.  I don't think

> > it makes sense to have a separate file just for that.

> > 

> > On some other platforms that do have this file, they're

> > using it both from the linux-low code and the -ipa code,

> > but you're directly calling ppc_create_target_description

> > there.

> > 

> > However, it does look like you're missing the call to

> > init_target_desc in your linux-low code, so we don't

> > actually get expedite_regs set, which is a regression.

> > 

> 

> I kinda explain that above when I call ppc_linux_read_description and 

> ignore the result. My solution will be change the parameter and call 

> ppc_linux_read_description on linux-low instead call create_description 

> directly. This should fix this mistake.


OK.

Thanks,
Ulrich

-- 
  Dr. Ulrich Weigand
  GNU/Linux compilers and toolchain
  Ulrich.Weigand@de.ibm.com
Pedro Alves Sept. 14, 2020, 12:20 p.m. | #4
Please say "target descriptions", not "descriptors" in the subject line.
At first I thought this was about some new kind of function descriptors!  :-)

On 7/3/20 8:03 PM, Rogerio Alves via Gdb-patches wrote:
> Use flexible target descriptors for Linux PowerPC. This allows a fine-tune

> selection of avalible target CPU features por POWER.


typo: "avalible", while at it.

Pedro Alves

Patch

diff --git a/gdb/arch/ppc-linux-common.c b/gdb/arch/ppc-linux-common.c
index 183fc03395..36e2319a7f 100644
--- a/gdb/arch/ppc-linux-common.c
+++ b/gdb/arch/ppc-linux-common.c
@@ -19,7 +19,31 @@ 
 
 #include "gdbsupport/common-defs.h"
 #include "arch/ppc-linux-common.h"
-#include "arch/ppc-linux-tdesc.h"
+
+#include "../features/rs6000/power-altivec.c"
+#include "../features/rs6000/power-core.c"
+#include "../features/rs6000/power-dscr.c"
+#include "../features/rs6000/power-ebb.c""
+#include "../features/rs6000/power-fpu-fpsrc.c"
+#include "../features/rs6000/power-fpu.c"
+#include "../features/rs6000/power-htm-altivec.c"
+#include "../features/rs6000/power-htm-core.c"
+#include "../features/rs6000/power-htm-dscr.c"
+#include "../features/rs6000/power-htm-fpu.c"
+#include "../features/rs6000/power-htm-ppr.c"
+#include "../features/rs6000/power-htm-spr.c"
+#include "../features/rs6000/power-htm-tar.c"
+#include "../features/rs6000/power-htm-vsx.c"
+#include "../features/rs6000/power-linux-pmu.c"
+#include "../features/rs6000/power-linux.c"
+#include "../features/rs6000/power-ppr.c"
+#include "../features/rs6000/power-oea.c"
+#include "../features/rs6000/power-spe.c"
+#include "../features/rs6000/power-tar.c"
+#include "../features/rs6000/power-vsx.c"
+#include "../features/rs6000/power64-core.c"
+#include "../features/rs6000/power64-htm-core.c"
+#include "../features/rs6000/power64-linux.c"
 
 /* Decimal Floating Point bit in AT_HWCAP.
 
@@ -31,56 +55,103 @@ 
 #endif
 
 bool
-ppc_linux_has_isa205 (CORE_ADDR hwcap)
+ppc_linux_has_fpscr64 (CORE_ADDR hwcap)
 {
   /* Power ISA 2.05 (implemented by Power 6 and newer processors)
-     increases the FPSCR from 32 bits to 64 bits.  Even though Power 7
-     supports this ISA version, it doesn't have PPC_FEATURE_ARCH_2_05
-     set, only PPC_FEATURE_ARCH_2_06.  Since for now the only bits
+     increases the FPSCR from 32 bits to 64 bits. Since for now the only bits
      used in the higher half of the register are for Decimal Floating
      Point, we check if that feature is available to decide the size
      of the FPSCR.  */
   return ((hwcap & PPC_FEATURE_HAS_DFP) != 0);
 }
 
-const struct target_desc *
-ppc_linux_match_description (struct ppc_linux_features features)
+const target_desc *
+ppc_create_target_description (struct ppc_linux_features features)
 {
-  struct target_desc *tdesc = NULL;
+  target_desc *tdesc = allocate_target_description ();
+  long regnum = 0;
 
   if (features.wordsize == 8)
     {
-      if (features.vsx)
-	tdesc = (features.htm? tdesc_powerpc_isa207_htm_vsx64l
-		 : features.isa207? tdesc_powerpc_isa207_vsx64l
-		 : features.ppr_dscr? tdesc_powerpc_isa205_ppr_dscr_vsx64l
-		 : features.isa205? tdesc_powerpc_isa205_vsx64l
-		 : tdesc_powerpc_vsx64l);
-      else if (features.altivec)
-	tdesc = (features.isa205? tdesc_powerpc_isa205_altivec64l
-		 : tdesc_powerpc_altivec64l);
-      else
-	tdesc = (features.isa205? tdesc_powerpc_isa205_64l
-		 : tdesc_powerpc_64l);
+      #ifndef IN_PROCESS_AGENT
+	set_tdesc_architecture (tdesc, "power:common64");
+      #endif
+      regnum = create_feature_rs6000_power64_core (tdesc, regnum);
+      regnum = create_feature_rs6000_power64_linux (tdesc, regnum);
+
+      if (feature.htm.core)
+	regnum = create_feature_power64_htm_core (tdesc, regnum);
     }
   else
     {
       gdb_assert (features.wordsize == 4);
 
-      if (features.vsx)
-	tdesc = (features.htm? tdesc_powerpc_isa207_htm_vsx32l
-		 : features.isa207? tdesc_powerpc_isa207_vsx32l
-		 : features.ppr_dscr? tdesc_powerpc_isa205_ppr_dscr_vsx32l
-		 : features.isa205? tdesc_powerpc_isa205_vsx32l
-		 : tdesc_powerpc_vsx32l);
-      else if (features.altivec)
-	tdesc = (features.isa205? tdesc_powerpc_isa205_altivec32l
-		 : tdesc_powerpc_altivec32l);
-      else
-	tdesc = (features.isa205? tdesc_powerpc_isa205_32l
-		 : tdesc_powerpc_32l);
+      #ifndef IN_PROCESS_AGENT
+	set_tdesc_architecture (tdesc, "power:common");
+      #endif
+      regnum = create_feature_rs6000_power_core (tdesc, regnum);
+      regnum = create_feature_rs6000_power_linux (tdesc, regnum);
+
+      if (feature.htm.core)
+	regnum = create_feature_power_htm_core (tdesc, regnum);
+    }
+
+  if (features.altivec)
+    regnum = create_feature_rs6000_power_altivec (tdesc, regnum);
+
+  if (features.dscr)
+    regnum = create_feature_rs6000_power_dscr (tdesc, regnum);
+
+  if (features.ebb)
+    regnum = create_feature_rs6000_power_ebb (tdesc, regnum);
+
+   if (features.fpscr64)
+     regnum = create_feature_rs6000_power_fpu_fpscr64 (tdesc, regnum);
+   else
+     regnum = create_feature_rs6000_power_fpu (tdesc, regnum);
+
+  if (features.htm.core)
+    {
+      if (features.htm.altivec)
+	regnum = create_feature_rs6000_power_htm_altivec (tdesc, regnum);
+
+      if (features.htm.dscr)
+	regnum = create_feature_rs6000_power_htm_dscr (tdesc, regnum);
+
+      if (features.htm.fpu)
+ 	regnum = create_feature_rs6000_power_htm_fpu (tdesc, regnum);
+
+      if (features.htm.ppr)
+	regnum = create_feature_rs6000_power_htm_ppr (tdesc, regnum);
+
+      if (features.htm.spr)
+	regnum = create_feature_rs6000_power_htm_spr (tdesc, regnum);
+
+      if (features.htm.tar)
+ 	regnum = create_feature_rs6000_power_htm_tar (tdesc, regnum);
+
+      if (features.htm.vsx)
+	regnum = create_feature_rs6000_power_htm_vsx (tdesc, regnum);
     }
 
+  if (features.oea)
+    regnum = create_feature_rs6000_power_oea (tdesc, regnum);
+
+  if (features.pmu)
+    regnum = create_feature_rs6000_power_linux_pmu (tdesc, regnum);
+
+  if (features.ppr)
+    regnum = create_feature_rs6000_power_ppr (tdesc, regnum);
+
+  if (features.spe)
+    regnum = create_feature_rs6000_power_spe (tdesc. regnum);
+
+  if (features.tar)
+    regnum = create_feature_rs6000_power_tar (tdesc, regnum);
+
+  if (features.vsx)
+    regnum = create_feature_rs6000_power_vsx (tdesc, regnum);
+
   gdb_assert (tdesc != NULL);
 
   return tdesc;
diff --git a/gdb/arch/ppc-linux-common.h b/gdb/arch/ppc-linux-common.h
index 40209abdf1..0e0a6b4be0 100644
--- a/gdb/arch/ppc-linux-common.h
+++ b/gdb/arch/ppc-linux-common.h
@@ -20,7 +20,7 @@ 
 #ifndef ARCH_PPC_LINUX_COMMON_H
 #define ARCH_PPC_LINUX_COMMON_H
 
-struct target_desc;
+#include "gdbsupport/tdesc.h"
 
 /* The core file VMX regset has 34 16-byte fields (32 16-byte vector
    registers, plus two fields containing 4-byte registers, VSCR and
@@ -45,19 +45,34 @@  struct target_desc;
 #define PPC_LINUX_SIZEOF_CDSCRREGSET 8
 #define PPC_LINUX_SIZEOF_CTARREGSET 8
 
-/* Check if the hwcap auxv entry indicates that isa205 is supported.  */
-bool ppc_linux_has_isa205 (CORE_ADDR hwcap);
+/* Check if the hwcap auxv entry indicates that FPSCR is 64 bits.  */
+bool ppc_linux_has_fpscr64 (CORE_ADDR hwcap);
 
 /* Features used to determine the target description.  */
 struct ppc_linux_features
 {
   unsigned int wordsize;
   bool altivec;
+  bool dscr;
+  bool ebb;
+  bool fpscr64;
+  struct htm
+  {
+    bool altivec;
+    bool core;
+    bool dscr;
+    bool fpu;
+    bool ppr;
+    bool spr;
+    bool tar;
+    bool vsx;
+  } htm;
+  bool oea;
+  bool pmu;
+  bool ppr;
+  bool spe;
+  bool tar;
   bool vsx;
-  bool isa205;
-  bool ppr_dscr;
-  bool isa207;
-  bool htm;
 };
 
 /* Base value for ppc_linux_features variables.  */
@@ -67,12 +82,26 @@  const struct ppc_linux_features ppc_linux_no_features = {
   false,
   false,
   false,
+  {
+    false,
+    false,
+    false,
+    false,
+    false,
+    false,
+    false,
+    false,
+  },
+  false,
+  false,
+  false,
+  false,
   false,
   false,
 };
 
-/* Return a target description that matches FEATURES.  */
-const struct target_desc * ppc_linux_match_description
+/* Create a target description that matches FEATURES.  */
+const target_desc * ppc_create_target_description
 (struct ppc_linux_features features);
 
 #endif /* ARCH_PPC_LINUX_COMMON_H */
diff --git a/gdb/arch/ppc-linux-tdesc.h b/gdb/arch/ppc-linux-tdesc.h
deleted file mode 100644
index 082123748e..0000000000
--- a/gdb/arch/ppc-linux-tdesc.h
+++ /dev/null
@@ -1,46 +0,0 @@ 
-/* Target description declarations shared between gdb, gdbserver and IPA.
-
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program 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 General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#ifndef ARCH_PPC_LINUX_TDESC_H
-#define ARCH_PPC_LINUX_TDESC_H
-
-struct target_desc;
-
-extern struct target_desc *tdesc_powerpc_32l;
-extern struct target_desc *tdesc_powerpc_altivec32l;
-extern struct target_desc *tdesc_powerpc_vsx32l;
-extern struct target_desc *tdesc_powerpc_isa205_32l;
-extern struct target_desc *tdesc_powerpc_isa205_altivec32l;
-extern struct target_desc *tdesc_powerpc_isa205_vsx32l;
-extern struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx32l;
-extern struct target_desc *tdesc_powerpc_isa207_vsx32l;
-extern struct target_desc *tdesc_powerpc_isa207_htm_vsx32l;
-extern struct target_desc *tdesc_powerpc_e500l;
-
-extern struct target_desc *tdesc_powerpc_64l;
-extern struct target_desc *tdesc_powerpc_altivec64l;
-extern struct target_desc *tdesc_powerpc_vsx64l;
-extern struct target_desc *tdesc_powerpc_isa205_64l;
-extern struct target_desc *tdesc_powerpc_isa205_altivec64l;
-extern struct target_desc *tdesc_powerpc_isa205_vsx64l;
-extern struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx64l;
-extern struct target_desc *tdesc_powerpc_isa207_vsx64l;
-extern struct target_desc *tdesc_powerpc_isa207_htm_vsx64l;
-
-#endif /* ARCH_PPC_LINUX_TDESC_H */
diff --git a/gdb/features/Makefile b/gdb/features/Makefile
index cc65baa6ed..3140eeb00c 100644
--- a/gdb/features/Makefile
+++ b/gdb/features/Makefile
@@ -51,17 +51,6 @@  WHICH = arm/arm-with-iwmmxt arm/arm-with-vfpv2 arm/arm-with-vfpv3 \
 	mips64-linux mips64-dsp-linux \
 	nios2-linux \
 	rs6000/powerpc-32 \
-	rs6000/powerpc-32l rs6000/powerpc-altivec32l rs6000/powerpc-e500l \
-	rs6000/powerpc-64l rs6000/powerpc-altivec64l rs6000/powerpc-vsx32l \
-	rs6000/powerpc-vsx64l \
-	rs6000/powerpc-isa205-32l rs6000/powerpc-isa205-64l \
-	rs6000/powerpc-isa205-altivec32l rs6000/powerpc-isa205-altivec64l \
-	rs6000/powerpc-isa205-vsx32l rs6000/powerpc-isa205-vsx64l \
-	rs6000/powerpc-isa205-ppr-dscr-vsx32l \
-	rs6000/powerpc-isa205-ppr-dscr-vsx64l \
-	rs6000/powerpc-isa207-vsx32l rs6000/powerpc-isa207-vsx64l \
-	rs6000/powerpc-isa207-htm-vsx32l \
-	rs6000/powerpc-isa207-htm-vsx64l \
 	s390-linux32 s390-linux64 s390x-linux64 \
 	s390-linux32v1 s390-linux64v1 s390x-linux64v1 \
 	s390-linux32v2 s390-linux64v2 s390x-linux64v2 \
@@ -118,7 +107,6 @@  XMLTOC = \
 	nios2.xml \
 	or1k.xml \
 	rs6000/powerpc-32.xml \
-	rs6000/powerpc-32l.xml \
 	rs6000/powerpc-403.xml \
 	rs6000/powerpc-403gc.xml \
 	rs6000/powerpc-405.xml \
@@ -128,32 +116,14 @@  XMLTOC = \
 	rs6000/powerpc-603.xml \
 	rs6000/powerpc-604.xml \
 	rs6000/powerpc-64.xml \
-	rs6000/powerpc-64l.xml \
 	rs6000/powerpc-7400.xml \
 	rs6000/powerpc-750.xml \
 	rs6000/powerpc-860.xml \
 	rs6000/powerpc-altivec32.xml \
-	rs6000/powerpc-altivec32l.xml \
 	rs6000/powerpc-altivec64.xml \
-	rs6000/powerpc-altivec64l.xml \
 	rs6000/powerpc-e500.xml \
-	rs6000/powerpc-e500l.xml \
-	rs6000/powerpc-isa205-32l.xml \
-	rs6000/powerpc-isa205-64l.xml \
-	rs6000/powerpc-isa205-altivec32l.xml \
-	rs6000/powerpc-isa205-altivec64l.xml \
-	rs6000/powerpc-isa205-vsx32l.xml \
-	rs6000/powerpc-isa205-vsx64l.xml \
-	rs6000/powerpc-isa205-ppr-dscr-vsx32l.xml \
-	rs6000/powerpc-isa205-ppr-dscr-vsx64l.xml \
-	rs6000/powerpc-isa207-vsx32l.xml \
-	rs6000/powerpc-isa207-vsx64l.xml \
-	rs6000/powerpc-isa207-htm-vsx32l.xml \
-	rs6000/powerpc-isa207-htm-vsx64l.xml \
 	rs6000/powerpc-vsx32.xml \
-	rs6000/powerpc-vsx32l.xml \
 	rs6000/powerpc-vsx64.xml \
-	rs6000/powerpc-vsx64l.xml \
 	rs6000/rs6000.xml \
 	rx.xml \
 	s390-linux32.xml \
@@ -182,6 +152,7 @@  aarch64-feature = 1
 arm-feature = 1
 i386-feature = 1
 riscv-feature = 1
+rs6000-feature =1
 tic6x-feature = 1
 
 all: $(OUTPUTS)
@@ -237,6 +208,29 @@  FEATURE_XMLFILES = aarch64-core.xml \
 	riscv/64bit-cpu.xml \
 	riscv/64bit-csr.xml \
 	riscv/64bit-fpu.xml \
+	rs6000/power64-core.xml \
+	rs6000/power64-htm-core.xml \
+	rs6000/power64-linux.xml \
+	rs6000/power-altivec.xml \
+	rs6000/power-core.xml \
+	rs6000/power-dscr.xml \
+	rs6000/power-ebb.xml \
+	rs6000/power-fpu-fpscr64.xml \
+	rs6000/power-fpu.xml \
+	rs6000/power-htm-altivec.xml \
+	rs6000/power-htm-core.xml \
+	rs6000/power-htm-dscr.xml \
+	rs6000/power-htm-fpu.xml \
+	rs6000/power-htm-ppr.xml \
+	rs6000/power-htm-spr.xml \
+	rs6000/power-htm-tar.xml \
+	rs6000/power-htm-vsx.xml \
+	rs6000/power-linux-pmu.xml \
+	rs6000/power-linux.xml \
+	rs6000/power-ppr.xml \
+	rs6000/power-spe.xml \
+	rs6000/power-tar.xml \
+	rs6000/power-vsx.xml \
 	rx.xml \
 	tic6x-c6xp.xml \
 	tic6x-core.xml \
diff --git a/gdb/features/rs6000/power-altivec.c b/gdb/features/rs6000/power-altivec.c
new file mode 100644
index 0000000000..ec9ccd7bdb
--- /dev/null
+++ b/gdb/features/rs6000/power-altivec.c
@@ -0,0 +1,74 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-altivec.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_altivec (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
+  tdesc_type *element_type;
+  element_type = tdesc_named_type (feature, "ieee_single");
+  tdesc_create_vector (feature, "v4f", element_type, 4);
+
+  element_type = tdesc_named_type (feature, "int32");
+  tdesc_create_vector (feature, "v4i32", element_type, 4);
+
+  element_type = tdesc_named_type (feature, "int16");
+  tdesc_create_vector (feature, "v8i16", element_type, 8);
+
+  element_type = tdesc_named_type (feature, "int8");
+  tdesc_create_vector (feature, "v16i8", element_type, 16);
+
+  tdesc_type_with_fields *type_with_fields;
+  type_with_fields = tdesc_create_union (feature, "vec128");
+  tdesc_type *field_type;
+  field_type = tdesc_named_type (feature, "uint128");
+  tdesc_add_field (type_with_fields, "uint128", field_type);
+  field_type = tdesc_named_type (feature, "v4f");
+  tdesc_add_field (type_with_fields, "v4_float", field_type);
+  field_type = tdesc_named_type (feature, "v4i32");
+  tdesc_add_field (type_with_fields, "v4_int32", field_type);
+  field_type = tdesc_named_type (feature, "v8i16");
+  tdesc_add_field (type_with_fields, "v8_int16", field_type);
+  field_type = tdesc_named_type (feature, "v16i8");
+  tdesc_add_field (type_with_fields, "v16_int8", field_type);
+
+  tdesc_create_reg (feature, "vr0", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr1", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr2", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr3", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr4", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr5", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr6", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr7", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr8", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr9", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr10", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr11", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr12", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr13", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr14", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr15", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr16", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr17", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr18", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr19", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr20", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr21", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr22", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr23", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr24", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr25", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr26", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr27", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr28", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr29", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr30", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vr31", regnum++, 1, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "vscr", regnum++, 1, "vector", 32, "int");
+  tdesc_create_reg (feature, "vrsave", regnum++, 1, "vector", 32, "int");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-core.c b/gdb/features/rs6000/power-core.c
new file mode 100644
index 0000000000..41573ba4cc
--- /dev/null
+++ b/gdb/features/rs6000/power-core.c
@@ -0,0 +1,52 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-core.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_core (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
+  tdesc_create_reg (feature, "r0", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r1", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r2", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r3", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r4", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r5", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r6", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r7", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r8", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r9", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r10", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r11", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r12", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r13", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r14", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r15", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r16", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r17", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r18", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r19", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r20", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r21", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r22", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r23", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r24", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r25", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r26", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r27", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r28", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r29", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r30", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r31", regnum++, 1, NULL, 32, "uint32");
+  regnum = 64;
+  tdesc_create_reg (feature, "pc", regnum++, 1, NULL, 32, "code_ptr");
+  tdesc_create_reg (feature, "msr", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "lr", regnum++, 1, NULL, 32, "code_ptr");
+  tdesc_create_reg (feature, "ctr", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "xer", regnum++, 1, NULL, 32, "uint32");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-dscr.c b/gdb/features/rs6000/power-dscr.c
new file mode 100644
index 0000000000..71b87f9563
--- /dev/null
+++ b/gdb/features/rs6000/power-dscr.c
@@ -0,0 +1,14 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-dscr.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_dscr (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.dscr");
+  tdesc_create_reg (feature, "dscr", regnum++, 1, NULL, 64, "uint64");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-ebb.c b/gdb/features/rs6000/power-ebb.c
new file mode 100644
index 0000000000..5c2d359f3c
--- /dev/null
+++ b/gdb/features/rs6000/power-ebb.c
@@ -0,0 +1,16 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-ebb.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_ebb (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.ebb");
+  tdesc_create_reg (feature, "bescr", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "ebbhr", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "ebbrr", regnum++, 0, NULL, 64, "uint64");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-fpu-fpscr64.c b/gdb/features/rs6000/power-fpu-fpscr64.c
new file mode 100644
index 0000000000..b8340fb291
--- /dev/null
+++ b/gdb/features/rs6000/power-fpu-fpscr64.c
@@ -0,0 +1,48 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-fpu-fpscr64.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_fpu_fpscr64 (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
+  regnum = 32;
+  tdesc_create_reg (feature, "f0", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f1", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f2", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f3", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f4", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f5", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f6", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f7", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f8", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f9", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f10", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f11", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f12", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f13", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f14", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f15", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f16", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f17", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f18", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f19", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f20", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f21", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f22", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f23", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f24", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f25", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f26", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f27", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f28", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f29", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f30", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f31", regnum++, 1, NULL, 64, "ieee_double");
+  regnum = 70;
+  tdesc_create_reg (feature, "fpscr", regnum++, 1, "float", 64, "int");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-fpu-isa205.xml b/gdb/features/rs6000/power-fpu-fpscr64.xml
similarity index 100%
rename from gdb/features/rs6000/power-fpu-isa205.xml
rename to gdb/features/rs6000/power-fpu-fpscr64.xml
diff --git a/gdb/features/rs6000/power-fpu.c b/gdb/features/rs6000/power-fpu.c
new file mode 100644
index 0000000000..0a8147aad2
--- /dev/null
+++ b/gdb/features/rs6000/power-fpu.c
@@ -0,0 +1,48 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-fpu.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_fpu (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
+  regnum = 32;
+  tdesc_create_reg (feature, "f0", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f1", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f2", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f3", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f4", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f5", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f6", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f7", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f8", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f9", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f10", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f11", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f12", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f13", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f14", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f15", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f16", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f17", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f18", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f19", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f20", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f21", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f22", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f23", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f24", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f25", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f26", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f27", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f28", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f29", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f30", regnum++, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f31", regnum++, 1, NULL, 64, "ieee_double");
+  regnum = 70;
+  tdesc_create_reg (feature, "fpscr", regnum++, 1, "float", 32, "int");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-htm-altivec.c b/gdb/features/rs6000/power-htm-altivec.c
new file mode 100644
index 0000000000..029ad33cb8
--- /dev/null
+++ b/gdb/features/rs6000/power-htm-altivec.c
@@ -0,0 +1,74 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-htm-altivec.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_htm_altivec (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.altivec");
+  tdesc_type *element_type;
+  element_type = tdesc_named_type (feature, "ieee_single");
+  tdesc_create_vector (feature, "v4f", element_type, 4);
+
+  element_type = tdesc_named_type (feature, "int32");
+  tdesc_create_vector (feature, "v4i32", element_type, 4);
+
+  element_type = tdesc_named_type (feature, "int16");
+  tdesc_create_vector (feature, "v8i16", element_type, 8);
+
+  element_type = tdesc_named_type (feature, "int8");
+  tdesc_create_vector (feature, "v16i8", element_type, 16);
+
+  tdesc_type_with_fields *type_with_fields;
+  type_with_fields = tdesc_create_union (feature, "vec128");
+  tdesc_type *field_type;
+  field_type = tdesc_named_type (feature, "uint128");
+  tdesc_add_field (type_with_fields, "uint128", field_type);
+  field_type = tdesc_named_type (feature, "v4f");
+  tdesc_add_field (type_with_fields, "v4_float", field_type);
+  field_type = tdesc_named_type (feature, "v4i32");
+  tdesc_add_field (type_with_fields, "v4_int32", field_type);
+  field_type = tdesc_named_type (feature, "v8i16");
+  tdesc_add_field (type_with_fields, "v8_int16", field_type);
+  field_type = tdesc_named_type (feature, "v16i8");
+  tdesc_add_field (type_with_fields, "v16_int8", field_type);
+
+  tdesc_create_reg (feature, "cvr0", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr1", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr2", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr3", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr4", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr5", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr6", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr7", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr8", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr9", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr10", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr11", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr12", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr13", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr14", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr15", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr16", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr17", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr18", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr19", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr20", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr21", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr22", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr23", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr24", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr25", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr26", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr27", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr28", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr29", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr30", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvr31", regnum++, 0, NULL, 128, "vec128");
+  tdesc_create_reg (feature, "cvscr", regnum++, 0, "vector", 32, "int");
+  tdesc_create_reg (feature, "cvrsave", regnum++, 0, "vector", 32, "int");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-htm-core.c b/gdb/features/rs6000/power-htm-core.c
new file mode 100644
index 0000000000..d21c79cf5b
--- /dev/null
+++ b/gdb/features/rs6000/power-htm-core.c
@@ -0,0 +1,49 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-htm-core.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_htm_core (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.core");
+  tdesc_create_reg (feature, "cr0", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr1", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr2", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr3", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr4", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr5", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr6", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr7", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr8", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr9", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr10", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr11", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr12", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr13", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr14", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr15", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr16", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr17", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr18", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr19", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr20", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr21", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr22", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr23", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr24", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr25", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr26", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr27", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr28", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr29", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr30", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cr31", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "ccr", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "cxer", regnum++, 0, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "clr", regnum++, 0, NULL, 32, "code_ptr");
+  tdesc_create_reg (feature, "cctr", regnum++, 0, NULL, 32, "uint32");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-htm-dscr.c b/gdb/features/rs6000/power-htm-dscr.c
new file mode 100644
index 0000000000..0b7f2d9c22
--- /dev/null
+++ b/gdb/features/rs6000/power-htm-dscr.c
@@ -0,0 +1,14 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-htm-dscr.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_htm_dscr (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.dscr");
+  tdesc_create_reg (feature, "cdscr", regnum++, 0, NULL, 64, "uint64");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-htm-fpu.c b/gdb/features/rs6000/power-htm-fpu.c
new file mode 100644
index 0000000000..8268e97f6f
--- /dev/null
+++ b/gdb/features/rs6000/power-htm-fpu.c
@@ -0,0 +1,46 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-htm-fpu.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_htm_fpu (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.fpu");
+  tdesc_create_reg (feature, "cf0", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf1", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf2", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf3", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf4", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf5", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf6", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf7", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf8", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf9", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf10", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf11", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf12", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf13", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf14", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf15", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf16", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf17", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf18", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf19", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf20", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf21", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf22", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf23", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf24", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf25", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf26", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf27", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf28", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf29", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf30", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cf31", regnum++, 0, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "cfpscr", regnum++, 0, "float", 64, "uint64");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-htm-ppr.c b/gdb/features/rs6000/power-htm-ppr.c
new file mode 100644
index 0000000000..d6470a5701
--- /dev/null
+++ b/gdb/features/rs6000/power-htm-ppr.c
@@ -0,0 +1,14 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-htm-ppr.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_htm_ppr (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.ppr");
+  tdesc_create_reg (feature, "cppr", regnum++, 0, NULL, 64, "uint64");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-htm-spr.c b/gdb/features/rs6000/power-htm-spr.c
new file mode 100644
index 0000000000..4170304bc8
--- /dev/null
+++ b/gdb/features/rs6000/power-htm-spr.c
@@ -0,0 +1,16 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-htm-spr.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_htm_spr (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.spr");
+  tdesc_create_reg (feature, "tfhar", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "texasr", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "tfiar", regnum++, 0, NULL, 64, "uint64");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-htm-tar.c b/gdb/features/rs6000/power-htm-tar.c
new file mode 100644
index 0000000000..c9442bfbaa
--- /dev/null
+++ b/gdb/features/rs6000/power-htm-tar.c
@@ -0,0 +1,14 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-htm-tar.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_htm_tar (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.tar");
+  tdesc_create_reg (feature, "ctar", regnum++, 0, NULL, 64, "uint64");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-htm-vsx.c b/gdb/features/rs6000/power-htm-vsx.c
new file mode 100644
index 0000000000..b3f3f3e047
--- /dev/null
+++ b/gdb/features/rs6000/power-htm-vsx.c
@@ -0,0 +1,45 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-htm-vsx.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_htm_vsx (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.vsx");
+  tdesc_create_reg (feature, "cvs0h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs1h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs2h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs3h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs4h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs5h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs6h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs7h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs8h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs9h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs10h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs11h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs12h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs13h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs14h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs15h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs16h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs17h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs18h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs19h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs20h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs21h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs22h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs23h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs24h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs25h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs26h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs27h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs28h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs29h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs30h", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "cvs31h", regnum++, 0, NULL, 64, "uint64");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-linux-pmu.c b/gdb/features/rs6000/power-linux-pmu.c
new file mode 100644
index 0000000000..abeda3af59
--- /dev/null
+++ b/gdb/features/rs6000/power-linux-pmu.c
@@ -0,0 +1,18 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-linux-pmu.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_linux_pmu (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux.pmu");
+  tdesc_create_reg (feature, "mmcr0", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "mmcr2", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "siar", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "sdar", regnum++, 0, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "sier", regnum++, 0, NULL, 64, "uint64");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-linux.c b/gdb/features/rs6000/power-linux.c
new file mode 100644
index 0000000000..63d3e9e4cd
--- /dev/null
+++ b/gdb/features/rs6000/power-linux.c
@@ -0,0 +1,16 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-linux.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_linux (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
+  regnum = 71;
+  tdesc_create_reg (feature, "orig_r3", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "trap", regnum++, 1, NULL, 32, "int");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-oea.c b/gdb/features/rs6000/power-oea.c
new file mode 100644
index 0000000000..e284272374
--- /dev/null
+++ b/gdb/features/rs6000/power-oea.c
@@ -0,0 +1,62 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-oea.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_oea (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "OEA");
+  regnum = 71;
+  tdesc_create_reg (feature, "sr0", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sr1", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sr2", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sr3", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sr4", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sr5", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sr6", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sr7", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sr8", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sr9", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sr10", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sr11", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sr12", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sr13", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sr14", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sr15", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "pvr", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ibat0u", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ibat0l", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ibat1u", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ibat1l", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ibat2u", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ibat2l", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ibat3u", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ibat3l", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "dbat0u", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "dbat0l", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "dbat1u", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "dbat1l", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "dbat2u", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "dbat2l", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "dbat3u", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "dbat3l", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sdr1", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "asr", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "dar", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "dsisr", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sprg0", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sprg1", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sprg2", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "sprg3", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "srr0", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "srr1", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "tbl", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "tbu", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "dec", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "dabr", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ear", regnum++, 1, NULL, 32, "int");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-ppr.c b/gdb/features/rs6000/power-ppr.c
new file mode 100644
index 0000000000..ab3768cc9f
--- /dev/null
+++ b/gdb/features/rs6000/power-ppr.c
@@ -0,0 +1,14 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-ppr.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_ppr (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.ppr");
+  tdesc_create_reg (feature, "ppr", regnum++, 1, NULL, 64, "uint64");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-spe.c b/gdb/features/rs6000/power-spe.c
new file mode 100644
index 0000000000..9e9ca7c9dd
--- /dev/null
+++ b/gdb/features/rs6000/power-spe.c
@@ -0,0 +1,49 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-spe.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_spe (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.spe");
+  regnum = 32;
+  tdesc_create_reg (feature, "ev0h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev1h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev2h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev3h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev4h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev5h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev6h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev7h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev8h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev9h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev10h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev11h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev12h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev13h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev14h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev15h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev16h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev17h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev18h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev19h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev20h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev21h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev22h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev23h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev24h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev25h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev26h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev27h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev28h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev29h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev30h", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "ev31h", regnum++, 1, NULL, 32, "int");
+  regnum = 73;
+  tdesc_create_reg (feature, "acc", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "spefscr", regnum++, 1, NULL, 32, "int");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-tar.c b/gdb/features/rs6000/power-tar.c
new file mode 100644
index 0000000000..7186d6fd2c
--- /dev/null
+++ b/gdb/features/rs6000/power-tar.c
@@ -0,0 +1,14 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-tar.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_tar (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.tar");
+  tdesc_create_reg (feature, "tar", regnum++, 1, NULL, 64, "uint64");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/power-vsx.c b/gdb/features/rs6000/power-vsx.c
new file mode 100644
index 0000000000..319eba4b9a
--- /dev/null
+++ b/gdb/features/rs6000/power-vsx.c
@@ -0,0 +1,45 @@ 
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: power-vsx.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_rs6000_power_vsx (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.power.vsx");
+  tdesc_create_reg (feature, "vs0h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs1h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs2h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs3h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs4h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs5h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs6h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs7h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs8h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs9h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs10h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs11h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs12h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs13h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs14h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs15h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs16h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs17h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs18h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs19h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs20h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs21h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs22h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs23h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs24h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs25h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs26h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs27h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs28h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs29h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs30h", regnum++, 1, NULL, 64, "uint64");
+  tdesc_create_reg (feature, "vs31h", regnum++, 1, NULL, 64, "uint64");
+  return regnum;
+}
diff --git a/gdb/features/rs6000/powerpc-32l.c b/gdb/features/rs6000/powerpc-32l.c
deleted file mode 100644
index 8089c0434e..0000000000
--- a/gdb/features/rs6000/powerpc-32l.c
+++ /dev/null
@@ -1,97 +0,0 @@ 
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-32l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_32l;
-static void
-initialize_tdesc_powerpc_32l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
-
-  tdesc_powerpc_32l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-32l.xml b/gdb/features/rs6000/powerpc-32l.xml
deleted file mode 100644
index f381b7e5de..0000000000
--- a/gdb/features/rs6000/powerpc-32l.xml
+++ /dev/null
@@ -1,17 +0,0 @@ 
-<?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!-- PowerPC UISA - a PPC processor as viewed by user-level code.  A UISA-only
-     view of the PowerPC.  Includes Linux-only special "registers".  -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common</architecture>
-  <xi:include href="power-core.xml"/>
-  <xi:include href="power-fpu.xml"/>
-  <xi:include href="power-linux.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-64l.c b/gdb/features/rs6000/powerpc-64l.c
deleted file mode 100644
index 408794e13a..0000000000
--- a/gdb/features/rs6000/powerpc-64l.c
+++ /dev/null
@@ -1,97 +0,0 @@ 
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-64l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_64l;
-static void
-initialize_tdesc_powerpc_64l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int");
-
-  tdesc_powerpc_64l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-64l.xml b/gdb/features/rs6000/powerpc-64l.xml
deleted file mode 100644
index cdc2f19147..0000000000
--- a/gdb/features/rs6000/powerpc-64l.xml
+++ /dev/null
@@ -1,17 +0,0 @@ 
-<?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!-- PowerPC UISA - a PPC processor as viewed by user-level code.  A UISA-only
-     view of the PowerPC.  Includes Linux-only special "registers".  -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common64</architecture>
-  <xi:include href="power64-core.xml"/>
-  <xi:include href="power-fpu.xml"/>
-  <xi:include href="power64-linux.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-altivec32l.c b/gdb/features/rs6000/powerpc-altivec32l.c
deleted file mode 100644
index 81862cb9ef..0000000000
--- a/gdb/features/rs6000/powerpc-altivec32l.c
+++ /dev/null
@@ -1,160 +0,0 @@ 
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-altivec32l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_altivec32l;
-static void
-initialize_tdesc_powerpc_altivec32l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
-  tdesc_type *element_type;
-  element_type = tdesc_named_type (feature, "ieee_single");
-  tdesc_create_vector (feature, "v4f", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int32");
-  tdesc_create_vector (feature, "v4i32", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int16");
-  tdesc_create_vector (feature, "v8i16", element_type, 8);
-
-  element_type = tdesc_named_type (feature, "int8");
-  tdesc_create_vector (feature, "v16i8", element_type, 16);
-
-  tdesc_type_with_fields *type_with_fields;
-  type_with_fields = tdesc_create_union (feature, "vec128");
-  tdesc_type *field_type;
-  field_type = tdesc_named_type (feature, "uint128");
-  tdesc_add_field (type_with_fields, "uint128", field_type);
-  field_type = tdesc_named_type (feature, "v4f");
-  tdesc_add_field (type_with_fields, "v4_float", field_type);
-  field_type = tdesc_named_type (feature, "v4i32");
-  tdesc_add_field (type_with_fields, "v4_int32", field_type);
-  field_type = tdesc_named_type (feature, "v8i16");
-  tdesc_add_field (type_with_fields, "v8_int16", field_type);
-  field_type = tdesc_named_type (feature, "v16i8");
-  tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
-  tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
-  tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
-
-  tdesc_powerpc_altivec32l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-altivec32l.xml b/gdb/features/rs6000/powerpc-altivec32l.xml
deleted file mode 100644
index 956fd49534..0000000000
--- a/gdb/features/rs6000/powerpc-altivec32l.xml
+++ /dev/null
@@ -1,19 +0,0 @@ 
-<?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!-- PowerPC UISA - a PPC processor as viewed by user-level code.  A UISA-only
-     view of the PowerPC.  Includes Linux-only special "registers" and AltiVec
-     vector registers.  -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common</architecture>
-  <xi:include href="power-core.xml"/>
-  <xi:include href="power-fpu.xml"/>
-  <xi:include href="power-linux.xml"/>
-  <xi:include href="power-altivec.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-altivec64l.c b/gdb/features/rs6000/powerpc-altivec64l.c
deleted file mode 100644
index ce0bc86137..0000000000
--- a/gdb/features/rs6000/powerpc-altivec64l.c
+++ /dev/null
@@ -1,160 +0,0 @@ 
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-altivec64l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_altivec64l;
-static void
-initialize_tdesc_powerpc_altivec64l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
-  tdesc_type *element_type;
-  element_type = tdesc_named_type (feature, "ieee_single");
-  tdesc_create_vector (feature, "v4f", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int32");
-  tdesc_create_vector (feature, "v4i32", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int16");
-  tdesc_create_vector (feature, "v8i16", element_type, 8);
-
-  element_type = tdesc_named_type (feature, "int8");
-  tdesc_create_vector (feature, "v16i8", element_type, 16);
-
-  tdesc_type_with_fields *type_with_fields;
-  type_with_fields = tdesc_create_union (feature, "vec128");
-  tdesc_type *field_type;
-  field_type = tdesc_named_type (feature, "uint128");
-  tdesc_add_field (type_with_fields, "uint128", field_type);
-  field_type = tdesc_named_type (feature, "v4f");
-  tdesc_add_field (type_with_fields, "v4_float", field_type);
-  field_type = tdesc_named_type (feature, "v4i32");
-  tdesc_add_field (type_with_fields, "v4_int32", field_type);
-  field_type = tdesc_named_type (feature, "v8i16");
-  tdesc_add_field (type_with_fields, "v8_int16", field_type);
-  field_type = tdesc_named_type (feature, "v16i8");
-  tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
-  tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
-  tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
-
-  tdesc_powerpc_altivec64l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-altivec64l.xml b/gdb/features/rs6000/powerpc-altivec64l.xml
deleted file mode 100644
index f0e2f0cdbb..0000000000
--- a/gdb/features/rs6000/powerpc-altivec64l.xml
+++ /dev/null
@@ -1,19 +0,0 @@ 
-<?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!-- PowerPC UISA - a PPC processor as viewed by user-level code.  A UISA-only
-     view of the PowerPC.  Includes Linux-only special "registers" and AltiVec
-     vector registers.   -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common64</architecture>
-  <xi:include href="power64-core.xml"/>
-  <xi:include href="power-fpu.xml"/>
-  <xi:include href="power64-linux.xml"/>
-  <xi:include href="power-altivec.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-e500l.c b/gdb/features/rs6000/powerpc-e500l.c
deleted file mode 100644
index 61acbf3dd3..0000000000
--- a/gdb/features/rs6000/powerpc-e500l.c
+++ /dev/null
@@ -1,98 +0,0 @@ 
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-e500l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_e500l;
-static void
-initialize_tdesc_powerpc_e500l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:e500"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.spe");
-  tdesc_create_reg (feature, "ev0h", 32, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev1h", 33, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev2h", 34, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev3h", 35, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev4h", 36, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev5h", 37, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev6h", 38, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev7h", 39, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev8h", 40, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev9h", 41, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev10h", 42, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev11h", 43, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev12h", 44, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev13h", 45, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev14h", 46, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev15h", 47, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev16h", 48, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev17h", 49, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev18h", 50, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev19h", 51, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev20h", 52, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev21h", 53, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev22h", 54, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev23h", 55, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev24h", 56, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev25h", 57, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev26h", 58, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev27h", 59, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev28h", 60, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev29h", 61, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev30h", 62, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ev31h", 63, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "acc", 73, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "spefscr", 74, 1, NULL, 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
-
-  tdesc_powerpc_e500l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-e500l.xml b/gdb/features/rs6000/powerpc-e500l.xml
deleted file mode 100644
index 902fe7900d..0000000000
--- a/gdb/features/rs6000/powerpc-e500l.xml
+++ /dev/null
@@ -1,14 +0,0 @@ 
-<?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:e500</architecture>
-  <xi:include href="power-core.xml"/>
-  <xi:include href="power-spe.xml"/>
-  <xi:include href="power-linux.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-isa205-32l.c b/gdb/features/rs6000/powerpc-isa205-32l.c
deleted file mode 100644
index de6548fdf7..0000000000
--- a/gdb/features/rs6000/powerpc-isa205-32l.c
+++ /dev/null
@@ -1,97 +0,0 @@ 
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-isa205-32l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_isa205_32l;
-static void
-initialize_tdesc_powerpc_isa205_32l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
-
-  tdesc_powerpc_isa205_32l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-isa205-32l.xml b/gdb/features/rs6000/powerpc-isa205-32l.xml
deleted file mode 100644
index e7a16f66c2..0000000000
--- a/gdb/features/rs6000/powerpc-isa205-32l.xml
+++ /dev/null
@@ -1,17 +0,0 @@ 
-<?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!-- PowerPC UISA - a PPC processor as viewed by user-level code.  A UISA-only
-     view of the PowerPC.  Includes Linux-only special "registers".  -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common</architecture>
-  <xi:include href="power-core.xml"/>
-  <xi:include href="power-fpu-isa205.xml"/>
-  <xi:include href="power-linux.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-isa205-64l.c b/gdb/features/rs6000/powerpc-isa205-64l.c
deleted file mode 100644
index cd3b2c10a6..0000000000
--- a/gdb/features/rs6000/powerpc-isa205-64l.c
+++ /dev/null
@@ -1,97 +0,0 @@ 
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-isa205-64l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_isa205_64l;
-static void
-initialize_tdesc_powerpc_isa205_64l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int");
-
-  tdesc_powerpc_isa205_64l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-isa205-64l.xml b/gdb/features/rs6000/powerpc-isa205-64l.xml
deleted file mode 100644
index 0c65f34fe1..0000000000
--- a/gdb/features/rs6000/powerpc-isa205-64l.xml
+++ /dev/null
@@ -1,17 +0,0 @@ 
-<?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!-- PowerPC UISA - a PPC processor as viewed by user-level code.  A UISA-only
-     view of the PowerPC.  Includes Linux-only special "registers".  -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common64</architecture>
-  <xi:include href="power64-core.xml"/>
-  <xi:include href="power-fpu-isa205.xml"/>
-  <xi:include href="power64-linux.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-isa205-altivec32l.c b/gdb/features/rs6000/powerpc-isa205-altivec32l.c
deleted file mode 100644
index 09f5c075c8..0000000000
--- a/gdb/features/rs6000/powerpc-isa205-altivec32l.c
+++ /dev/null
@@ -1,160 +0,0 @@ 
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-isa205-altivec32l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_isa205_altivec32l;
-static void
-initialize_tdesc_powerpc_isa205_altivec32l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
-  tdesc_type *element_type;
-  element_type = tdesc_named_type (feature, "ieee_single");
-  tdesc_create_vector (feature, "v4f", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int32");
-  tdesc_create_vector (feature, "v4i32", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int16");
-  tdesc_create_vector (feature, "v8i16", element_type, 8);
-
-  element_type = tdesc_named_type (feature, "int8");
-  tdesc_create_vector (feature, "v16i8", element_type, 16);
-
-  tdesc_type_with_fields *type_with_fields;
-  type_with_fields = tdesc_create_union (feature, "vec128");
-  tdesc_type *field_type;
-  field_type = tdesc_named_type (feature, "uint128");
-  tdesc_add_field (type_with_fields, "uint128", field_type);
-  field_type = tdesc_named_type (feature, "v4f");
-  tdesc_add_field (type_with_fields, "v4_float", field_type);
-  field_type = tdesc_named_type (feature, "v4i32");
-  tdesc_add_field (type_with_fields, "v4_int32", field_type);
-  field_type = tdesc_named_type (feature, "v8i16");
-  tdesc_add_field (type_with_fields, "v8_int16", field_type);
-  field_type = tdesc_named_type (feature, "v16i8");
-  tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
-  tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
-  tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
-
-  tdesc_powerpc_isa205_altivec32l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-isa205-altivec32l.xml b/gdb/features/rs6000/powerpc-isa205-altivec32l.xml
deleted file mode 100644
index 66f7b7b9b7..0000000000
--- a/gdb/features/rs6000/powerpc-isa205-altivec32l.xml
+++ /dev/null
@@ -1,19 +0,0 @@ 
-<?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!-- PowerPC UISA - a PPC processor as viewed by user-level code.  A UISA-only
-     view of the PowerPC.  Includes Linux-only special "registers" and AltiVec
-     vector registers.  -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common</architecture>
-  <xi:include href="power-core.xml"/>
-  <xi:include href="power-fpu-isa205.xml"/>
-  <xi:include href="power-linux.xml"/>
-  <xi:include href="power-altivec.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-isa205-altivec64l.c b/gdb/features/rs6000/powerpc-isa205-altivec64l.c
deleted file mode 100644
index 246fcef085..0000000000
--- a/gdb/features/rs6000/powerpc-isa205-altivec64l.c
+++ /dev/null
@@ -1,160 +0,0 @@ 
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-isa205-altivec64l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_isa205_altivec64l;
-static void
-initialize_tdesc_powerpc_isa205_altivec64l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
-  tdesc_type *element_type;
-  element_type = tdesc_named_type (feature, "ieee_single");
-  tdesc_create_vector (feature, "v4f", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int32");
-  tdesc_create_vector (feature, "v4i32", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int16");
-  tdesc_create_vector (feature, "v8i16", element_type, 8);
-
-  element_type = tdesc_named_type (feature, "int8");
-  tdesc_create_vector (feature, "v16i8", element_type, 16);
-
-  tdesc_type_with_fields *type_with_fields;
-  type_with_fields = tdesc_create_union (feature, "vec128");
-  tdesc_type *field_type;
-  field_type = tdesc_named_type (feature, "uint128");
-  tdesc_add_field (type_with_fields, "uint128", field_type);
-  field_type = tdesc_named_type (feature, "v4f");
-  tdesc_add_field (type_with_fields, "v4_float", field_type);
-  field_type = tdesc_named_type (feature, "v4i32");
-  tdesc_add_field (type_with_fields, "v4_int32", field_type);
-  field_type = tdesc_named_type (feature, "v8i16");
-  tdesc_add_field (type_with_fields, "v8_int16", field_type);
-  field_type = tdesc_named_type (feature, "v16i8");
-  tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
-  tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
-  tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
-
-  tdesc_powerpc_isa205_altivec64l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-isa205-altivec64l.xml b/gdb/features/rs6000/powerpc-isa205-altivec64l.xml
deleted file mode 100644
index 75a08c3f87..0000000000
--- a/gdb/features/rs6000/powerpc-isa205-altivec64l.xml
+++ /dev/null
@@ -1,19 +0,0 @@ 
-<?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!-- PowerPC UISA - a PPC processor as viewed by user-level code.  A UISA-only
-     view of the PowerPC.  Includes Linux-only special "registers" and AltiVec
-     vector registers.   -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common64</architecture>
-  <xi:include href="power64-core.xml"/>
-  <xi:include href="power-fpu-isa205.xml"/>
-  <xi:include href="power64-linux.xml"/>
-  <xi:include href="power-altivec.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c b/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c
deleted file mode 100644
index c8f56ea029..0000000000
--- a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c
+++ /dev/null
@@ -1,200 +0,0 @@ 
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-isa205-ppr-dscr-vsx32l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx32l;
-static void
-initialize_tdesc_powerpc_isa205_ppr_dscr_vsx32l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
-  tdesc_type *element_type;
-  element_type = tdesc_named_type (feature, "ieee_single");
-  tdesc_create_vector (feature, "v4f", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int32");
-  tdesc_create_vector (feature, "v4i32", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int16");
-  tdesc_create_vector (feature, "v8i16", element_type, 8);
-
-  element_type = tdesc_named_type (feature, "int8");
-  tdesc_create_vector (feature, "v16i8", element_type, 16);
-
-  tdesc_type_with_fields *type_with_fields;
-  type_with_fields = tdesc_create_union (feature, "vec128");
-  tdesc_type *field_type;
-  field_type = tdesc_named_type (feature, "uint128");
-  tdesc_add_field (type_with_fields, "uint128", field_type);
-  field_type = tdesc_named_type (feature, "v4f");
-  tdesc_add_field (type_with_fields, "v4_float", field_type);
-  field_type = tdesc_named_type (feature, "v4i32");
-  tdesc_add_field (type_with_fields, "v4_int32", field_type);
-  field_type = tdesc_named_type (feature, "v8i16");
-  tdesc_add_field (type_with_fields, "v8_int16", field_type);
-  field_type = tdesc_named_type (feature, "v16i8");
-  tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
-  tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
-  tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.vsx");
-  tdesc_create_reg (feature, "vs0h", 107, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs1h", 108, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs2h", 109, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs3h", 110, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs4h", 111, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs5h", 112, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs6h", 113, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs7h", 114, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs8h", 115, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs9h", 116, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs10h", 117, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs11h", 118, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs12h", 119, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs13h", 120, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs14h", 121, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs15h", 122, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs16h", 123, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs17h", 124, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs18h", 125, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs19h", 126, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs20h", 127, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs21h", 128, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs22h", 129, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs23h", 130, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs24h", 131, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs25h", 132, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs26h", 133, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs27h", 134, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs28h", 135, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs29h", 136, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs30h", 137, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs31h", 138, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.ppr");
-  tdesc_create_reg (feature, "ppr", 139, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.dscr");
-  tdesc_create_reg (feature, "dscr", 140, 1, NULL, 64, "uint64");
-
-  tdesc_powerpc_isa205_ppr_dscr_vsx32l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.xml b/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.xml
deleted file mode 100644
index 75cfae9236..0000000000
--- a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.xml
+++ /dev/null
@@ -1,18 +0,0 @@ 
-<?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common</architecture>
-  <xi:include href="power-core.xml"/>
-  <xi:include href="power-fpu-isa205.xml"/>
-  <xi:include href="power-linux.xml"/>
-  <xi:include href="power-altivec.xml"/>
-  <xi:include href="power-vsx.xml"/>
-  <xi:include href="power-ppr.xml"/>
-  <xi:include href="power-dscr.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c b/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c
deleted file mode 100644
index 76e32f3b1b..0000000000
--- a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c
+++ /dev/null
@@ -1,200 +0,0 @@ 
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-isa205-ppr-dscr-vsx64l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx64l;
-static void
-initialize_tdesc_powerpc_isa205_ppr_dscr_vsx64l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
-  tdesc_type *element_type;
-  element_type = tdesc_named_type (feature, "ieee_single");
-  tdesc_create_vector (feature, "v4f", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int32");
-  tdesc_create_vector (feature, "v4i32", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int16");
-  tdesc_create_vector (feature, "v8i16", element_type, 8);
-
-  element_type = tdesc_named_type (feature, "int8");
-  tdesc_create_vector (feature, "v16i8", element_type, 16);
-
-  tdesc_type_with_fields *type_with_fields;
-  type_with_fields = tdesc_create_union (feature, "vec128");
-  tdesc_type *field_type;
-  field_type = tdesc_named_type (feature, "uint128");
-  tdesc_add_field (type_with_fields, "uint128", field_type);
-  field_type = tdesc_named_type (feature, "v4f");
-  tdesc_add_field (type_with_fields, "v4_float", field_type);
-  field_type = tdesc_named_type (feature, "v4i32");
-  tdesc_add_field (type_with_fields, "v4_int32", field_type);
-  field_type = tdesc_named_type (feature, "v8i16");
-  tdesc_add_field (type_with_fields, "v8_int16", field_type);
-  field_type = tdesc_named_type (feature, "v16i8");
-  tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
-  tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
-  tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.vsx");
-  tdesc_create_reg (feature, "vs0h", 107, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs1h", 108, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs2h", 109, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs3h", 110, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs4h", 111, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs5h", 112, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs6h", 113, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs7h", 114, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs8h", 115, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs9h", 116, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs10h", 117, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs11h", 118, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs12h", 119, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs13h", 120, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs14h", 121, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs15h", 122, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs16h", 123, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs17h", 124, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs18h", 125, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs19h", 126, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs20h", 127, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs21h", 128, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs22h", 129, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs23h", 130, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs24h", 131, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs25h", 132, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs26h", 133, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs27h", 134, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs28h", 135, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs29h", 136, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs30h", 137, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs31h", 138, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.ppr");
-  tdesc_create_reg (feature, "ppr", 139, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.dscr");
-  tdesc_create_reg (feature, "dscr", 140, 1, NULL, 64, "uint64");
-
-  tdesc_powerpc_isa205_ppr_dscr_vsx64l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.xml b/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.xml
deleted file mode 100644
index 9e2b246a90..0000000000
--- a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.xml
+++ /dev/null
@@ -1,18 +0,0 @@ 
-<?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common64</architecture>
-  <xi:include href="power64-core.xml"/>
-  <xi:include href="power-fpu-isa205.xml"/>
-  <xi:include href="power64-linux.xml"/>
-  <xi:include href="power-altivec.xml"/>
-  <xi:include href="power-vsx.xml"/>
-  <xi:include href="power-ppr.xml"/>
-  <xi:include href="power-dscr.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-isa205-vsx32l.c b/gdb/features/rs6000/powerpc-isa205-vsx32l.c
deleted file mode 100644
index 2a6e232e99..0000000000
--- a/gdb/features/rs6000/powerpc-isa205-vsx32l.c
+++ /dev/null
@@ -1,194 +0,0 @@ 
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-isa205-vsx32l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_isa205_vsx32l;
-static void
-initialize_tdesc_powerpc_isa205_vsx32l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
-  tdesc_type *element_type;
-  element_type = tdesc_named_type (feature, "ieee_single");
-  tdesc_create_vector (feature, "v4f", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int32");
-  tdesc_create_vector (feature, "v4i32", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int16");
-  tdesc_create_vector (feature, "v8i16", element_type, 8);
-
-  element_type = tdesc_named_type (feature, "int8");
-  tdesc_create_vector (feature, "v16i8", element_type, 16);
-
-  tdesc_type_with_fields *type_with_fields;
-  type_with_fields = tdesc_create_union (feature, "vec128");
-  tdesc_type *field_type;
-  field_type = tdesc_named_type (feature, "uint128");
-  tdesc_add_field (type_with_fields, "uint128", field_type);
-  field_type = tdesc_named_type (feature, "v4f");
-  tdesc_add_field (type_with_fields, "v4_float", field_type);
-  field_type = tdesc_named_type (feature, "v4i32");
-  tdesc_add_field (type_with_fields, "v4_int32", field_type);
-  field_type = tdesc_named_type (feature, "v8i16");
-  tdesc_add_field (type_with_fields, "v8_int16", field_type);
-  field_type = tdesc_named_type (feature, "v16i8");
-  tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
-  tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
-  tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.vsx");
-  tdesc_create_reg (feature, "vs0h", 107, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs1h", 108, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs2h", 109, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs3h", 110, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs4h", 111, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs5h", 112, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs6h", 113, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs7h", 114, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs8h", 115, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs9h", 116, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs10h", 117, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs11h", 118, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs12h", 119, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs13h", 120, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs14h", 121, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs15h", 122, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs16h", 123, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs17h", 124, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs18h", 125, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs19h", 126, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs20h", 127, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs21h", 128, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs22h", 129, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs23h", 130, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs24h", 131, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs25h", 132, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs26h", 133, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs27h", 134, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs28h", 135, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs29h", 136, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs30h", 137, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs31h", 138, 1, NULL, 64, "uint64");
-
-  tdesc_powerpc_isa205_vsx32l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-isa205-vsx32l.xml b/gdb/features/rs6000/powerpc-isa205-vsx32l.xml
deleted file mode 100644
index 9aa4fbd988..0000000000
--- a/gdb/features/rs6000/powerpc-isa205-vsx32l.xml
+++ /dev/null
@@ -1,20 +0,0 @@ 
-<?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!-- PowerPC UISA - a PPC processor as viewed by user-level code.  A UISA-only
-     view of the PowerPC.  Includes Linux-only special "registers", AltiVec
-     and VSX vector registers.  -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common</architecture>
-  <xi:include href="power-core.xml"/>
-  <xi:include href="power-fpu-isa205.xml"/>
-  <xi:include href="power-linux.xml"/>
-  <xi:include href="power-altivec.xml"/>
-  <xi:include href="power-vsx.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-isa205-vsx64l.c b/gdb/features/rs6000/powerpc-isa205-vsx64l.c
deleted file mode 100644
index d0e32f29b1..0000000000
--- a/gdb/features/rs6000/powerpc-isa205-vsx64l.c
+++ /dev/null
@@ -1,194 +0,0 @@ 
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-isa205-vsx64l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_isa205_vsx64l;
-static void
-initialize_tdesc_powerpc_isa205_vsx64l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
-  tdesc_type *element_type;
-  element_type = tdesc_named_type (feature, "ieee_single");
-  tdesc_create_vector (feature, "v4f", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int32");
-  tdesc_create_vector (feature, "v4i32", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int16");
-  tdesc_create_vector (feature, "v8i16", element_type, 8);
-
-  element_type = tdesc_named_type (feature, "int8");
-  tdesc_create_vector (feature, "v16i8", element_type, 16);
-
-  tdesc_type_with_fields *type_with_fields;
-  type_with_fields = tdesc_create_union (feature, "vec128");
-  tdesc_type *field_type;
-  field_type = tdesc_named_type (feature, "uint128");
-  tdesc_add_field (type_with_fields, "uint128", field_type);
-  field_type = tdesc_named_type (feature, "v4f");
-  tdesc_add_field (type_with_fields, "v4_float", field_type);
-  field_type = tdesc_named_type (feature, "v4i32");
-  tdesc_add_field (type_with_fields, "v4_int32", field_type);
-  field_type = tdesc_named_type (feature, "v8i16");
-  tdesc_add_field (type_with_fields, "v8_int16", field_type);
-  field_type = tdesc_named_type (feature, "v16i8");
-  tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
-  tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
-  tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.vsx");
-  tdesc_create_reg (feature, "vs0h", 107, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs1h", 108, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs2h", 109, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs3h", 110, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs4h", 111, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs5h", 112, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs6h", 113, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs7h", 114, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs8h", 115, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs9h", 116, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs10h", 117, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs11h", 118, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs12h", 119, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs13h", 120, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs14h", 121, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs15h", 122, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs16h", 123, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs17h", 124, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs18h", 125, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs19h", 126, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs20h", 127, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs21h", 128, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs22h", 129, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs23h", 130, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs24h", 131, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs25h", 132, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs26h", 133, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs27h", 134, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs28h", 135, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs29h", 136, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs30h", 137, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs31h", 138, 1, NULL, 64, "uint64");
-
-  tdesc_powerpc_isa205_vsx64l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-isa205-vsx64l.xml b/gdb/features/rs6000/powerpc-isa205-vsx64l.xml
deleted file mode 100644
index 1d8e8dcdd1..0000000000
--- a/gdb/features/rs6000/powerpc-isa205-vsx64l.xml
+++ /dev/null
@@ -1,20 +0,0 @@ 
-<?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!-- PowerPC UISA - a PPC processor as viewed by user-level code.  A UISA-only
-     view of the PowerPC.  Includes Linux-only special "registers", AltiVec
-     and VSX vector registers.   -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common64</architecture>
-  <xi:include href="power64-core.xml"/>
-  <xi:include href="power-fpu-isa205.xml"/>
-  <xi:include href="power64-linux.xml"/>
-  <xi:include href="power-altivec.xml"/>
-  <xi:include href="power-vsx.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.c b/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.c
deleted file mode 100644
index e1b933c8fb..0000000000
--- a/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.c
+++ /dev/null
@@ -1,396 +0,0 @@ 
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-isa207-htm-vsx32l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_isa207_htm_vsx32l;
-static void
-initialize_tdesc_powerpc_isa207_htm_vsx32l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
-  tdesc_type *element_type;
-  element_type = tdesc_named_type (feature, "ieee_single");
-  tdesc_create_vector (feature, "v4f", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int32");
-  tdesc_create_vector (feature, "v4i32", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int16");
-  tdesc_create_vector (feature, "v8i16", element_type, 8);
-
-  element_type = tdesc_named_type (feature, "int8");
-  tdesc_create_vector (feature, "v16i8", element_type, 16);
-
-  tdesc_type_with_fields *type_with_fields;
-  type_with_fields = tdesc_create_union (feature, "vec128");
-  tdesc_type *field_type;
-  field_type = tdesc_named_type (feature, "uint128");
-  tdesc_add_field (type_with_fields, "uint128", field_type);
-  field_type = tdesc_named_type (feature, "v4f");
-  tdesc_add_field (type_with_fields, "v4_float", field_type);
-  field_type = tdesc_named_type (feature, "v4i32");
-  tdesc_add_field (type_with_fields, "v4_int32", field_type);
-  field_type = tdesc_named_type (feature, "v8i16");
-  tdesc_add_field (type_with_fields, "v8_int16", field_type);
-  field_type = tdesc_named_type (feature, "v16i8");
-  tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
-  tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
-  tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.vsx");
-  tdesc_create_reg (feature, "vs0h", 107, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs1h", 108, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs2h", 109, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs3h", 110, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs4h", 111, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs5h", 112, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs6h", 113, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs7h", 114, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs8h", 115, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs9h", 116, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs10h", 117, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs11h", 118, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs12h", 119, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs13h", 120, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs14h", 121, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs15h", 122, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs16h", 123, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs17h", 124, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs18h", 125, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs19h", 126, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs20h", 127, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs21h", 128, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs22h", 129, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs23h", 130, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs24h", 131, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs25h", 132, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs26h", 133, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs27h", 134, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs28h", 135, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs29h", 136, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs30h", 137, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs31h", 138, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.ppr");
-  tdesc_create_reg (feature, "ppr", 139, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.dscr");
-  tdesc_create_reg (feature, "dscr", 140, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.tar");
-  tdesc_create_reg (feature, "tar", 141, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.ebb");
-  tdesc_create_reg (feature, "bescr", 142, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "ebbhr", 143, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "ebbrr", 144, 0, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux.pmu");
-  tdesc_create_reg (feature, "mmcr0", 145, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "mmcr2", 146, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "siar", 147, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "sdar", 148, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "sier", 149, 0, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.spr");
-  tdesc_create_reg (feature, "tfhar", 150, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "texasr", 151, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "tfiar", 152, 0, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.core");
-  tdesc_create_reg (feature, "cr0", 153, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr1", 154, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr2", 155, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr3", 156, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr4", 157, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr5", 158, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr6", 159, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr7", 160, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr8", 161, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr9", 162, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr10", 163, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr11", 164, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr12", 165, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr13", 166, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr14", 167, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr15", 168, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr16", 169, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr17", 170, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr18", 171, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr19", 172, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr20", 173, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr21", 174, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr22", 175, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr23", 176, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr24", 177, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr25", 178, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr26", 179, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr27", 180, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr28", 181, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr29", 182, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr30", 183, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr31", 184, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "ccr", 185, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cxer", 186, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "clr", 187, 0, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "cctr", 188, 0, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.fpu");
-  tdesc_create_reg (feature, "cf0", 189, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf1", 190, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf2", 191, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf3", 192, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf4", 193, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf5", 194, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf6", 195, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf7", 196, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf8", 197, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf9", 198, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf10", 199, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf11", 200, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf12", 201, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf13", 202, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf14", 203, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf15", 204, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf16", 205, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf17", 206, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf18", 207, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf19", 208, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf20", 209, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf21", 210, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf22", 211, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf23", 212, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf24", 213, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf25", 214, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf26", 215, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf27", 216, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf28", 217, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf29", 218, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf30", 219, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf31", 220, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cfpscr", 221, 0, "float", 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.altivec");
-  element_type = tdesc_named_type (feature, "ieee_single");
-  tdesc_create_vector (feature, "v4f", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int32");
-  tdesc_create_vector (feature, "v4i32", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int16");
-  tdesc_create_vector (feature, "v8i16", element_type, 8);
-
-  element_type = tdesc_named_type (feature, "int8");
-  tdesc_create_vector (feature, "v16i8", element_type, 16);
-
-  type_with_fields = tdesc_create_union (feature, "vec128");
-  field_type = tdesc_named_type (feature, "uint128");
-  tdesc_add_field (type_with_fields, "uint128", field_type);
-  field_type = tdesc_named_type (feature, "v4f");
-  tdesc_add_field (type_with_fields, "v4_float", field_type);
-  field_type = tdesc_named_type (feature, "v4i32");
-  tdesc_add_field (type_with_fields, "v4_int32", field_type);
-  field_type = tdesc_named_type (feature, "v8i16");
-  tdesc_add_field (type_with_fields, "v8_int16", field_type);
-  field_type = tdesc_named_type (feature, "v16i8");
-  tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
-  tdesc_create_reg (feature, "cvr0", 222, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr1", 223, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr2", 224, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr3", 225, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr4", 226, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr5", 227, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr6", 228, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr7", 229, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr8", 230, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr9", 231, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr10", 232, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr11", 233, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr12", 234, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr13", 235, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr14", 236, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr15", 237, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr16", 238, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr17", 239, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr18", 240, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr19", 241, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr20", 242, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr21", 243, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr22", 244, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr23", 245, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr24", 246, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr25", 247, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr26", 248, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr27", 249, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr28", 250, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr29", 251, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr30", 252, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr31", 253, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvscr", 254, 0, "vector", 32, "int");
-  tdesc_create_reg (feature, "cvrsave", 255, 0, "vector", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.vsx");
-  tdesc_create_reg (feature, "cvs0h", 256, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs1h", 257, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs2h", 258, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs3h", 259, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs4h", 260, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs5h", 261, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs6h", 262, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs7h", 263, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs8h", 264, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs9h", 265, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs10h", 266, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs11h", 267, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs12h", 268, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs13h", 269, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs14h", 270, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs15h", 271, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs16h", 272, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs17h", 273, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs18h", 274, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs19h", 275, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs20h", 276, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs21h", 277, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs22h", 278, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs23h", 279, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs24h", 280, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs25h", 281, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs26h", 282, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs27h", 283, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs28h", 284, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs29h", 285, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs30h", 286, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs31h", 287, 0, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.ppr");
-  tdesc_create_reg (feature, "cppr", 288, 0, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.dscr");
-  tdesc_create_reg (feature, "cdscr", 289, 0, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.tar");
-  tdesc_create_reg (feature, "ctar", 290, 0, NULL, 64, "uint64");
-
-  tdesc_powerpc_isa207_htm_vsx32l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.xml b/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.xml
deleted file mode 100644
index 083ad1f5f9..0000000000
--- a/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.xml
+++ /dev/null
@@ -1,29 +0,0 @@ 
-<?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common</architecture>
-  <xi:include href="power-core.xml"/>
-  <xi:include href="power-fpu-isa205.xml"/>
-  <xi:include href="power-linux.xml"/>
-  <xi:include href="power-altivec.xml"/>
-  <xi:include href="power-vsx.xml"/>
-  <xi:include href="power-ppr.xml"/>
-  <xi:include href="power-dscr.xml"/>
-  <xi:include href="power-tar.xml"/>
-  <xi:include href="power-ebb.xml"/>
-  <xi:include href="power-linux-pmu.xml"/>
-  <xi:include href="power-htm-spr.xml"/>
-  <xi:include href="power-htm-core.xml"/>
-  <xi:include href="power-htm-fpu.xml"/>
-  <xi:include href="power-htm-altivec.xml"/>
-  <xi:include href="power-htm-vsx.xml"/>
-  <xi:include href="power-htm-ppr.xml"/>
-  <xi:include href="power-htm-dscr.xml"/>
-  <xi:include href="power-htm-tar.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.c b/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.c
deleted file mode 100644
index 0d818d0159..0000000000
--- a/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.c
+++ /dev/null
@@ -1,396 +0,0 @@ 
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-isa207-htm-vsx64l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_isa207_htm_vsx64l;
-static void
-initialize_tdesc_powerpc_isa207_htm_vsx64l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
-  tdesc_type *element_type;
-  element_type = tdesc_named_type (feature, "ieee_single");
-  tdesc_create_vector (feature, "v4f", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int32");
-  tdesc_create_vector (feature, "v4i32", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int16");
-  tdesc_create_vector (feature, "v8i16", element_type, 8);
-
-  element_type = tdesc_named_type (feature, "int8");
-  tdesc_create_vector (feature, "v16i8", element_type, 16);
-
-  tdesc_type_with_fields *type_with_fields;
-  type_with_fields = tdesc_create_union (feature, "vec128");
-  tdesc_type *field_type;
-  field_type = tdesc_named_type (feature, "uint128");
-  tdesc_add_field (type_with_fields, "uint128", field_type);
-  field_type = tdesc_named_type (feature, "v4f");
-  tdesc_add_field (type_with_fields, "v4_float", field_type);
-  field_type = tdesc_named_type (feature, "v4i32");
-  tdesc_add_field (type_with_fields, "v4_int32", field_type);
-  field_type = tdesc_named_type (feature, "v8i16");
-  tdesc_add_field (type_with_fields, "v8_int16", field_type);
-  field_type = tdesc_named_type (feature, "v16i8");
-  tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
-  tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
-  tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.vsx");
-  tdesc_create_reg (feature, "vs0h", 107, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs1h", 108, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs2h", 109, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs3h", 110, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs4h", 111, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs5h", 112, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs6h", 113, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs7h", 114, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs8h", 115, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs9h", 116, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs10h", 117, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs11h", 118, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs12h", 119, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs13h", 120, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs14h", 121, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs15h", 122, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs16h", 123, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs17h", 124, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs18h", 125, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs19h", 126, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs20h", 127, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs21h", 128, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs22h", 129, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs23h", 130, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs24h", 131, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs25h", 132, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs26h", 133, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs27h", 134, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs28h", 135, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs29h", 136, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs30h", 137, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs31h", 138, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.ppr");
-  tdesc_create_reg (feature, "ppr", 139, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.dscr");
-  tdesc_create_reg (feature, "dscr", 140, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.tar");
-  tdesc_create_reg (feature, "tar", 141, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.ebb");
-  tdesc_create_reg (feature, "bescr", 142, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "ebbhr", 143, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "ebbrr", 144, 0, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux.pmu");
-  tdesc_create_reg (feature, "mmcr0", 145, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "mmcr2", 146, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "siar", 147, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "sdar", 148, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "sier", 149, 0, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.spr");
-  tdesc_create_reg (feature, "tfhar", 150, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "texasr", 151, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "tfiar", 152, 0, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.core");
-  tdesc_create_reg (feature, "cr0", 153, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr1", 154, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr2", 155, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr3", 156, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr4", 157, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr5", 158, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr6", 159, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr7", 160, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr8", 161, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr9", 162, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr10", 163, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr11", 164, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr12", 165, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr13", 166, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr14", 167, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr15", 168, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr16", 169, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr17", 170, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr18", 171, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr19", 172, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr20", 173, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr21", 174, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr22", 175, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr23", 176, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr24", 177, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr25", 178, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr26", 179, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr27", 180, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr28", 181, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr29", 182, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr30", 183, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr31", 184, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "ccr", 185, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cxer", 186, 0, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "clr", 187, 0, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "cctr", 188, 0, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.fpu");
-  tdesc_create_reg (feature, "cf0", 189, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf1", 190, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf2", 191, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf3", 192, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf4", 193, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf5", 194, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf6", 195, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf7", 196, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf8", 197, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf9", 198, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf10", 199, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf11", 200, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf12", 201, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf13", 202, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf14", 203, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf15", 204, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf16", 205, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf17", 206, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf18", 207, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf19", 208, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf20", 209, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf21", 210, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf22", 211, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf23", 212, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf24", 213, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf25", 214, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf26", 215, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf27", 216, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf28", 217, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf29", 218, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf30", 219, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cf31", 220, 0, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "cfpscr", 221, 0, "float", 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.altivec");
-  element_type = tdesc_named_type (feature, "ieee_single");
-  tdesc_create_vector (feature, "v4f", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int32");
-  tdesc_create_vector (feature, "v4i32", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int16");
-  tdesc_create_vector (feature, "v8i16", element_type, 8);
-
-  element_type = tdesc_named_type (feature, "int8");
-  tdesc_create_vector (feature, "v16i8", element_type, 16);
-
-  type_with_fields = tdesc_create_union (feature, "vec128");
-  field_type = tdesc_named_type (feature, "uint128");
-  tdesc_add_field (type_with_fields, "uint128", field_type);
-  field_type = tdesc_named_type (feature, "v4f");
-  tdesc_add_field (type_with_fields, "v4_float", field_type);
-  field_type = tdesc_named_type (feature, "v4i32");
-  tdesc_add_field (type_with_fields, "v4_int32", field_type);
-  field_type = tdesc_named_type (feature, "v8i16");
-  tdesc_add_field (type_with_fields, "v8_int16", field_type);
-  field_type = tdesc_named_type (feature, "v16i8");
-  tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
-  tdesc_create_reg (feature, "cvr0", 222, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr1", 223, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr2", 224, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr3", 225, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr4", 226, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr5", 227, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr6", 228, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr7", 229, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr8", 230, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr9", 231, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr10", 232, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr11", 233, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr12", 234, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr13", 235, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr14", 236, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr15", 237, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr16", 238, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr17", 239, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr18", 240, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr19", 241, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr20", 242, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr21", 243, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr22", 244, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr23", 245, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr24", 246, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr25", 247, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr26", 248, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr27", 249, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr28", 250, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr29", 251, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr30", 252, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvr31", 253, 0, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "cvscr", 254, 0, "vector", 32, "int");
-  tdesc_create_reg (feature, "cvrsave", 255, 0, "vector", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.vsx");
-  tdesc_create_reg (feature, "cvs0h", 256, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs1h", 257, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs2h", 258, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs3h", 259, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs4h", 260, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs5h", 261, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs6h", 262, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs7h", 263, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs8h", 264, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs9h", 265, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs10h", 266, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs11h", 267, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs12h", 268, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs13h", 269, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs14h", 270, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs15h", 271, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs16h", 272, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs17h", 273, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs18h", 274, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs19h", 275, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs20h", 276, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs21h", 277, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs22h", 278, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs23h", 279, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs24h", 280, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs25h", 281, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs26h", 282, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs27h", 283, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs28h", 284, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs29h", 285, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs30h", 286, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cvs31h", 287, 0, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.ppr");
-  tdesc_create_reg (feature, "cppr", 288, 0, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.dscr");
-  tdesc_create_reg (feature, "cdscr", 289, 0, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.htm.tar");
-  tdesc_create_reg (feature, "ctar", 290, 0, NULL, 64, "uint64");
-
-  tdesc_powerpc_isa207_htm_vsx64l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.xml b/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.xml
deleted file mode 100644
index 36a1450ecb..0000000000
--- a/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.xml
+++ /dev/null
@@ -1,29 +0,0 @@ 
-<?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common64</architecture>
-  <xi:include href="power64-core.xml"/>
-  <xi:include href="power-fpu-isa205.xml"/>
-  <xi:include href="power64-linux.xml"/>
-  <xi:include href="power-altivec.xml"/>
-  <xi:include href="power-vsx.xml"/>
-  <xi:include href="power-ppr.xml"/>
-  <xi:include href="power-dscr.xml"/>
-  <xi:include href="power-tar.xml"/>
-  <xi:include href="power-ebb.xml"/>
-  <xi:include href="power-linux-pmu.xml"/>
-  <xi:include href="power-htm-spr.xml"/>
-  <xi:include href="power64-htm-core.xml"/>
-  <xi:include href="power-htm-fpu.xml"/>
-  <xi:include href="power-htm-altivec.xml"/>
-  <xi:include href="power-htm-vsx.xml"/>
-  <xi:include href="power-htm-ppr.xml"/>
-  <xi:include href="power-htm-dscr.xml"/>
-  <xi:include href="power-htm-tar.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-isa207-vsx32l.c b/gdb/features/rs6000/powerpc-isa207-vsx32l.c
deleted file mode 100644
index 8fe0f5e438..0000000000
--- a/gdb/features/rs6000/powerpc-isa207-vsx32l.c
+++ /dev/null
@@ -1,215 +0,0 @@ 
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-isa207-vsx32l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_isa207_vsx32l;
-static void
-initialize_tdesc_powerpc_isa207_vsx32l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
-  tdesc_type *element_type;
-  element_type = tdesc_named_type (feature, "ieee_single");
-  tdesc_create_vector (feature, "v4f", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int32");
-  tdesc_create_vector (feature, "v4i32", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int16");
-  tdesc_create_vector (feature, "v8i16", element_type, 8);
-
-  element_type = tdesc_named_type (feature, "int8");
-  tdesc_create_vector (feature, "v16i8", element_type, 16);
-
-  tdesc_type_with_fields *type_with_fields;
-  type_with_fields = tdesc_create_union (feature, "vec128");
-  tdesc_type *field_type;
-  field_type = tdesc_named_type (feature, "uint128");
-  tdesc_add_field (type_with_fields, "uint128", field_type);
-  field_type = tdesc_named_type (feature, "v4f");
-  tdesc_add_field (type_with_fields, "v4_float", field_type);
-  field_type = tdesc_named_type (feature, "v4i32");
-  tdesc_add_field (type_with_fields, "v4_int32", field_type);
-  field_type = tdesc_named_type (feature, "v8i16");
-  tdesc_add_field (type_with_fields, "v8_int16", field_type);
-  field_type = tdesc_named_type (feature, "v16i8");
-  tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
-  tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
-  tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.vsx");
-  tdesc_create_reg (feature, "vs0h", 107, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs1h", 108, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs2h", 109, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs3h", 110, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs4h", 111, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs5h", 112, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs6h", 113, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs7h", 114, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs8h", 115, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs9h", 116, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs10h", 117, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs11h", 118, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs12h", 119, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs13h", 120, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs14h", 121, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs15h", 122, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs16h", 123, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs17h", 124, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs18h", 125, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs19h", 126, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs20h", 127, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs21h", 128, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs22h", 129, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs23h", 130, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs24h", 131, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs25h", 132, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs26h", 133, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs27h", 134, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs28h", 135, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs29h", 136, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs30h", 137, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs31h", 138, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.ppr");
-  tdesc_create_reg (feature, "ppr", 139, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.dscr");
-  tdesc_create_reg (feature, "dscr", 140, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.tar");
-  tdesc_create_reg (feature, "tar", 141, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.ebb");
-  tdesc_create_reg (feature, "bescr", 142, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "ebbhr", 143, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "ebbrr", 144, 0, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux.pmu");
-  tdesc_create_reg (feature, "mmcr0", 145, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "mmcr2", 146, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "siar", 147, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "sdar", 148, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "sier", 149, 0, NULL, 64, "uint64");
-
-  tdesc_powerpc_isa207_vsx32l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-isa207-vsx32l.xml b/gdb/features/rs6000/powerpc-isa207-vsx32l.xml
deleted file mode 100644
index 72aa9346c4..0000000000
--- a/gdb/features/rs6000/powerpc-isa207-vsx32l.xml
+++ /dev/null
@@ -1,21 +0,0 @@ 
-<?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common</architecture>
-  <xi:include href="power-core.xml"/>
-  <xi:include href="power-fpu-isa205.xml"/>
-  <xi:include href="power-linux.xml"/>
-  <xi:include href="power-altivec.xml"/>
-  <xi:include href="power-vsx.xml"/>
-  <xi:include href="power-ppr.xml"/>
-  <xi:include href="power-dscr.xml"/>
-  <xi:include href="power-tar.xml"/>
-  <xi:include href="power-ebb.xml"/>
-  <xi:include href="power-linux-pmu.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-isa207-vsx64l.c b/gdb/features/rs6000/powerpc-isa207-vsx64l.c
deleted file mode 100644
index 0af1879e10..0000000000
--- a/gdb/features/rs6000/powerpc-isa207-vsx64l.c
+++ /dev/null
@@ -1,215 +0,0 @@ 
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-isa207-vsx64l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_isa207_vsx64l;
-static void
-initialize_tdesc_powerpc_isa207_vsx64l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
-  tdesc_type *element_type;
-  element_type = tdesc_named_type (feature, "ieee_single");
-  tdesc_create_vector (feature, "v4f", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int32");
-  tdesc_create_vector (feature, "v4i32", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int16");
-  tdesc_create_vector (feature, "v8i16", element_type, 8);
-
-  element_type = tdesc_named_type (feature, "int8");
-  tdesc_create_vector (feature, "v16i8", element_type, 16);
-
-  tdesc_type_with_fields *type_with_fields;
-  type_with_fields = tdesc_create_union (feature, "vec128");
-  tdesc_type *field_type;
-  field_type = tdesc_named_type (feature, "uint128");
-  tdesc_add_field (type_with_fields, "uint128", field_type);
-  field_type = tdesc_named_type (feature, "v4f");
-  tdesc_add_field (type_with_fields, "v4_float", field_type);
-  field_type = tdesc_named_type (feature, "v4i32");
-  tdesc_add_field (type_with_fields, "v4_int32", field_type);
-  field_type = tdesc_named_type (feature, "v8i16");
-  tdesc_add_field (type_with_fields, "v8_int16", field_type);
-  field_type = tdesc_named_type (feature, "v16i8");
-  tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
-  tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
-  tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.vsx");
-  tdesc_create_reg (feature, "vs0h", 107, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs1h", 108, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs2h", 109, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs3h", 110, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs4h", 111, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs5h", 112, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs6h", 113, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs7h", 114, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs8h", 115, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs9h", 116, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs10h", 117, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs11h", 118, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs12h", 119, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs13h", 120, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs14h", 121, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs15h", 122, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs16h", 123, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs17h", 124, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs18h", 125, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs19h", 126, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs20h", 127, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs21h", 128, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs22h", 129, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs23h", 130, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs24h", 131, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs25h", 132, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs26h", 133, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs27h", 134, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs28h", 135, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs29h", 136, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs30h", 137, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs31h", 138, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.ppr");
-  tdesc_create_reg (feature, "ppr", 139, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.dscr");
-  tdesc_create_reg (feature, "dscr", 140, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.tar");
-  tdesc_create_reg (feature, "tar", 141, 1, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.ebb");
-  tdesc_create_reg (feature, "bescr", 142, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "ebbhr", 143, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "ebbrr", 144, 0, NULL, 64, "uint64");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux.pmu");
-  tdesc_create_reg (feature, "mmcr0", 145, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "mmcr2", 146, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "siar", 147, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "sdar", 148, 0, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "sier", 149, 0, NULL, 64, "uint64");
-
-  tdesc_powerpc_isa207_vsx64l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-isa207-vsx64l.xml b/gdb/features/rs6000/powerpc-isa207-vsx64l.xml
deleted file mode 100644
index fae5990651..0000000000
--- a/gdb/features/rs6000/powerpc-isa207-vsx64l.xml
+++ /dev/null
@@ -1,21 +0,0 @@ 
-<?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common64</architecture>
-  <xi:include href="power64-core.xml"/>
-  <xi:include href="power-fpu-isa205.xml"/>
-  <xi:include href="power64-linux.xml"/>
-  <xi:include href="power-altivec.xml"/>
-  <xi:include href="power-vsx.xml"/>
-  <xi:include href="power-ppr.xml"/>
-  <xi:include href="power-dscr.xml"/>
-  <xi:include href="power-tar.xml"/>
-  <xi:include href="power-ebb.xml"/>
-  <xi:include href="power-linux-pmu.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-vsx32l.c b/gdb/features/rs6000/powerpc-vsx32l.c
deleted file mode 100644
index f08df14f9e..0000000000
--- a/gdb/features/rs6000/powerpc-vsx32l.c
+++ /dev/null
@@ -1,194 +0,0 @@ 
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-vsx32l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_vsx32l;
-static void
-initialize_tdesc_powerpc_vsx32l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
-  tdesc_type *element_type;
-  element_type = tdesc_named_type (feature, "ieee_single");
-  tdesc_create_vector (feature, "v4f", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int32");
-  tdesc_create_vector (feature, "v4i32", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int16");
-  tdesc_create_vector (feature, "v8i16", element_type, 8);
-
-  element_type = tdesc_named_type (feature, "int8");
-  tdesc_create_vector (feature, "v16i8", element_type, 16);
-
-  tdesc_type_with_fields *type_with_fields;
-  type_with_fields = tdesc_create_union (feature, "vec128");
-  tdesc_type *field_type;
-  field_type = tdesc_named_type (feature, "uint128");
-  tdesc_add_field (type_with_fields, "uint128", field_type);
-  field_type = tdesc_named_type (feature, "v4f");
-  tdesc_add_field (type_with_fields, "v4_float", field_type);
-  field_type = tdesc_named_type (feature, "v4i32");
-  tdesc_add_field (type_with_fields, "v4_int32", field_type);
-  field_type = tdesc_named_type (feature, "v8i16");
-  tdesc_add_field (type_with_fields, "v8_int16", field_type);
-  field_type = tdesc_named_type (feature, "v16i8");
-  tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
-  tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
-  tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.vsx");
-  tdesc_create_reg (feature, "vs0h", 107, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs1h", 108, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs2h", 109, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs3h", 110, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs4h", 111, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs5h", 112, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs6h", 113, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs7h", 114, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs8h", 115, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs9h", 116, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs10h", 117, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs11h", 118, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs12h", 119, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs13h", 120, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs14h", 121, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs15h", 122, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs16h", 123, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs17h", 124, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs18h", 125, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs19h", 126, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs20h", 127, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs21h", 128, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs22h", 129, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs23h", 130, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs24h", 131, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs25h", 132, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs26h", 133, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs27h", 134, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs28h", 135, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs29h", 136, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs30h", 137, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs31h", 138, 1, NULL, 64, "uint64");
-
-  tdesc_powerpc_vsx32l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-vsx32l.xml b/gdb/features/rs6000/powerpc-vsx32l.xml
deleted file mode 100644
index b547142972..0000000000
--- a/gdb/features/rs6000/powerpc-vsx32l.xml
+++ /dev/null
@@ -1,20 +0,0 @@ 
-<?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!-- PowerPC UISA - a PPC processor as viewed by user-level code.  A UISA-only
-     view of the PowerPC.  Includes Linux-only special "registers", AltiVec
-     and VSX vector registers.  -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common</architecture>
-  <xi:include href="power-core.xml"/>
-  <xi:include href="power-fpu.xml"/>
-  <xi:include href="power-linux.xml"/>
-  <xi:include href="power-altivec.xml"/>
-  <xi:include href="power-vsx.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-vsx64l.c b/gdb/features/rs6000/powerpc-vsx64l.c
deleted file mode 100644
index 1726e6754f..0000000000
--- a/gdb/features/rs6000/powerpc-vsx64l.c
+++ /dev/null
@@ -1,194 +0,0 @@ 
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-vsx64l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_vsx64l;
-static void
-initialize_tdesc_powerpc_vsx64l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
-  tdesc_type *element_type;
-  element_type = tdesc_named_type (feature, "ieee_single");
-  tdesc_create_vector (feature, "v4f", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int32");
-  tdesc_create_vector (feature, "v4i32", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int16");
-  tdesc_create_vector (feature, "v8i16", element_type, 8);
-
-  element_type = tdesc_named_type (feature, "int8");
-  tdesc_create_vector (feature, "v16i8", element_type, 16);
-
-  tdesc_type_with_fields *type_with_fields;
-  type_with_fields = tdesc_create_union (feature, "vec128");
-  tdesc_type *field_type;
-  field_type = tdesc_named_type (feature, "uint128");
-  tdesc_add_field (type_with_fields, "uint128", field_type);
-  field_type = tdesc_named_type (feature, "v4f");
-  tdesc_add_field (type_with_fields, "v4_float", field_type);
-  field_type = tdesc_named_type (feature, "v4i32");
-  tdesc_add_field (type_with_fields, "v4_int32", field_type);
-  field_type = tdesc_named_type (feature, "v8i16");
-  tdesc_add_field (type_with_fields, "v8_int16", field_type);
-  field_type = tdesc_named_type (feature, "v16i8");
-  tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
-  tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
-  tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.vsx");
-  tdesc_create_reg (feature, "vs0h", 107, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs1h", 108, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs2h", 109, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs3h", 110, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs4h", 111, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs5h", 112, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs6h", 113, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs7h", 114, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs8h", 115, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs9h", 116, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs10h", 117, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs11h", 118, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs12h", 119, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs13h", 120, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs14h", 121, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs15h", 122, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs16h", 123, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs17h", 124, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs18h", 125, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs19h", 126, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs20h", 127, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs21h", 128, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs22h", 129, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs23h", 130, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs24h", 131, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs25h", 132, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs26h", 133, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs27h", 134, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs28h", 135, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs29h", 136, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs30h", 137, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "vs31h", 138, 1, NULL, 64, "uint64");
-
-  tdesc_powerpc_vsx64l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-vsx64l.xml b/gdb/features/rs6000/powerpc-vsx64l.xml
deleted file mode 100644
index e8a3096664..0000000000
--- a/gdb/features/rs6000/powerpc-vsx64l.xml
+++ /dev/null
@@ -1,20 +0,0 @@ 
-<?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!-- PowerPC UISA - a PPC processor as viewed by user-level code.  A UISA-only
-     view of the PowerPC.  Includes Linux-only special "registers", AltiVec
-     and VSX vector registers.   -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common64</architecture>
-  <xi:include href="power64-core.xml"/>
-  <xi:include href="power-fpu.xml"/>
-  <xi:include href="power64-linux.xml"/>
-  <xi:include href="power-altivec.xml"/>
-  <xi:include href="power-vsx.xml"/>
-</target>
diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c
index 6be8f022a7..93ff078be2 100644
--- a/gdb/ppc-linux-nat.c
+++ b/gdb/ppc-linux-nat.c
@@ -51,7 +51,6 @@ 
 #include "auxv.h"
 
 #include "arch/ppc-linux-common.h"
-#include "arch/ppc-linux-tdesc.h"
 #include "nat/ppc-linux.h"
 #include "linux-tdep.h"
 
@@ -1992,29 +1991,67 @@  ppc_linux_nat_target::read_description ()
 	perror_with_name (_("Unable to fetch AltiVec registers"));
     }
 
-  features.isa205 = ppc_linux_has_isa205 (hwcap);
+  features.fpsrc64 = ppc_linux_has_fpsrc64 (hwcap);
+
+  if (check_regset (tid, NT_PPC_PPR, PPC_LINUX_SIZEOF_PPRREGSET))
+    features.ppr = true;
 
   if ((hwcap2 & PPC_FEATURE2_DSCR)
-      && check_regset (tid, NT_PPC_PPR, PPC_LINUX_SIZEOF_PPRREGSET)
       && check_regset (tid, NT_PPC_DSCR, PPC_LINUX_SIZEOF_DSCRREGSET))
+    features.dscr = true;
+
+  if (hwcap2 & PPC_FEATURE2_ARCH_2_07)
     {
-      features.ppr_dscr = true;
-      if ((hwcap2 & PPC_FEATURE2_ARCH_2_07)
-	  && (hwcap2 & PPC_FEATURE2_TAR)
-	  && (hwcap2 & PPC_FEATURE2_EBB)
-	  && check_regset (tid, NT_PPC_TAR, PPC_LINUX_SIZEOF_TARREGSET)
-	  && check_regset (tid, NT_PPC_EBB, PPC_LINUX_SIZEOF_EBBREGSET)
-	  && check_regset (tid, NT_PPC_PMU, PPC_LINUX_SIZEOF_PMUREGSET))
-	{
-	  features.isa207 = true;
-	  if ((hwcap2 & PPC_FEATURE2_HTM)
-	      && check_regset (tid, NT_PPC_TM_SPR,
-			       PPC_LINUX_SIZEOF_TM_SPRREGSET))
-	    features.htm = true;
-	}
+       if ((hwcap2 & PPC_FEATURE2_TAR)
+	   && check_regset (tid, NT_PPC_TAR, PPC_LINUX_SIZEOF_TARREGSET))
+	 features.tar = true;
+
+       if ((hwcap2 & PPC_FEATURE2_EBB)
+	   && check_regset (tid, NT_PPC_EBB, PPC_LINUX_SIZEOF_EBBREGSET))
+	 features.ebb = true
+
+       if (check_regset (tid, NT_PPC_PMU, PPC_LINUX_SIZEOF_PMUREGSET))
+	 features.pmu = true;
+    }
+
+  if (hwcap2 & PPC_FEATURE2_HTM)
+    {
+       if (check_regset (tid, NT_PPC_TM_CVMX, PPC_LINUX_SIZEOF_CVMXREGSET))
+	 features.htm.altivec = true;
+
+       if (features.wordsize == 8)
+	 {
+	    if (check_regset (tid, NT_PPC_TM_CGPR,
+		PPC64_LINUX_SIZEOF_CGPRREGSET))
+	      features.htm.core = true;
+	 }
+       else if (features.wordsize == 4)
+	 {
+	    if (check_regset (tid, NT_PPC_TM_CGPR,
+		PPC32_LINUX_SIZEOF_CGPRREGSET))
+	      features.htm.core = true;
+	 }
+
+       if (check_regset (tid, NT_PPC_TM_CDSCR, PPC_LINUX_SIZEOF_CDSCRREGSET))
+	 features.htm.dscr = true;
+
+       if (check_regset (tid, NT_PPC_TM_CFPR, PPC_LINUX_SIZEOF_CFPRREGSET))
+	 features.htm.fpu = true;
+
+       if (check_regset (tid, NT_PPC_TM_CPPR, PPC_LINUX_SIZEOF_CPPRREGSET))
+	 features.htm.ppr = true;
+
+       if (check_regset (tid, NT_PPC_TM_SPR, PPC_LINUX_SIZEOF_TM_SPRREGSET))
+	 features.htm.spr = true;
+
+       if (check_regset (tid, NT_PPC_TM_CTAR, PPC_LINUX_SIZEOF_CTARREGSET))
+	 features.htm.tar = true;
+
+       if (check_regset (tid, NT_PPC_TM_CVSX, PPC_LINUX_SIZEOF_CVSXREGSET))
+	 features.htm.vsx = true;
     }
 
-  return ppc_linux_match_description (features);
+  return ppc_create_target_description (features);
 }
 
 /* Routines for installing hardware watchpoints and breakpoints.  When
diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c
index 4c4bdacf4d..8d5cf2e3b5 100644
--- a/gdb/ppc-linux-tdep.c
+++ b/gdb/ppc-linux-tdep.c
@@ -37,7 +37,6 @@ 
 #include "ppc64-tdep.h"
 #include "ppc-linux-tdep.h"
 #include "arch/ppc-linux-common.h"
-#include "arch/ppc-linux-tdesc.h"
 #include "glibc-tdep.h"
 #include "trad-frame.h"
 #include "frame-unwind.h"
@@ -62,26 +61,6 @@ 
 #include <ctype.h>
 #include "elf-bfd.h"
 
-#include "features/rs6000/powerpc-32l.c"
-#include "features/rs6000/powerpc-altivec32l.c"
-#include "features/rs6000/powerpc-vsx32l.c"
-#include "features/rs6000/powerpc-isa205-32l.c"
-#include "features/rs6000/powerpc-isa205-altivec32l.c"
-#include "features/rs6000/powerpc-isa205-vsx32l.c"
-#include "features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c"
-#include "features/rs6000/powerpc-isa207-vsx32l.c"
-#include "features/rs6000/powerpc-isa207-htm-vsx32l.c"
-#include "features/rs6000/powerpc-64l.c"
-#include "features/rs6000/powerpc-altivec64l.c"
-#include "features/rs6000/powerpc-vsx64l.c"
-#include "features/rs6000/powerpc-isa205-64l.c"
-#include "features/rs6000/powerpc-isa205-altivec64l.c"
-#include "features/rs6000/powerpc-isa205-vsx64l.c"
-#include "features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c"
-#include "features/rs6000/powerpc-isa207-vsx64l.c"
-#include "features/rs6000/powerpc-isa207-htm-vsx64l.c"
-#include "features/rs6000/powerpc-e500l.c"
-
 /* Shared library operations for PowerPC-Linux.  */
 static struct target_so_ops powerpc_so_ops;
 
@@ -1563,7 +1542,15 @@  ppc_linux_core_read_description (struct gdbarch *gdbarch,
   asection *dscr = bfd_get_section_by_name (abfd, ".reg-ppc-dscr");
   asection *tar = bfd_get_section_by_name (abfd, ".reg-ppc-tar");
   asection *pmu = bfd_get_section_by_name (abfd, ".reg-ppc-pmu");
+  asection *ebb = bfd_get_section_by_name (abfd, ".reg-ppc-ebb");
+  asection *htmaltivec = bfd_get_section_by_name (abfd, ".reg-ppc-tm-cvmx");
+  asection *htmcore = bfd_get_section_by_name (abfd, ".reg-ppc-tm-cgpr");
+  asection *htmdscr = bfd_get_section_by_name (abfd, ".reg-ppc-tm-cdscr");
+  asection *htmfpu = bfd_get_section_by_name (abfd, ".reg-ppc-tm-cfpr");
+  asection *htmppr = bfd_get_section_by_name (abfd, ".reg-ppc-tm-cppr");
   asection *htmspr = bfd_get_section_by_name (abfd, ".reg-ppc-tm-spr");
+  asection *htmtar = bfd_get_section_by_name (abfd, ".reg-ppc-tm-ctar");
+  asection *htmvsx = bfd_get_section_by_name (abfd, ".reg-ppc-tm-cvsx")
 
   if (! section)
     return NULL;
@@ -1588,25 +1575,48 @@  ppc_linux_core_read_description (struct gdbarch *gdbarch,
 
   CORE_ADDR hwcap = linux_get_hwcap (target);
 
-  features.isa205 = ppc_linux_has_isa205 (hwcap);
+  features.fpsrc64 = ppc_linux_has_fpsrc64 (hwcap);
 
-  if (ppr && dscr)
-    {
-      features.ppr_dscr = true;
+  if (ppr)
+    features.ppr = true;
 
-      /* We don't require the EBB note section to be present in the
-	 core file to select isa207 because these registers could have
-	 been unavailable when the core file was created.  They will
-	 be in the tdep but will show as unavailable.  */
-      if (tar && pmu)
-	{
-	  features.isa207 = true;
-	  if (htmspr)
-	    features.htm = true;
-	}
-    }
+  if (dscr)
+    features.dscr = true;
+
+  if (tar)
+    features.tar = true;
+
+  if (pmu)
+    features.pmu = true;
+
+  if (ebb)
+    features.ebb = true;
+
+  if (htmaltivec)
+    features.htm.altivec = true;
 
-  return ppc_linux_match_description (features);
+  if (htmcore)
+    features.htm.core = true;
+
+  if (htmdscr)
+    features.htm.dscr = true;
+
+  if (htmfpu)
+    features.htm.fpu = true;
+
+  if (htmppr)
+    features.htm.ppr = true;
+
+  if (htmspr)
+    features.htm.spr = true;
+
+  if (htmtar)
+    features.htm.tar = true;
+
+  if (htmvsx)
+    features.htm.vsx = true;
+
+  return ppc_create_target_description (features);
 }
 
 
@@ -2167,25 +2177,4 @@  _initialize_ppc_linux_tdep ()
                          ppc_linux_init_abi);
   gdbarch_register_osabi (bfd_arch_rs6000, bfd_mach_rs6k, GDB_OSABI_LINUX,
                          ppc_linux_init_abi);
-
-  /* Initialize the Linux target descriptions.  */
-  initialize_tdesc_powerpc_32l ();
-  initialize_tdesc_powerpc_altivec32l ();
-  initialize_tdesc_powerpc_vsx32l ();
-  initialize_tdesc_powerpc_isa205_32l ();
-  initialize_tdesc_powerpc_isa205_altivec32l ();
-  initialize_tdesc_powerpc_isa205_vsx32l ();
-  initialize_tdesc_powerpc_isa205_ppr_dscr_vsx32l ();
-  initialize_tdesc_powerpc_isa207_vsx32l ();
-  initialize_tdesc_powerpc_isa207_htm_vsx32l ();
-  initialize_tdesc_powerpc_64l ();
-  initialize_tdesc_powerpc_altivec64l ();
-  initialize_tdesc_powerpc_vsx64l ();
-  initialize_tdesc_powerpc_isa205_64l ();
-  initialize_tdesc_powerpc_isa205_altivec64l ();
-  initialize_tdesc_powerpc_isa205_vsx64l ();
-  initialize_tdesc_powerpc_isa205_ppr_dscr_vsx64l ();
-  initialize_tdesc_powerpc_isa207_vsx64l ();
-  initialize_tdesc_powerpc_isa207_htm_vsx64l ();
-  initialize_tdesc_powerpc_e500l ();
 }
diff --git a/gdb/regformats/rs6000/powerpc-32l.dat b/gdb/regformats/rs6000/powerpc-32l.dat
deleted file mode 100644
index 2c8ccbe49b..0000000000
--- a/gdb/regformats/rs6000/powerpc-32l.dat
+++ /dev/null
@@ -1,78 +0,0 @@ 
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-32l.xml
-name:powerpc_32l
-xmltarget:powerpc-32l.xml
-expedite:r1,pc
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:r8
-32:r9
-32:r10
-32:r11
-32:r12
-32:r13
-32:r14
-32:r15
-32:r16
-32:r17
-32:r18
-32:r19
-32:r20
-32:r21
-32:r22
-32:r23
-32:r24
-32:r25
-32:r26
-32:r27
-32:r28
-32:r29
-32:r30
-32:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-32:pc
-32:msr
-32:cr
-32:lr
-32:ctr
-32:xer
-32:fpscr
-32:orig_r3
-32:trap
diff --git a/gdb/regformats/rs6000/powerpc-64l.dat b/gdb/regformats/rs6000/powerpc-64l.dat
deleted file mode 100644
index 10f43b1624..0000000000
--- a/gdb/regformats/rs6000/powerpc-64l.dat
+++ /dev/null
@@ -1,78 +0,0 @@ 
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-64l.xml
-name:powerpc_64l
-xmltarget:powerpc-64l.xml
-expedite:r1,pc
-64:r0
-64:r1
-64:r2
-64:r3
-64:r4
-64:r5
-64:r6
-64:r7
-64:r8
-64:r9
-64:r10
-64:r11
-64:r12
-64:r13
-64:r14
-64:r15
-64:r16
-64:r17
-64:r18
-64:r19
-64:r20
-64:r21
-64:r22
-64:r23
-64:r24
-64:r25
-64:r26
-64:r27
-64:r28
-64:r29
-64:r30
-64:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-64:pc
-64:msr
-32:cr
-64:lr
-64:ctr
-32:xer
-32:fpscr
-64:orig_r3
-64:trap
diff --git a/gdb/regformats/rs6000/powerpc-altivec32l.dat b/gdb/regformats/rs6000/powerpc-altivec32l.dat
deleted file mode 100644
index c792a2f961..0000000000
--- a/gdb/regformats/rs6000/powerpc-altivec32l.dat
+++ /dev/null
@@ -1,112 +0,0 @@ 
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-altivec32l.xml
-name:powerpc_altivec32l
-xmltarget:powerpc-altivec32l.xml
-expedite:r1,pc
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:r8
-32:r9
-32:r10
-32:r11
-32:r12
-32:r13
-32:r14
-32:r15
-32:r16
-32:r17
-32:r18
-32:r19
-32:r20
-32:r21
-32:r22
-32:r23
-32:r24
-32:r25
-32:r26
-32:r27
-32:r28
-32:r29
-32:r30
-32:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-32:pc
-32:msr
-32:cr
-32:lr
-32:ctr
-32:xer
-32:fpscr
-32:orig_r3
-32:trap
-128:vr0
-128:vr1
-128:vr2
-128:vr3
-128:vr4
-128:vr5
-128:vr6
-128:vr7
-128:vr8
-128:vr9
-128:vr10
-128:vr11
-128:vr12
-128:vr13
-128:vr14
-128:vr15
-128:vr16
-128:vr17
-128:vr18
-128:vr19
-128:vr20
-128:vr21
-128:vr22
-128:vr23
-128:vr24
-128:vr25
-128:vr26
-128:vr27
-128:vr28
-128:vr29
-128:vr30
-128:vr31
-32:vscr
-32:vrsave
diff --git a/gdb/regformats/rs6000/powerpc-altivec64l.dat b/gdb/regformats/rs6000/powerpc-altivec64l.dat
deleted file mode 100644
index a806141b6e..0000000000
--- a/gdb/regformats/rs6000/powerpc-altivec64l.dat
+++ /dev/null
@@ -1,112 +0,0 @@ 
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-altivec64l.xml
-name:powerpc_altivec64l
-xmltarget:powerpc-altivec64l.xml
-expedite:r1,pc
-64:r0
-64:r1
-64:r2
-64:r3
-64:r4
-64:r5
-64:r6
-64:r7
-64:r8
-64:r9
-64:r10
-64:r11
-64:r12
-64:r13
-64:r14
-64:r15
-64:r16
-64:r17
-64:r18
-64:r19
-64:r20
-64:r21
-64:r22
-64:r23
-64:r24
-64:r25
-64:r26
-64:r27
-64:r28
-64:r29
-64:r30
-64:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-64:pc
-64:msr
-32:cr
-64:lr
-64:ctr
-32:xer
-32:fpscr
-64:orig_r3
-64:trap
-128:vr0
-128:vr1
-128:vr2
-128:vr3
-128:vr4
-128:vr5
-128:vr6
-128:vr7
-128:vr8
-128:vr9
-128:vr10
-128:vr11
-128:vr12
-128:vr13
-128:vr14
-128:vr15
-128:vr16
-128:vr17
-128:vr18
-128:vr19
-128:vr20
-128:vr21
-128:vr22
-128:vr23
-128:vr24
-128:vr25
-128:vr26
-128:vr27
-128:vr28
-128:vr29
-128:vr30
-128:vr31
-32:vscr
-32:vrsave
diff --git a/gdb/regformats/rs6000/powerpc-e500l.dat b/gdb/regformats/rs6000/powerpc-e500l.dat
deleted file mode 100644
index 750eafed7c..0000000000
--- a/gdb/regformats/rs6000/powerpc-e500l.dat
+++ /dev/null
@@ -1,80 +0,0 @@ 
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-e500l.xml
-name:powerpc_e500l
-xmltarget:powerpc-e500l.xml
-expedite:r1,pc
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:r8
-32:r9
-32:r10
-32:r11
-32:r12
-32:r13
-32:r14
-32:r15
-32:r16
-32:r17
-32:r18
-32:r19
-32:r20
-32:r21
-32:r22
-32:r23
-32:r24
-32:r25
-32:r26
-32:r27
-32:r28
-32:r29
-32:r30
-32:r31
-32:ev0h
-32:ev1h
-32:ev2h
-32:ev3h
-32:ev4h
-32:ev5h
-32:ev6h
-32:ev7h
-32:ev8h
-32:ev9h
-32:ev10h
-32:ev11h
-32:ev12h
-32:ev13h
-32:ev14h
-32:ev15h
-32:ev16h
-32:ev17h
-32:ev18h
-32:ev19h
-32:ev20h
-32:ev21h
-32:ev22h
-32:ev23h
-32:ev24h
-32:ev25h
-32:ev26h
-32:ev27h
-32:ev28h
-32:ev29h
-32:ev30h
-32:ev31h
-32:pc
-32:msr
-32:cr
-32:lr
-32:ctr
-32:xer
-0:
-32:orig_r3
-32:trap
-64:acc
-32:spefscr
diff --git a/gdb/regformats/rs6000/powerpc-isa205-32l.dat b/gdb/regformats/rs6000/powerpc-isa205-32l.dat
deleted file mode 100644
index 7227d06c97..0000000000
--- a/gdb/regformats/rs6000/powerpc-isa205-32l.dat
+++ /dev/null
@@ -1,78 +0,0 @@ 
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-isa205-32l.xml
-name:powerpc_isa205_32l
-xmltarget:powerpc-isa205-32l.xml
-expedite:r1,pc
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:r8
-32:r9
-32:r10
-32:r11
-32:r12
-32:r13
-32:r14
-32:r15
-32:r16
-32:r17
-32:r18
-32:r19
-32:r20
-32:r21
-32:r22
-32:r23
-32:r24
-32:r25
-32:r26
-32:r27
-32:r28
-32:r29
-32:r30
-32:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-32:pc
-32:msr
-32:cr
-32:lr
-32:ctr
-32:xer
-64:fpscr
-32:orig_r3
-32:trap
diff --git a/gdb/regformats/rs6000/powerpc-isa205-64l.dat b/gdb/regformats/rs6000/powerpc-isa205-64l.dat
deleted file mode 100644
index 13a72c7eb8..0000000000
--- a/gdb/regformats/rs6000/powerpc-isa205-64l.dat
+++ /dev/null
@@ -1,78 +0,0 @@ 
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-isa205-64l.xml
-name:powerpc_isa205_64l
-xmltarget:powerpc-isa205-64l.xml
-expedite:r1,pc
-64:r0
-64:r1
-64:r2
-64:r3
-64:r4
-64:r5
-64:r6
-64:r7
-64:r8
-64:r9
-64:r10
-64:r11
-64:r12
-64:r13
-64:r14
-64:r15
-64:r16
-64:r17
-64:r18
-64:r19
-64:r20
-64:r21
-64:r22
-64:r23
-64:r24
-64:r25
-64:r26
-64:r27
-64:r28
-64:r29
-64:r30
-64:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-64:pc
-64:msr
-32:cr
-64:lr
-64:ctr
-32:xer
-64:fpscr
-64:orig_r3
-64:trap
diff --git a/gdb/regformats/rs6000/powerpc-isa205-altivec32l.dat b/gdb/regformats/rs6000/powerpc-isa205-altivec32l.dat
deleted file mode 100644
index 051724c613..0000000000
--- a/gdb/regformats/rs6000/powerpc-isa205-altivec32l.dat
+++ /dev/null
@@ -1,112 +0,0 @@ 
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-isa205-altivec32l.xml
-name:powerpc_isa205_altivec32l
-xmltarget:powerpc-isa205-altivec32l.xml
-expedite:r1,pc
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:r8
-32:r9
-32:r10
-32:r11
-32:r12
-32:r13
-32:r14
-32:r15
-32:r16
-32:r17
-32:r18
-32:r19
-32:r20
-32:r21
-32:r22
-32:r23
-32:r24
-32:r25
-32:r26
-32:r27
-32:r28
-32:r29
-32:r30
-32:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-32:pc
-32:msr
-32:cr
-32:lr
-32:ctr
-32:xer
-64:fpscr
-32:orig_r3
-32:trap
-128:vr0
-128:vr1
-128:vr2
-128:vr3
-128:vr4
-128:vr5
-128:vr6
-128:vr7
-128:vr8
-128:vr9
-128:vr10
-128:vr11
-128:vr12
-128:vr13
-128:vr14
-128:vr15
-128:vr16
-128:vr17
-128:vr18
-128:vr19
-128:vr20
-128:vr21
-128:vr22
-128:vr23
-128:vr24
-128:vr25
-128:vr26
-128:vr27
-128:vr28
-128:vr29
-128:vr30
-128:vr31
-32:vscr
-32:vrsave
diff --git a/gdb/regformats/rs6000/powerpc-isa205-altivec64l.dat b/gdb/regformats/rs6000/powerpc-isa205-altivec64l.dat
deleted file mode 100644
index 867e821351..0000000000
--- a/gdb/regformats/rs6000/powerpc-isa205-altivec64l.dat
+++ /dev/null
@@ -1,112 +0,0 @@ 
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-isa205-altivec64l.xml
-name:powerpc_isa205_altivec64l
-xmltarget:powerpc-isa205-altivec64l.xml
-expedite:r1,pc
-64:r0
-64:r1
-64:r2
-64:r3
-64:r4
-64:r5
-64:r6
-64:r7
-64:r8
-64:r9
-64:r10
-64:r11
-64:r12
-64:r13
-64:r14
-64:r15
-64:r16
-64:r17
-64:r18
-64:r19
-64:r20
-64:r21
-64:r22
-64:r23
-64:r24
-64:r25
-64:r26
-64:r27
-64:r28
-64:r29
-64:r30
-64:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-64:pc
-64:msr
-32:cr
-64:lr
-64:ctr
-32:xer
-64:fpscr
-64:orig_r3
-64:trap
-128:vr0
-128:vr1
-128:vr2
-128:vr3
-128:vr4
-128:vr5
-128:vr6
-128:vr7
-128:vr8
-128:vr9
-128:vr10
-128:vr11
-128:vr12
-128:vr13
-128:vr14
-128:vr15
-128:vr16
-128:vr17
-128:vr18
-128:vr19
-128:vr20
-128:vr21
-128:vr22
-128:vr23
-128:vr24
-128:vr25
-128:vr26
-128:vr27
-128:vr28
-128:vr29
-128:vr30
-128:vr31
-32:vscr
-32:vrsave
diff --git a/gdb/regformats/rs6000/powerpc-isa205-ppr-dscr-vsx32l.dat b/gdb/regformats/rs6000/powerpc-isa205-ppr-dscr-vsx32l.dat
deleted file mode 100644
index 31a7d02e95..0000000000
--- a/gdb/regformats/rs6000/powerpc-isa205-ppr-dscr-vsx32l.dat
+++ /dev/null
@@ -1,146 +0,0 @@ 
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-isa205-ppr-dscr-vsx32l.xml
-name:powerpc_isa205_ppr_dscr_vsx32l
-xmltarget:powerpc-isa205-ppr-dscr-vsx32l.xml
-expedite:r1,pc
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:r8
-32:r9
-32:r10
-32:r11
-32:r12
-32:r13
-32:r14
-32:r15
-32:r16
-32:r17
-32:r18
-32:r19
-32:r20
-32:r21
-32:r22
-32:r23
-32:r24
-32:r25
-32:r26
-32:r27
-32:r28
-32:r29
-32:r30
-32:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-32:pc
-32:msr
-32:cr
-32:lr
-32:ctr
-32:xer
-64:fpscr
-32:orig_r3
-32:trap
-128:vr0
-128:vr1
-128:vr2
-128:vr3
-128:vr4
-128:vr5
-128:vr6
-128:vr7
-128:vr8
-128:vr9
-128:vr10
-128:vr11
-128:vr12
-128:vr13
-128:vr14
-128:vr15
-128:vr16
-128:vr17
-128:vr18
-128:vr19
-128:vr20
-128:vr21
-128:vr22
-128:vr23
-128:vr24
-128:vr25
-128:vr26
-128:vr27
-128:vr28
-128:vr29
-128:vr30
-128:vr31
-32:vscr
-32:vrsave
-64:vs0h
-64:vs1h
-64:vs2h
-64:vs3h
-64:vs4h
-64:vs5h
-64:vs6h
-64:vs7h
-64:vs8h
-64:vs9h
-64:vs10h
-64:vs11h
-64:vs12h
-64:vs13h
-64:vs14h
-64:vs15h
-64:vs16h
-64:vs17h
-64:vs18h
-64:vs19h
-64:vs20h
-64:vs21h
-64:vs22h
-64:vs23h
-64:vs24h
-64:vs25h
-64:vs26h
-64:vs27h
-64:vs28h
-64:vs29h
-64:vs30h
-64:vs31h
-64:ppr
-64:dscr
diff --git a/gdb/regformats/rs6000/powerpc-isa205-ppr-dscr-vsx64l.dat b/gdb/regformats/rs6000/powerpc-isa205-ppr-dscr-vsx64l.dat
deleted file mode 100644
index 74c8feb3ee..0000000000
--- a/gdb/regformats/rs6000/powerpc-isa205-ppr-dscr-vsx64l.dat
+++ /dev/null
@@ -1,146 +0,0 @@ 
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-isa205-ppr-dscr-vsx64l.xml
-name:powerpc_isa205_ppr_dscr_vsx64l
-xmltarget:powerpc-isa205-ppr-dscr-vsx64l.xml
-expedite:r1,pc
-64:r0
-64:r1
-64:r2
-64:r3
-64:r4
-64:r5
-64:r6
-64:r7
-64:r8
-64:r9
-64:r10
-64:r11
-64:r12
-64:r13
-64:r14
-64:r15
-64:r16
-64:r17
-64:r18
-64:r19
-64:r20
-64:r21
-64:r22
-64:r23
-64:r24
-64:r25
-64:r26
-64:r27
-64:r28
-64:r29
-64:r30
-64:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-64:pc
-64:msr
-32:cr
-64:lr
-64:ctr
-32:xer
-64:fpscr
-64:orig_r3
-64:trap
-128:vr0
-128:vr1
-128:vr2
-128:vr3
-128:vr4
-128:vr5
-128:vr6
-128:vr7
-128:vr8
-128:vr9
-128:vr10
-128:vr11
-128:vr12
-128:vr13
-128:vr14
-128:vr15
-128:vr16
-128:vr17
-128:vr18
-128:vr19
-128:vr20
-128:vr21
-128:vr22
-128:vr23
-128:vr24
-128:vr25
-128:vr26
-128:vr27
-128:vr28
-128:vr29
-128:vr30
-128:vr31
-32:vscr
-32:vrsave
-64:vs0h
-64:vs1h
-64:vs2h
-64:vs3h
-64:vs4h
-64:vs5h
-64:vs6h
-64:vs7h
-64:vs8h
-64:vs9h
-64:vs10h
-64:vs11h
-64:vs12h
-64:vs13h
-64:vs14h
-64:vs15h
-64:vs16h
-64:vs17h
-64:vs18h
-64:vs19h
-64:vs20h
-64:vs21h
-64:vs22h
-64:vs23h
-64:vs24h
-64:vs25h
-64:vs26h
-64:vs27h
-64:vs28h
-64:vs29h
-64:vs30h
-64:vs31h
-64:ppr
-64:dscr
diff --git a/gdb/regformats/rs6000/powerpc-isa205-vsx32l.dat b/gdb/regformats/rs6000/powerpc-isa205-vsx32l.dat
deleted file mode 100644
index fa05cae859..0000000000
--- a/gdb/regformats/rs6000/powerpc-isa205-vsx32l.dat
+++ /dev/null
@@ -1,144 +0,0 @@ 
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-isa205-vsx32l.xml
-name:powerpc_isa205_vsx32l
-xmltarget:powerpc-isa205-vsx32l.xml
-expedite:r1,pc
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:r8
-32:r9
-32:r10
-32:r11
-32:r12
-32:r13
-32:r14
-32:r15
-32:r16
-32:r17
-32:r18
-32:r19
-32:r20
-32:r21
-32:r22
-32:r23
-32:r24
-32:r25
-32:r26
-32:r27
-32:r28
-32:r29
-32:r30
-32:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-32:pc
-32:msr
-32:cr
-32:lr
-32:ctr
-32:xer
-64:fpscr
-32:orig_r3
-32:trap
-128:vr0
-128:vr1
-128:vr2
-128:vr3
-128:vr4
-128:vr5
-128:vr6
-128:vr7
-128:vr8
-128:vr9
-128:vr10
-128:vr11
-128:vr12
-128:vr13
-128:vr14
-128:vr15
-128:vr16
-128:vr17
-128:vr18
-128:vr19
-128:vr20
-128:vr21
-128:vr22
-128:vr23
-128:vr24
-128:vr25
-128:vr26
-128:vr27
-128:vr28
-128:vr29
-128:vr30
-128:vr31
-32:vscr
-32:vrsave
-64:vs0h
-64:vs1h
-64:vs2h
-64:vs3h
-64:vs4h
-64:vs5h
-64:vs6h
-64:vs7h
-64:vs8h
-64:vs9h
-64:vs10h
-64:vs11h
-64:vs12h
-64:vs13h
-64:vs14h
-64:vs15h
-64:vs16h
-64:vs17h
-64:vs18h
-64:vs19h
-64:vs20h
-64:vs21h
-64:vs22h
-64:vs23h
-64:vs24h
-64:vs25h
-64:vs26h
-64:vs27h
-64:vs28h
-64:vs29h
-64:vs30h
-64:vs31h
diff --git a/gdb/regformats/rs6000/powerpc-isa205-vsx64l.dat b/gdb/regformats/rs6000/powerpc-isa205-vsx64l.dat
deleted file mode 100644
index 75bd4539ad..0000000000
--- a/gdb/regformats/rs6000/powerpc-isa205-vsx64l.dat
+++ /dev/null
@@ -1,144 +0,0 @@ 
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-isa205-vsx64l.xml
-name:powerpc_isa205_vsx64l
-xmltarget:powerpc-isa205-vsx64l.xml
-expedite:r1,pc
-64:r0
-64:r1
-64:r2
-64:r3
-64:r4
-64:r5
-64:r6
-64:r7
-64:r8
-64:r9
-64:r10
-64:r11
-64:r12
-64:r13
-64:r14
-64:r15
-64:r16
-64:r17
-64:r18
-64:r19
-64:r20
-64:r21
-64:r22
-64:r23
-64:r24
-64:r25
-64:r26
-64:r27
-64:r28
-64:r29
-64:r30
-64:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-64:pc
-64:msr
-32:cr
-64:lr
-64:ctr
-32:xer
-64:fpscr
-64:orig_r3
-64:trap
-128:vr0
-128:vr1
-128:vr2
-128:vr3
-128:vr4
-128:vr5
-128:vr6
-128:vr7
-128:vr8
-128:vr9
-128:vr10
-128:vr11
-128:vr12
-128:vr13
-128:vr14
-128:vr15
-128:vr16
-128:vr17
-128:vr18
-128:vr19
-128:vr20
-128:vr21
-128:vr22
-128:vr23
-128:vr24
-128:vr25
-128:vr26
-128:vr27
-128:vr28
-128:vr29
-128:vr30
-128:vr31
-32:vscr
-32:vrsave
-64:vs0h
-64:vs1h
-64:vs2h
-64:vs3h
-64:vs4h
-64:vs5h
-64:vs6h
-64:vs7h
-64:vs8h
-64:vs9h
-64:vs10h
-64:vs11h
-64:vs12h
-64:vs13h
-64:vs14h
-64:vs15h
-64:vs16h
-64:vs17h
-64:vs18h
-64:vs19h
-64:vs20h
-64:vs21h
-64:vs22h
-64:vs23h
-64:vs24h
-64:vs25h
-64:vs26h
-64:vs27h
-64:vs28h
-64:vs29h
-64:vs30h
-64:vs31h
diff --git a/gdb/regformats/rs6000/powerpc-isa207-htm-vsx32l.dat b/gdb/regformats/rs6000/powerpc-isa207-htm-vsx32l.dat
deleted file mode 100644
index c19416db86..0000000000
--- a/gdb/regformats/rs6000/powerpc-isa207-htm-vsx32l.dat
+++ /dev/null
@@ -1,296 +0,0 @@ 
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-isa207-htm-vsx32l.xml
-name:powerpc_isa207_htm_vsx32l
-xmltarget:powerpc-isa207-htm-vsx32l.xml
-expedite:r1,pc
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:r8
-32:r9
-32:r10
-32:r11
-32:r12
-32:r13
-32:r14
-32:r15
-32:r16
-32:r17
-32:r18
-32:r19
-32:r20
-32:r21
-32:r22
-32:r23
-32:r24
-32:r25
-32:r26
-32:r27
-32:r28
-32:r29
-32:r30
-32:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-32:pc
-32:msr
-32:cr
-32:lr
-32:ctr
-32:xer
-64:fpscr
-32:orig_r3
-32:trap
-128:vr0
-128:vr1
-128:vr2
-128:vr3
-128:vr4
-128:vr5
-128:vr6
-128:vr7
-128:vr8
-128:vr9
-128:vr10
-128:vr11
-128:vr12
-128:vr13
-128:vr14
-128:vr15
-128:vr16
-128:vr17
-128:vr18
-128:vr19
-128:vr20
-128:vr21
-128:vr22
-128:vr23
-128:vr24
-128:vr25
-128:vr26
-128:vr27
-128:vr28
-128:vr29
-128:vr30
-128:vr31
-32:vscr
-32:vrsave
-64:vs0h
-64:vs1h
-64:vs2h
-64:vs3h
-64:vs4h
-64:vs5h
-64:vs6h
-64:vs7h
-64:vs8h
-64:vs9h
-64:vs10h
-64:vs11h
-64:vs12h
-64:vs13h
-64:vs14h
-64:vs15h
-64:vs16h
-64:vs17h
-64:vs18h
-64:vs19h
-64:vs20h
-64:vs21h
-64:vs22h
-64:vs23h
-64:vs24h
-64:vs25h
-64:vs26h
-64:vs27h
-64:vs28h
-64:vs29h
-64:vs30h
-64:vs31h
-64:ppr
-64:dscr
-64:tar
-64:bescr
-64:ebbhr
-64:ebbrr
-64:mmcr0
-64:mmcr2
-64:siar
-64:sdar
-64:sier
-64:tfhar
-64:texasr
-64:tfiar
-32:cr0
-32:cr1
-32:cr2
-32:cr3
-32:cr4
-32:cr5
-32:cr6
-32:cr7
-32:cr8
-32:cr9
-32:cr10
-32:cr11
-32:cr12
-32:cr13
-32:cr14
-32:cr15
-32:cr16
-32:cr17
-32:cr18
-32:cr19
-32:cr20
-32:cr21
-32:cr22
-32:cr23
-32:cr24
-32:cr25
-32:cr26
-32:cr27
-32:cr28
-32:cr29
-32:cr30
-32:cr31
-32:ccr
-32:cxer
-32:clr
-32:cctr
-64:cf0
-64:cf1
-64:cf2
-64:cf3
-64:cf4
-64:cf5
-64:cf6
-64:cf7
-64:cf8
-64:cf9
-64:cf10
-64:cf11
-64:cf12
-64:cf13
-64:cf14
-64:cf15
-64:cf16
-64:cf17
-64:cf18
-64:cf19
-64:cf20
-64:cf21
-64:cf22
-64:cf23
-64:cf24
-64:cf25
-64:cf26
-64:cf27
-64:cf28
-64:cf29
-64:cf30
-64:cf31
-64:cfpscr
-128:cvr0
-128:cvr1
-128:cvr2
-128:cvr3
-128:cvr4
-128:cvr5
-128:cvr6
-128:cvr7
-128:cvr8
-128:cvr9
-128:cvr10
-128:cvr11
-128:cvr12
-128:cvr13
-128:cvr14
-128:cvr15
-128:cvr16
-128:cvr17
-128:cvr18
-128:cvr19
-128:cvr20
-128:cvr21
-128:cvr22
-128:cvr23
-128:cvr24
-128:cvr25
-128:cvr26
-128:cvr27
-128:cvr28
-128:cvr29
-128:cvr30
-128:cvr31
-32:cvscr
-32:cvrsave
-64:cvs0h
-64:cvs1h
-64:cvs2h
-64:cvs3h
-64:cvs4h
-64:cvs5h
-64:cvs6h
-64:cvs7h
-64:cvs8h
-64:cvs9h
-64:cvs10h
-64:cvs11h
-64:cvs12h
-64:cvs13h
-64:cvs14h
-64:cvs15h
-64:cvs16h
-64:cvs17h
-64:cvs18h
-64:cvs19h
-64:cvs20h
-64:cvs21h
-64:cvs22h
-64:cvs23h
-64:cvs24h
-64:cvs25h
-64:cvs26h
-64:cvs27h
-64:cvs28h
-64:cvs29h
-64:cvs30h
-64:cvs31h
-64:cppr
-64:cdscr
-64:ctar
diff --git a/gdb/regformats/rs6000/powerpc-isa207-htm-vsx64l.dat b/gdb/regformats/rs6000/powerpc-isa207-htm-vsx64l.dat
deleted file mode 100644
index 38359959fd..0000000000
--- a/gdb/regformats/rs6000/powerpc-isa207-htm-vsx64l.dat
+++ /dev/null
@@ -1,296 +0,0 @@ 
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-isa207-htm-vsx64l.xml
-name:powerpc_isa207_htm_vsx64l
-xmltarget:powerpc-isa207-htm-vsx64l.xml
-expedite:r1,pc
-64:r0
-64:r1
-64:r2
-64:r3
-64:r4
-64:r5
-64:r6
-64:r7
-64:r8
-64:r9
-64:r10
-64:r11
-64:r12
-64:r13
-64:r14
-64:r15
-64:r16
-64:r17
-64:r18
-64:r19
-64:r20
-64:r21
-64:r22
-64:r23
-64:r24
-64:r25
-64:r26
-64:r27
-64:r28
-64:r29
-64:r30
-64:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-64:pc
-64:msr
-32:cr
-64:lr
-64:ctr
-32:xer
-64:fpscr
-64:orig_r3
-64:trap
-128:vr0
-128:vr1
-128:vr2
-128:vr3
-128:vr4
-128:vr5
-128:vr6
-128:vr7
-128:vr8
-128:vr9
-128:vr10
-128:vr11
-128:vr12
-128:vr13
-128:vr14
-128:vr15
-128:vr16
-128:vr17
-128:vr18
-128:vr19
-128:vr20
-128:vr21
-128:vr22
-128:vr23
-128:vr24
-128:vr25
-128:vr26
-128:vr27
-128:vr28
-128:vr29
-128:vr30
-128:vr31
-32:vscr
-32:vrsave
-64:vs0h
-64:vs1h
-64:vs2h
-64:vs3h
-64:vs4h
-64:vs5h
-64:vs6h
-64:vs7h
-64:vs8h
-64:vs9h
-64:vs10h
-64:vs11h
-64:vs12h
-64:vs13h
-64:vs14h
-64:vs15h
-64:vs16h
-64:vs17h
-64:vs18h
-64:vs19h
-64:vs20h
-64:vs21h
-64:vs22h
-64:vs23h
-64:vs24h
-64:vs25h
-64:vs26h
-64:vs27h
-64:vs28h
-64:vs29h
-64:vs30h
-64:vs31h
-64:ppr
-64:dscr
-64:tar
-64:bescr
-64:ebbhr
-64:ebbrr
-64:mmcr0
-64:mmcr2
-64:siar
-64:sdar
-64:sier
-64:tfhar
-64:texasr
-64:tfiar
-64:cr0
-64:cr1
-64:cr2
-64:cr3
-64:cr4
-64:cr5
-64:cr6
-64:cr7
-64:cr8
-64:cr9
-64:cr10
-64:cr11
-64:cr12
-64:cr13
-64:cr14
-64:cr15
-64:cr16
-64:cr17
-64:cr18
-64:cr19
-64:cr20
-64:cr21
-64:cr22
-64:cr23
-64:cr24
-64:cr25
-64:cr26
-64:cr27
-64:cr28
-64:cr29
-64:cr30
-64:cr31
-32:ccr
-32:cxer
-64:clr
-64:cctr
-64:cf0
-64:cf1
-64:cf2
-64:cf3
-64:cf4
-64:cf5
-64:cf6
-64:cf7
-64:cf8
-64:cf9
-64:cf10
-64:cf11
-64:cf12
-64:cf13
-64:cf14
-64:cf15
-64:cf16
-64:cf17
-64:cf18
-64:cf19
-64:cf20
-64:cf21
-64:cf22
-64:cf23
-64:cf24
-64:cf25
-64:cf26
-64:cf27
-64:cf28
-64:cf29
-64:cf30
-64:cf31
-64:cfpscr
-128:cvr0
-128:cvr1
-128:cvr2
-128:cvr3
-128:cvr4
-128:cvr5
-128:cvr6
-128:cvr7
-128:cvr8
-128:cvr9
-128:cvr10
-128:cvr11
-128:cvr12
-128:cvr13
-128:cvr14
-128:cvr15
-128:cvr16
-128:cvr17
-128:cvr18
-128:cvr19
-128:cvr20
-128:cvr21
-128:cvr22
-128:cvr23
-128:cvr24
-128:cvr25
-128:cvr26
-128:cvr27
-128:cvr28
-128:cvr29
-128:cvr30
-128:cvr31
-32:cvscr
-32:cvrsave
-64:cvs0h
-64:cvs1h
-64:cvs2h
-64:cvs3h
-64:cvs4h
-64:cvs5h
-64:cvs6h
-64:cvs7h
-64:cvs8h
-64:cvs9h
-64:cvs10h
-64:cvs11h
-64:cvs12h
-64:cvs13h
-64:cvs14h
-64:cvs15h
-64:cvs16h
-64:cvs17h
-64:cvs18h
-64:cvs19h
-64:cvs20h
-64:cvs21h
-64:cvs22h
-64:cvs23h
-64:cvs24h
-64:cvs25h
-64:cvs26h
-64:cvs27h
-64:cvs28h
-64:cvs29h
-64:cvs30h
-64:cvs31h
-64:cppr
-64:cdscr
-64:ctar
diff --git a/gdb/regformats/rs6000/powerpc-isa207-vsx32l.dat b/gdb/regformats/rs6000/powerpc-isa207-vsx32l.dat
deleted file mode 100644
index 0718d72d93..0000000000
--- a/gdb/regformats/rs6000/powerpc-isa207-vsx32l.dat
+++ /dev/null
@@ -1,155 +0,0 @@ 
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-isa207-vsx32l.xml
-name:powerpc_isa207_vsx32l
-xmltarget:powerpc-isa207-vsx32l.xml
-expedite:r1,pc
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:r8
-32:r9
-32:r10
-32:r11
-32:r12
-32:r13
-32:r14
-32:r15
-32:r16
-32:r17
-32:r18
-32:r19
-32:r20
-32:r21
-32:r22
-32:r23
-32:r24
-32:r25
-32:r26
-32:r27
-32:r28
-32:r29
-32:r30
-32:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-32:pc
-32:msr
-32:cr
-32:lr
-32:ctr
-32:xer
-64:fpscr
-32:orig_r3
-32:trap
-128:vr0
-128:vr1
-128:vr2
-128:vr3
-128:vr4
-128:vr5
-128:vr6
-128:vr7
-128:vr8
-128:vr9
-128:vr10
-128:vr11
-128:vr12
-128:vr13
-128:vr14
-128:vr15
-128:vr16
-128:vr17
-128:vr18
-128:vr19
-128:vr20
-128:vr21
-128:vr22
-128:vr23
-128:vr24
-128:vr25
-128:vr26
-128:vr27
-128:vr28
-128:vr29
-128:vr30
-128:vr31
-32:vscr
-32:vrsave
-64:vs0h
-64:vs1h
-64:vs2h
-64:vs3h
-64:vs4h
-64:vs5h
-64:vs6h
-64:vs7h
-64:vs8h
-64:vs9h
-64:vs10h
-64:vs11h
-64:vs12h
-64:vs13h
-64:vs14h
-64:vs15h
-64:vs16h
-64:vs17h
-64:vs18h
-64:vs19h
-64:vs20h
-64:vs21h
-64:vs22h
-64:vs23h
-64:vs24h
-64:vs25h
-64:vs26h
-64:vs27h
-64:vs28h
-64:vs29h
-64:vs30h
-64:vs31h
-64:ppr
-64:dscr
-64:tar
-64:bescr
-64:ebbhr
-64:ebbrr
-64:mmcr0
-64:mmcr2
-64:siar
-64:sdar
-64:sier
diff --git a/gdb/regformats/rs6000/powerpc-isa207-vsx64l.dat b/gdb/regformats/rs6000/powerpc-isa207-vsx64l.dat
deleted file mode 100644
index 510c6c87da..0000000000
--- a/gdb/regformats/rs6000/powerpc-isa207-vsx64l.dat
+++ /dev/null
@@ -1,155 +0,0 @@ 
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-isa207-vsx64l.xml
-name:powerpc_isa207_vsx64l
-xmltarget:powerpc-isa207-vsx64l.xml
-expedite:r1,pc
-64:r0
-64:r1
-64:r2
-64:r3
-64:r4
-64:r5
-64:r6
-64:r7
-64:r8
-64:r9
-64:r10
-64:r11
-64:r12
-64:r13
-64:r14
-64:r15
-64:r16
-64:r17
-64:r18
-64:r19
-64:r20
-64:r21
-64:r22
-64:r23
-64:r24
-64:r25
-64:r26
-64:r27
-64:r28
-64:r29
-64:r30
-64:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-64:pc
-64:msr
-32:cr
-64:lr
-64:ctr
-32:xer
-64:fpscr
-64:orig_r3
-64:trap
-128:vr0
-128:vr1
-128:vr2
-128:vr3
-128:vr4
-128:vr5
-128:vr6
-128:vr7
-128:vr8
-128:vr9
-128:vr10
-128:vr11
-128:vr12
-128:vr13
-128:vr14
-128:vr15
-128:vr16
-128:vr17
-128:vr18
-128:vr19
-128:vr20
-128:vr21
-128:vr22
-128:vr23
-128:vr24
-128:vr25
-128:vr26
-128:vr27
-128:vr28
-128:vr29
-128:vr30
-128:vr31
-32:vscr
-32:vrsave
-64:vs0h
-64:vs1h
-64:vs2h
-64:vs3h
-64:vs4h
-64:vs5h
-64:vs6h
-64:vs7h
-64:vs8h
-64:vs9h
-64:vs10h
-64:vs11h
-64:vs12h
-64:vs13h
-64:vs14h
-64:vs15h
-64:vs16h
-64:vs17h
-64:vs18h
-64:vs19h
-64:vs20h
-64:vs21h
-64:vs22h
-64:vs23h
-64:vs24h
-64:vs25h
-64:vs26h
-64:vs27h
-64:vs28h
-64:vs29h
-64:vs30h
-64:vs31h
-64:ppr
-64:dscr
-64:tar
-64:bescr
-64:ebbhr
-64:ebbrr
-64:mmcr0
-64:mmcr2
-64:siar
-64:sdar
-64:sier
diff --git a/gdb/regformats/rs6000/powerpc-vsx32l.dat b/gdb/regformats/rs6000/powerpc-vsx32l.dat
deleted file mode 100644
index 6db3e38d5f..0000000000
--- a/gdb/regformats/rs6000/powerpc-vsx32l.dat
+++ /dev/null
@@ -1,144 +0,0 @@ 
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-vsx32l.xml
-name:powerpc_vsx32l
-xmltarget:powerpc-vsx32l.xml
-expedite:r1,pc
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:r8
-32:r9
-32:r10
-32:r11
-32:r12
-32:r13
-32:r14
-32:r15
-32:r16
-32:r17
-32:r18
-32:r19
-32:r20
-32:r21
-32:r22
-32:r23
-32:r24
-32:r25
-32:r26
-32:r27
-32:r28
-32:r29
-32:r30
-32:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-32:pc
-32:msr
-32:cr
-32:lr
-32:ctr
-32:xer
-32:fpscr
-32:orig_r3
-32:trap
-128:vr0
-128:vr1
-128:vr2
-128:vr3
-128:vr4
-128:vr5
-128:vr6
-128:vr7
-128:vr8
-128:vr9
-128:vr10
-128:vr11
-128:vr12
-128:vr13
-128:vr14
-128:vr15
-128:vr16
-128:vr17
-128:vr18
-128:vr19
-128:vr20
-128:vr21
-128:vr22
-128:vr23
-128:vr24
-128:vr25
-128:vr26
-128:vr27
-128:vr28
-128:vr29
-128:vr30
-128:vr31
-32:vscr
-32:vrsave
-64:vs0h
-64:vs1h
-64:vs2h
-64:vs3h
-64:vs4h
-64:vs5h
-64:vs6h
-64:vs7h
-64:vs8h
-64:vs9h
-64:vs10h
-64:vs11h
-64:vs12h
-64:vs13h
-64:vs14h
-64:vs15h
-64:vs16h
-64:vs17h
-64:vs18h
-64:vs19h
-64:vs20h
-64:vs21h
-64:vs22h
-64:vs23h
-64:vs24h
-64:vs25h
-64:vs26h
-64:vs27h
-64:vs28h
-64:vs29h
-64:vs30h
-64:vs31h
diff --git a/gdb/regformats/rs6000/powerpc-vsx64l.dat b/gdb/regformats/rs6000/powerpc-vsx64l.dat
deleted file mode 100644
index bc0a45512c..0000000000
--- a/gdb/regformats/rs6000/powerpc-vsx64l.dat
+++ /dev/null
@@ -1,144 +0,0 @@ 
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-vsx64l.xml
-name:powerpc_vsx64l
-xmltarget:powerpc-vsx64l.xml
-expedite:r1,pc
-64:r0
-64:r1
-64:r2
-64:r3
-64:r4
-64:r5
-64:r6
-64:r7
-64:r8
-64:r9
-64:r10
-64:r11
-64:r12
-64:r13
-64:r14
-64:r15
-64:r16
-64:r17
-64:r18
-64:r19
-64:r20
-64:r21
-64:r22
-64:r23
-64:r24
-64:r25
-64:r26
-64:r27
-64:r28
-64:r29
-64:r30
-64:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-64:pc
-64:msr
-32:cr
-64:lr
-64:ctr
-32:xer
-32:fpscr
-64:orig_r3
-64:trap
-128:vr0
-128:vr1
-128:vr2
-128:vr3
-128:vr4
-128:vr5
-128:vr6
-128:vr7
-128:vr8
-128:vr9
-128:vr10
-128:vr11
-128:vr12
-128:vr13
-128:vr14
-128:vr15
-128:vr16
-128:vr17
-128:vr18
-128:vr19
-128:vr20
-128:vr21
-128:vr22
-128:vr23
-128:vr24
-128:vr25
-128:vr26
-128:vr27
-128:vr28
-128:vr29
-128:vr30
-128:vr31
-32:vscr
-32:vrsave
-64:vs0h
-64:vs1h
-64:vs2h
-64:vs3h
-64:vs4h
-64:vs5h
-64:vs6h
-64:vs7h
-64:vs8h
-64:vs9h
-64:vs10h
-64:vs11h
-64:vs12h
-64:vs13h
-64:vs14h
-64:vs15h
-64:vs16h
-64:vs17h
-64:vs18h
-64:vs19h
-64:vs20h
-64:vs21h
-64:vs22h
-64:vs23h
-64:vs24h
-64:vs25h
-64:vs26h
-64:vs27h
-64:vs28h
-64:vs29h
-64:vs30h
-64:vs31h
diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c
index 20a3a640f4..b6a80edbbb 100644
--- a/gdb/target-descriptions.c
+++ b/gdb/target-descriptions.c
@@ -1698,7 +1698,8 @@  maint_print_c_tdesc_cmd (const char *args, int from_tty)
       || startswith (filename_after_features.c_str (), "tic6x-")
       || startswith (filename_after_features.c_str (), "aarch64")
       || startswith (filename_after_features.c_str (), "arm/")
-      || startswith (filename_after_features.c_str (), "arc/"))
+      || startswith (filename_after_features.c_str (), "arc/")
+      || startswith (filename_after_features.c_str (), "rs6000/"))
     {
       print_c_feature v (filename_after_features);
 
diff --git a/gdbserver/configure.srv b/gdbserver/configure.srv
index 9a027e44af..0ff094d32c 100644
--- a/gdbserver/configure.srv
+++ b/gdbserver/configure.srv
@@ -205,43 +205,16 @@  case "${gdbserver_host}" in
 			srv_linux_usrregs=yes
 			srv_linux_thread_db=yes
 			;;
-  powerpc*-*-linux*)	srv_regobj="powerpc-32l.o"
-			srv_regobj="${srv_regobj} powerpc-altivec32l.o"
-			srv_regobj="${srv_regobj} powerpc-vsx32l.o"
-			srv_regobj="${srv_regobj} powerpc-isa205-32l.o"
-			srv_regobj="${srv_regobj} powerpc-isa205-altivec32l.o"
-			srv_regobj="${srv_regobj} powerpc-isa205-vsx32l.o"
-			srv_regobj="${srv_regobj} powerpc-isa205-ppr-dscr-vsx32l.o"
-			srv_regobj="${srv_regobj} powerpc-isa207-vsx32l.o"
-			srv_regobj="${srv_regobj} powerpc-isa207-htm-vsx32l.o"
-			srv_regobj="${srv_regobj} powerpc-e500l.o"
-			srv_regobj="${srv_regobj} powerpc-64l.o"
-			srv_regobj="${srv_regobj} powerpc-altivec64l.o"
-			srv_regobj="${srv_regobj} powerpc-vsx64l.o"
-			srv_regobj="${srv_regobj} powerpc-isa205-64l.o"
-			srv_regobj="${srv_regobj} powerpc-isa205-altivec64l.o"
-			srv_regobj="${srv_regobj} powerpc-isa205-vsx64l.o"
-			srv_regobj="${srv_regobj} powerpc-isa205-ppr-dscr-vsx64l.o"
-			srv_regobj="${srv_regobj} powerpc-isa207-vsx64l.o"
-			srv_regobj="${srv_regobj} powerpc-isa207-htm-vsx64l.o"
-			srv_tgtobj="$srv_linux_obj linux-ppc-low.o"
+  powerpc*-*-linux*)	srv_tgtobj="$srv_linux_obj linux-ppc-low.o"
 			srv_tgtobj="${srv_tgtobj} nat/ppc-linux.o"
 			srv_tgtobj="${srv_tgtobj} arch/ppc-linux-common.o"
-			srv_xmlfiles="rs6000/powerpc-32l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-altivec32l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-vsx32l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-32l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-altivec32l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-vsx32l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-ppr-dscr-vsx32l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-vsx32l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-htm-vsx32l.xml"
+			srv_tgtobj="${srv_tgtobj} linux-ppc-tdesc.o"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/power-altivec.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/power-vsx.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/power-core.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/power-linux.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/power-fpu.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-fpu-isa205.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-fpu-fpscr64.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/power-dscr.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/power-ppr.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/power-tar.xml"
@@ -255,17 +228,7 @@  case "${gdbserver_host}" in
 			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-ppr.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-dscr.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-tar.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-e500l.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/power-spe.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-64l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-altivec64l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-vsx64l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-64l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-altivec64l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-vsx64l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-ppr-dscr-vsx64l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-vsx64l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-htm-vsx64l.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/power64-core.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/power64-linux.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/power64-htm-core.xml"
@@ -273,6 +236,8 @@  case "${gdbserver_host}" in
 			srv_linux_regsets=yes
 			srv_linux_thread_db=yes
 			ipa_obj="${ipa_ppc_linux_regobj} linux-ppc-ipa.o"
+			ipa_obj="${ipa_obj} linux-ppc-tdesc-ipa.o"
+			ipa_obj="${ipa_obj} arch/ppc-linux-common-ipa.o"
 			;;
   powerpc-*-lynxos*)	srv_regobj="powerpc-32.o"
 			srv_tgtobj="lynx-low.o lynx-ppc-low.o"
diff --git a/gdbserver/linux-ppc-ipa.cc b/gdbserver/linux-ppc-ipa.cc
index 42d668f7d3..b9443a6a64 100644
--- a/gdbserver/linux-ppc-ipa.cc
+++ b/gdbserver/linux-ppc-ipa.cc
@@ -22,7 +22,6 @@ 
 #include <sys/mman.h>
 #include "tracepoint.h"
 #include "arch/ppc-linux-tdesc.h"
-#include "linux-ppc-tdesc-init.h"
 #include <elf.h>
 #ifdef HAVE_GETAUXVAL
 #include <sys/auxv.h>
@@ -174,58 +173,12 @@  alloc_jump_pad_buffer (size_t size)
 const struct target_desc *
 get_ipa_tdesc (int idx)
 {
-  switch (idx)
-    {
-#ifdef __powerpc64__
-    case PPC_TDESC_BASE:
-      return tdesc_powerpc_64l;
-    case PPC_TDESC_ALTIVEC:
-      return tdesc_powerpc_altivec64l;
-    case PPC_TDESC_VSX:
-      return tdesc_powerpc_vsx64l;
-    case PPC_TDESC_ISA205:
-      return tdesc_powerpc_isa205_64l;
-    case PPC_TDESC_ISA205_ALTIVEC:
-      return tdesc_powerpc_isa205_altivec64l;
-    case PPC_TDESC_ISA205_VSX:
-      return tdesc_powerpc_isa205_vsx64l;
-    case PPC_TDESC_ISA205_PPR_DSCR_VSX:
-      return tdesc_powerpc_isa205_ppr_dscr_vsx64l;
-    case PPC_TDESC_ISA207_VSX:
-      return tdesc_powerpc_isa207_vsx64l;
-    case PPC_TDESC_ISA207_HTM_VSX:
-      return tdesc_powerpc_isa207_htm_vsx64l;
-#else
-    case PPC_TDESC_BASE:
-      return tdesc_powerpc_32l;
-    case PPC_TDESC_ALTIVEC:
-      return tdesc_powerpc_altivec32l;
-    case PPC_TDESC_VSX:
-      return tdesc_powerpc_vsx32l;
-    case PPC_TDESC_ISA205:
-      return tdesc_powerpc_isa205_32l;
-    case PPC_TDESC_ISA205_ALTIVEC:
-      return tdesc_powerpc_isa205_altivec32l;
-    case PPC_TDESC_ISA205_VSX:
-      return tdesc_powerpc_isa205_vsx32l;
-    case PPC_TDESC_ISA205_PPR_DSCR_VSX:
-      return tdesc_powerpc_isa205_ppr_dscr_vsx32l;
-    case PPC_TDESC_ISA207_VSX:
-      return tdesc_powerpc_isa207_vsx32l;
-    case PPC_TDESC_ISA207_HTM_VSX:
-      return tdesc_powerpc_isa207_htm_vsx32l;
-    case PPC_TDESC_E500:
-      return tdesc_powerpc_e500l;
-#endif
-    default:
-      internal_error (__FILE__, __LINE__,
-                     "unknown ipa tdesc index: %d", idx);
-#ifdef __powerpc64__
-      return tdesc_powerpc_64l;
-#else
-      return tdesc_powerpc_32l;
-#endif
-    }
+  bool is_ppc64 = false;
+  #ifdef __powerpc64__
+    is_ppc64 = true;
+  #endif
+
+  return ppc_linux_read_description (is_ppc64);
 }
 
 
@@ -234,26 +187,11 @@  get_ipa_tdesc (int idx)
 void
 initialize_low_tracepoint (void)
 {
-#ifdef __powerpc64__
-  init_registers_powerpc_64l ();
-  init_registers_powerpc_altivec64l ();
-  init_registers_powerpc_vsx64l ();
-  init_registers_powerpc_isa205_64l ();
-  init_registers_powerpc_isa205_altivec64l ();
-  init_registers_powerpc_isa205_vsx64l ();
-  init_registers_powerpc_isa205_ppr_dscr_vsx64l ();
-  init_registers_powerpc_isa207_vsx64l ();
-  init_registers_powerpc_isa207_htm_vsx64l ();
-#else
-  init_registers_powerpc_32l ();
-  init_registers_powerpc_altivec32l ();
-  init_registers_powerpc_vsx32l ();
-  init_registers_powerpc_isa205_32l ();
-  init_registers_powerpc_isa205_altivec32l ();
-  init_registers_powerpc_isa205_vsx32l ();
-  init_registers_powerpc_isa205_ppr_dscr_vsx32l ();
-  init_registers_powerpc_isa207_vsx32l ();
-  init_registers_powerpc_isa207_htm_vsx32l ();
-  init_registers_powerpc_e500l ();
-#endif
+
+  bool is_ppc64 = false;
+  #ifdef __powerpc64__
+    is_ppc64 = true;
+  #endif
+
+  ppc_linux_read_description (is_ppc64)
 }
diff --git a/gdbserver/linux-ppc-low.cc b/gdbserver/linux-ppc-low.cc
index 337d555aee..b982be3e1b 100644
--- a/gdbserver/linux-ppc-low.cc
+++ b/gdbserver/linux-ppc-low.cc
@@ -29,7 +29,6 @@ 
 #include "arch/ppc-linux-tdesc.h"
 #include "nat/ppc-linux.h"
 #include "nat/linux-ptrace.h"
-#include "linux-ppc-tdesc-init.h"
 #include "ax.h"
 #include "tracepoint.h"
 
@@ -885,10 +884,7 @@  ppc_target::low_arch_setup ()
 
   features.wordsize = ppc_linux_target_wordsize (tid);
 
-  if (features.wordsize == 4)
-      tdesc = tdesc_powerpc_32l;
-  else
-      tdesc = tdesc_powerpc_64l;
+  tdesc = ppc_create_target_description (features);
 
   current_process ()->tdesc = tdesc;
 
@@ -897,7 +893,7 @@  ppc_target::low_arch_setup ()
   ppc_hwcap = linux_get_hwcap (features.wordsize);
   ppc_hwcap2 = linux_get_hwcap2 (features.wordsize);
 
-  features.isa205 = ppc_linux_has_isa205 (ppc_hwcap);
+  features.fpscr64 = ppc_linux_has_fpscr64 (ppc_hwcap);
 
   if (ppc_hwcap & PPC_FEATURE_HAS_VSX)
     features.vsx = true;
@@ -928,13 +924,14 @@  ppc_target::low_arch_setup ()
 	}
     }
 
-  tdesc = ppc_linux_match_description (features);
+  tdesc = ppc_create_target_description (features);
 
   /* On 32-bit machines, check for SPE registers.
      Set the low target's regmap field as appropriately.  */
 #ifndef __powerpc64__
   if (ppc_hwcap & PPC_FEATURE_HAS_SPE)
-    tdesc = tdesc_powerpc_e500l;
+    features.spe = true;
+    tdesc = ppc_create_target_description (features);
 
   if (!ppc_regmap_adjusted)
     {
@@ -973,59 +970,59 @@  ppc_target::low_arch_setup ()
 	switch (regset->nt_type)
 	  {
 	  case NT_PPC_PPR:
-	    regset->size = (features.ppr_dscr ?
+	    regset->size = (features.ppr ?
 			    PPC_LINUX_SIZEOF_PPRREGSET : 0);
 	    break;
 	  case NT_PPC_DSCR:
-	    regset->size = (features.ppr_dscr ?
+	    regset->size = (features.dscr ?
 			    PPC_LINUX_SIZEOF_DSCRREGSET : 0);
 	    break;
 	  case NT_PPC_TAR:
-	    regset->size = (features.isa207 ?
+	    regset->size = (features.tar ?
 			    PPC_LINUX_SIZEOF_TARREGSET : 0);
 	    break;
 	  case NT_PPC_EBB:
-	    regset->size = (features.isa207 ?
+	    regset->size = (features.ebb ?
 			    PPC_LINUX_SIZEOF_EBBREGSET : 0);
 	    break;
 	  case NT_PPC_PMU:
-	    regset->size = (features.isa207 ?
+	    regset->size = (features.pmu ?
 			    PPC_LINUX_SIZEOF_PMUREGSET : 0);
 	    break;
 	  case NT_PPC_TM_SPR:
-	    regset->size = (features.htm ?
+	    regset->size = (features.htm.spr ?
 			    PPC_LINUX_SIZEOF_TM_SPRREGSET : 0);
 	    break;
 	  case NT_PPC_TM_CGPR:
 	    if (features.wordsize == 4)
-	      regset->size = (features.htm ?
+	      regset->size = (features.htm.core ?
 			      PPC32_LINUX_SIZEOF_CGPRREGSET : 0);
 	    else
-	      regset->size = (features.htm ?
+	      regset->size = (features.htm.core ?
 			      PPC64_LINUX_SIZEOF_CGPRREGSET : 0);
 	    break;
 	  case NT_PPC_TM_CFPR:
-	    regset->size = (features.htm ?
+	    regset->size = (features.htm.fpu ?
 			    PPC_LINUX_SIZEOF_CFPRREGSET : 0);
 	    break;
 	  case NT_PPC_TM_CVMX:
-	    regset->size = (features.htm ?
+	    regset->size = (features.htm.altivec ?
 			    PPC_LINUX_SIZEOF_CVMXREGSET : 0);
 	    break;
 	  case NT_PPC_TM_CVSX:
-	    regset->size = (features.htm ?
+	    regset->size = (features.htm.vsx ?
 			    PPC_LINUX_SIZEOF_CVSXREGSET : 0);
 	    break;
 	  case NT_PPC_TM_CPPR:
-	    regset->size = (features.htm ?
+	    regset->size = (features.htm.ppr ?
 			    PPC_LINUX_SIZEOF_CPPRREGSET : 0);
 	    break;
 	  case NT_PPC_TM_CDSCR:
-	    regset->size = (features.htm ?
+	    regset->size = (features.htm.dscr ?
 			    PPC_LINUX_SIZEOF_CDSCRREGSET : 0);
 	    break;
 	  case NT_PPC_TM_CTAR:
-	    regset->size = (features.htm ?
+	    regset->size = (features.htm.tar ?
 			    PPC_LINUX_SIZEOF_CTARREGSET : 0);
 	    break;
 	  default:
diff --git a/gdbserver/linux-ppc-tdesc-init.h b/gdbserver/linux-ppc-tdesc-init.h
deleted file mode 100644
index 3afd78baee..0000000000
--- a/gdbserver/linux-ppc-tdesc-init.h
+++ /dev/null
@@ -1,106 +0,0 @@ 
-/* Low level support for ppc, shared between gdbserver and IPA.
-
-   Copyright (C) 2016-2020 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program 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 General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#ifndef GDBSERVER_LINUX_PPC_TDESC_INIT_H
-#define GDBSERVER_LINUX_PPC_TDESC_INIT_H
-
-/* Note: since IPA obviously knows what ABI it's running on (32 vs 64),
-   it's sufficient to pass only the register set here.  This, together with
-   the ABI known at IPA compile time, maps to a tdesc.  */
-
-enum ppc_linux_tdesc {
-  PPC_TDESC_BASE,
-  PPC_TDESC_ALTIVEC,
-  PPC_TDESC_CELL,  /* No longer used, but kept to avoid ABI changes.  */
-  PPC_TDESC_VSX,
-  PPC_TDESC_ISA205,
-  PPC_TDESC_ISA205_ALTIVEC,
-  PPC_TDESC_ISA205_VSX,
-  PPC_TDESC_ISA205_PPR_DSCR_VSX,
-  PPC_TDESC_ISA207_VSX,
-  PPC_TDESC_ISA207_HTM_VSX,
-  PPC_TDESC_E500,
-};
-
-#if !defined __powerpc64__ || !defined IN_PROCESS_AGENT
-
-/* Defined in auto-generated file powerpc-32l.c.  */
-void init_registers_powerpc_32l (void);
-
-/* Defined in auto-generated file powerpc-altivec32l.c.  */
-void init_registers_powerpc_altivec32l (void);
-
-/* Defined in auto-generated file powerpc-vsx32l.c.  */
-void init_registers_powerpc_vsx32l (void);
-
-/* Defined in auto-generated file powerpc-isa205-32l.c.  */
-void init_registers_powerpc_isa205_32l (void);
-
-/* Defined in auto-generated file powerpc-isa205-altivec32l.c.  */
-void init_registers_powerpc_isa205_altivec32l (void);
-
-/* Defined in auto-generated file powerpc-isa205-vsx32l.c.  */
-void init_registers_powerpc_isa205_vsx32l (void);
-
-/* Defined in auto-generated file powerpc-isa205-ppr-dscr-vsx32l.c.  */
-void init_registers_powerpc_isa205_ppr_dscr_vsx32l (void);
-
-/* Defined in auto-generated file powerpc-isa207-vsx32l.c.  */
-void init_registers_powerpc_isa207_vsx32l (void);
-
-/* Defined in auto-generated file powerpc-isa207-htm-vsx32l.c.  */
-void init_registers_powerpc_isa207_htm_vsx32l (void);
-
-/* Defined in auto-generated file powerpc-e500l.c.  */
-void init_registers_powerpc_e500l (void);
-
-#endif
-
-#if defined __powerpc64__
-
-/* Defined in auto-generated file powerpc-64l.c.  */
-void init_registers_powerpc_64l (void);
-
-/* Defined in auto-generated file powerpc-altivec64l.c.  */
-void init_registers_powerpc_altivec64l (void);
-
-/* Defined in auto-generated file powerpc-vsx64l.c.  */
-void init_registers_powerpc_vsx64l (void);
-
-/* Defined in auto-generated file powerpc-isa205-64l.c.  */
-void init_registers_powerpc_isa205_64l (void);
-
-/* Defined in auto-generated file powerpc-isa205-altivec64l.c.  */
-void init_registers_powerpc_isa205_altivec64l (void);
-
-/* Defined in auto-generated file powerpc-isa205-vsx64l.c.  */
-void init_registers_powerpc_isa205_vsx64l (void);
-
-/* Defined in auto-generated file powerpc-isa205-ppr-dscr-vsx64l.c.  */
-void init_registers_powerpc_isa205_ppr_dscr_vsx64l (void);
-
-/* Defined in auto-generated file powerpc-isa207-vsx64l.c.  */
-void init_registers_powerpc_isa207_vsx64l (void);
-
-/* Defined in auto-generated file powerpc-isa207-htm-vsx64l.c.  */
-void init_registers_powerpc_isa207_htm_vsx64l (void);
-
-#endif
-
-#endif /* GDBSERVER_LINUX_PPC_TDESC_INIT_H */
diff --git a/gdbserver/linux-ppc-tdesc.cc b/gdbserver/linux-ppc-tdesc.cc
new file mode 100644
index 0000000000..3bf97d20fc
--- /dev/null
+++ b/gdbserver/linux-ppc-tdesc.cc
@@ -0,0 +1,47 @@ 
+/* GNU/Linux/Power specific target description, for the remote server
+   for GDB.
+   Copyright (C) 2020 Free Software Foundation, Inc.
+   This file is part of GDB.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+   This program 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 General Public License for more details.
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include "server.h"
+
+#include "arch/ppc-linux-common.h"
+#include "linux-ppc-tdesc.h"
+
+#include "tdesc.h"
+#include "linux-ppc-low.h"
+#include <inttypes.h>
+
+/* All possible ppc target descriptors.  */
+struct target_desc *tdesc_ppc_list[2];
+
+/* Create the Power target description.  */
+const target_desc *
+ppc_linux_read_description (bool is_ppc64)
+{
+  struct target_desc *tdesc = tdesc_ppc_list[is_ppc64];
+
+  if (tdesc == NULL)
+   {
+      struct ppc_linux_features features;
+      features.wordsize = (is_ppc64) ? 8 : 4;
+      *tdesc = ppc_create_target_description (features);
+
+      static const char* expedite_regs[] = { "r1", "pc" };
+      init_target_desc (tdesc, expedite_regs);
+
+      tdesc_ppc_list[is_pp64] = tdesc;
+   }
+
+  return tdesc;
+}
diff --git a/gdbserver/linux-ppc-tdesc.h b/gdbserver/linux-ppc-tdesc.h
new file mode 100644
index 0000000000..12927bee61
--- /dev/null
+++ b/gdbserver/linux-ppc-tdesc.h
@@ -0,0 +1,21 @@ 
+/* Low level support for Power, shared between gdbserver and IPA.
+   Copyright (C) 2020 Free Software Foundation, Inc.
+   This file is part of GDB.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+   This program 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 General Public License for more details.
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef GDBSERVER_LINUX_PPC_TDESC_H
+#define GDBSERVER_LINUX_PPC_TDESC_H
+
+const target_desc * ppc_linux_read_description
+(bool is_ppc64);
+
+#endif /* GDBSERVER_LINUX_PPC_TDESC_H */