public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Andrew Burgess <andrew.burgess@embecosm.com>
To: gdb-patches@sourceware.org
Cc: Nelson Chu <nelson.chu@sifive.com>, Jim Wilson <jimw@sifive.com>,
	Tom Tromey <tom@tromey.com>,
	palmer@dabbelt.com, Andrew Burgess <andrew.burgess@embecosm.com>
Subject: [PATCH 4/8] gdb/riscv: Remove CSR feature file
Date: Tue, 16 Jun 2020 18:14:43 +0100	[thread overview]
Message-ID: <a77b809efc9acd0506530113806b5a65fc7f61a5.1592327296.git.andrew.burgess@embecosm.com> (raw)
In-Reply-To: <cover.1592327296.git.andrew.burgess@embecosm.com>

There is currently a bug in the RISC-V CSR/FPU feature files.  The
CSRs containing the FPU status registers are mentioned in both the FPU
feature file and the CSR feature file.

My original thinking when adding the FPU feature file was that it made
more sense to group the FPU status registers with the other FPU
state.  This opened up the possibility of debugging very
simple (possibly simulator only) targets that had little more than CPU
and FPU available for GDB to access.

When I then added code to automatically generate the CSR XML file I
forgot to filter out the FPU status CSRs, so these registers were
mentioned twice.

Now for GDB's default RISC-V target descriptions this doesn't actually
matter.  I did consider adding the CSRs to the default target
description, but in the end I didn't bother.  The reasoning again was
simplicity; the default target description is only to be used when the
target doesn't supply its own description, and NOT supplying the CSRs
actually serves to encourage targets to supply an accurate
description.  Combine this with the fact that the CSRs change from
revision to revision, sometimes in non-backward compatible ways, then
having a "default" set of CSRs just feels like a path to confusion and
complaints.

However, having a broken CSR XML file in the GDB source tree has had
one negative effect, QEMU has copied this file into its source tree,
and is using this as its description that it passes to GDB.  That is
QEMU announces the FPU status registers twice, once in the FPU
feature, and once in the CSR feature.

This commit starts along the path back to sanity by deleting the
default CSR XML files from within GDB.  These files were not used in
any way by current GDB, so there is absolutely no loss of
functionality with this change.

gdb/ChangeLog:

	* features/Makefile: Remove all references to the deleted files
	below.
	* features/riscv/32bit-csr.c: Deleted.
	* features/riscv/32bit-csr.xml: Deleted.
	* features/riscv/64bit-csr.c: Deleted.
	* features/riscv/64bit-csr.xml: Deleted.
	* features/riscv/rebuild-csr-xml.sh: Deleted.
---
 gdb/ChangeLog                         |  10 +
 gdb/features/Makefile                 |   6 -
 gdb/features/riscv/32bit-csr.c        | 253 --------------------------
 gdb/features/riscv/32bit-csr.xml      | 251 -------------------------
 gdb/features/riscv/64bit-csr.c        | 253 --------------------------
 gdb/features/riscv/64bit-csr.xml      | 186 -------------------
 gdb/features/riscv/rebuild-csr-xml.sh |  37 ----
 7 files changed, 10 insertions(+), 986 deletions(-)
 delete mode 100644 gdb/features/riscv/32bit-csr.c
 delete mode 100644 gdb/features/riscv/32bit-csr.xml
 delete mode 100644 gdb/features/riscv/64bit-csr.c
 delete mode 100644 gdb/features/riscv/64bit-csr.xml
 delete mode 100755 gdb/features/riscv/rebuild-csr-xml.sh

diff --git a/gdb/features/Makefile b/gdb/features/Makefile
index cc65baa6eda..88236e5e946 100644
--- a/gdb/features/Makefile
+++ b/gdb/features/Makefile
@@ -232,10 +232,8 @@ FEATURE_XMLFILES = aarch64-core.xml \
 	i386/64bit-sse.xml \
 	i386/x32-core.xml \
 	riscv/32bit-cpu.xml \
-	riscv/32bit-csr.xml \
 	riscv/32bit-fpu.xml \
 	riscv/64bit-cpu.xml \
-	riscv/64bit-csr.xml \
 	riscv/64bit-fpu.xml \
 	rx.xml \
 	tic6x-c6xp.xml \
@@ -268,10 +266,6 @@ $(FEATURE_CFILES): %.c: %.xml.tmp
 	echo "</target>" >> $@.tmp
 	sh ../../move-if-change $@.tmp $@
 
-# Regenerate RISC-V CSR feature lists.
-riscv/32bit-csr.xml riscv/64bit-csr.xml: ../../include/opcode/riscv-opc.h
-	./riscv/rebuild-csr-xml.sh ../../include/opcode/riscv-opc.h ./riscv
-
 # 'all' doesn't build the C files, so don't delete them in 'clean'
 # either.
 clean-cfiles:
diff --git a/gdb/features/riscv/32bit-csr.c b/gdb/features/riscv/32bit-csr.c
deleted file mode 100644
index d306bc8d293..00000000000
--- a/gdb/features/riscv/32bit-csr.c
+++ /dev/null
@@ -1,253 +0,0 @@
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: 32bit-csr.xml */
-
-#include "gdbsupport/tdesc.h"
-
-static int
-create_feature_riscv_32bit_csr (struct target_desc *result, long regnum)
-{
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.riscv.csr");
-  tdesc_create_reg (feature, "ustatus", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "uie", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "utvec", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "uscratch", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "uepc", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ucause", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "utval", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "uip", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "fflags", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "frm", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "fcsr", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "cycle", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "time", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "instret", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter3", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter4", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter5", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter6", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter7", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter8", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter9", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter10", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter11", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter12", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter13", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter14", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter15", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter16", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter17", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter18", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter19", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter20", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter21", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter22", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter23", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter24", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter25", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter26", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter27", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter28", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter29", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter30", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter31", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "cycleh", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "timeh", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "instreth", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter3h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter4h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter5h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter6h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter7h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter8h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter9h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter10h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter11h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter12h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter13h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter14h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter15h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter16h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter17h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter18h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter19h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter20h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter21h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter22h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter23h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter24h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter25h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter26h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter27h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter28h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter29h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter30h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter31h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "sstatus", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "sedeleg", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "sideleg", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "sie", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "stvec", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "scounteren", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "sscratch", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "sepc", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "scause", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "stval", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "sip", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "satp", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mvendorid", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "marchid", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mimpid", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhartid", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mstatus", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "misa", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "medeleg", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mideleg", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mie", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mtvec", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mcounteren", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mscratch", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mepc", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mcause", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mtval", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mip", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpcfg0", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpcfg1", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpcfg2", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpcfg3", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr0", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr1", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr2", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr3", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr4", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr5", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr6", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr7", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr8", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr9", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr10", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr11", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr12", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr13", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr14", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr15", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mcycle", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "minstret", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter3", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter4", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter5", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter6", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter7", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter8", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter9", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter10", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter11", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter12", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter13", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter14", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter15", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter16", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter17", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter18", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter19", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter20", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter21", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter22", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter23", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter24", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter25", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter26", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter27", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter28", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter29", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter30", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter31", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mcycleh", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "minstreth", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter3h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter4h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter5h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter6h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter7h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter8h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter9h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter10h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter11h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter12h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter13h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter14h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter15h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter16h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter17h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter18h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter19h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter20h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter21h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter22h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter23h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter24h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter25h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter26h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter27h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter28h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter29h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter30h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter31h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent3", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent4", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent5", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent6", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent7", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent8", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent9", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent10", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent11", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent12", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent13", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent14", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent15", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent16", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent17", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent18", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent19", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent20", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent21", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent22", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent23", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent24", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent25", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent26", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent27", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent28", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent29", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent30", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent31", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "tselect", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "tdata1", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "tdata2", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "tdata3", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "dcsr", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "dpc", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "dscratch", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hstatus", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hedeleg", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hideleg", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hie", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "htvec", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hscratch", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hepc", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hcause", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hbadaddr", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hip", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mbase", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mbound", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mibase", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mibound", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mdbase", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mdbound", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mucounteren", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mscounteren", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhcounteren", regnum++, 1, NULL, 32, "int");
-  return regnum;
-}
diff --git a/gdb/features/riscv/32bit-csr.xml b/gdb/features/riscv/32bit-csr.xml
deleted file mode 100644
index 8173eebda1c..00000000000
--- a/gdb/features/riscv/32bit-csr.xml
+++ /dev/null
@@ -1,251 +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 feature SYSTEM "gdb-target.dtd">
-<feature name="org.gnu.gdb.riscv.csr">
-  <reg name="ustatus" bitsize="32"/>
-  <reg name="uie" bitsize="32"/>
-  <reg name="utvec" bitsize="32"/>
-  <reg name="uscratch" bitsize="32"/>
-  <reg name="uepc" bitsize="32"/>
-  <reg name="ucause" bitsize="32"/>
-  <reg name="utval" bitsize="32"/>
-  <reg name="uip" bitsize="32"/>
-  <reg name="fflags" bitsize="32"/>
-  <reg name="frm" bitsize="32"/>
-  <reg name="fcsr" bitsize="32"/>
-  <reg name="cycle" bitsize="32"/>
-  <reg name="time" bitsize="32"/>
-  <reg name="instret" bitsize="32"/>
-  <reg name="hpmcounter3" bitsize="32"/>
-  <reg name="hpmcounter4" bitsize="32"/>
-  <reg name="hpmcounter5" bitsize="32"/>
-  <reg name="hpmcounter6" bitsize="32"/>
-  <reg name="hpmcounter7" bitsize="32"/>
-  <reg name="hpmcounter8" bitsize="32"/>
-  <reg name="hpmcounter9" bitsize="32"/>
-  <reg name="hpmcounter10" bitsize="32"/>
-  <reg name="hpmcounter11" bitsize="32"/>
-  <reg name="hpmcounter12" bitsize="32"/>
-  <reg name="hpmcounter13" bitsize="32"/>
-  <reg name="hpmcounter14" bitsize="32"/>
-  <reg name="hpmcounter15" bitsize="32"/>
-  <reg name="hpmcounter16" bitsize="32"/>
-  <reg name="hpmcounter17" bitsize="32"/>
-  <reg name="hpmcounter18" bitsize="32"/>
-  <reg name="hpmcounter19" bitsize="32"/>
-  <reg name="hpmcounter20" bitsize="32"/>
-  <reg name="hpmcounter21" bitsize="32"/>
-  <reg name="hpmcounter22" bitsize="32"/>
-  <reg name="hpmcounter23" bitsize="32"/>
-  <reg name="hpmcounter24" bitsize="32"/>
-  <reg name="hpmcounter25" bitsize="32"/>
-  <reg name="hpmcounter26" bitsize="32"/>
-  <reg name="hpmcounter27" bitsize="32"/>
-  <reg name="hpmcounter28" bitsize="32"/>
-  <reg name="hpmcounter29" bitsize="32"/>
-  <reg name="hpmcounter30" bitsize="32"/>
-  <reg name="hpmcounter31" bitsize="32"/>
-  <reg name="cycleh" bitsize="32"/>
-  <reg name="timeh" bitsize="32"/>
-  <reg name="instreth" bitsize="32"/>
-  <reg name="hpmcounter3h" bitsize="32"/>
-  <reg name="hpmcounter4h" bitsize="32"/>
-  <reg name="hpmcounter5h" bitsize="32"/>
-  <reg name="hpmcounter6h" bitsize="32"/>
-  <reg name="hpmcounter7h" bitsize="32"/>
-  <reg name="hpmcounter8h" bitsize="32"/>
-  <reg name="hpmcounter9h" bitsize="32"/>
-  <reg name="hpmcounter10h" bitsize="32"/>
-  <reg name="hpmcounter11h" bitsize="32"/>
-  <reg name="hpmcounter12h" bitsize="32"/>
-  <reg name="hpmcounter13h" bitsize="32"/>
-  <reg name="hpmcounter14h" bitsize="32"/>
-  <reg name="hpmcounter15h" bitsize="32"/>
-  <reg name="hpmcounter16h" bitsize="32"/>
-  <reg name="hpmcounter17h" bitsize="32"/>
-  <reg name="hpmcounter18h" bitsize="32"/>
-  <reg name="hpmcounter19h" bitsize="32"/>
-  <reg name="hpmcounter20h" bitsize="32"/>
-  <reg name="hpmcounter21h" bitsize="32"/>
-  <reg name="hpmcounter22h" bitsize="32"/>
-  <reg name="hpmcounter23h" bitsize="32"/>
-  <reg name="hpmcounter24h" bitsize="32"/>
-  <reg name="hpmcounter25h" bitsize="32"/>
-  <reg name="hpmcounter26h" bitsize="32"/>
-  <reg name="hpmcounter27h" bitsize="32"/>
-  <reg name="hpmcounter28h" bitsize="32"/>
-  <reg name="hpmcounter29h" bitsize="32"/>
-  <reg name="hpmcounter30h" bitsize="32"/>
-  <reg name="hpmcounter31h" bitsize="32"/>
-  <reg name="sstatus" bitsize="32"/>
-  <reg name="sedeleg" bitsize="32"/>
-  <reg name="sideleg" bitsize="32"/>
-  <reg name="sie" bitsize="32"/>
-  <reg name="stvec" bitsize="32"/>
-  <reg name="scounteren" bitsize="32"/>
-  <reg name="sscratch" bitsize="32"/>
-  <reg name="sepc" bitsize="32"/>
-  <reg name="scause" bitsize="32"/>
-  <reg name="stval" bitsize="32"/>
-  <reg name="sip" bitsize="32"/>
-  <reg name="satp" bitsize="32"/>
-  <reg name="mvendorid" bitsize="32"/>
-  <reg name="marchid" bitsize="32"/>
-  <reg name="mimpid" bitsize="32"/>
-  <reg name="mhartid" bitsize="32"/>
-  <reg name="mstatus" bitsize="32"/>
-  <reg name="misa" bitsize="32"/>
-  <reg name="medeleg" bitsize="32"/>
-  <reg name="mideleg" bitsize="32"/>
-  <reg name="mie" bitsize="32"/>
-  <reg name="mtvec" bitsize="32"/>
-  <reg name="mcounteren" bitsize="32"/>
-  <reg name="mscratch" bitsize="32"/>
-  <reg name="mepc" bitsize="32"/>
-  <reg name="mcause" bitsize="32"/>
-  <reg name="mtval" bitsize="32"/>
-  <reg name="mip" bitsize="32"/>
-  <reg name="pmpcfg0" bitsize="32"/>
-  <reg name="pmpcfg1" bitsize="32"/>
-  <reg name="pmpcfg2" bitsize="32"/>
-  <reg name="pmpcfg3" bitsize="32"/>
-  <reg name="pmpaddr0" bitsize="32"/>
-  <reg name="pmpaddr1" bitsize="32"/>
-  <reg name="pmpaddr2" bitsize="32"/>
-  <reg name="pmpaddr3" bitsize="32"/>
-  <reg name="pmpaddr4" bitsize="32"/>
-  <reg name="pmpaddr5" bitsize="32"/>
-  <reg name="pmpaddr6" bitsize="32"/>
-  <reg name="pmpaddr7" bitsize="32"/>
-  <reg name="pmpaddr8" bitsize="32"/>
-  <reg name="pmpaddr9" bitsize="32"/>
-  <reg name="pmpaddr10" bitsize="32"/>
-  <reg name="pmpaddr11" bitsize="32"/>
-  <reg name="pmpaddr12" bitsize="32"/>
-  <reg name="pmpaddr13" bitsize="32"/>
-  <reg name="pmpaddr14" bitsize="32"/>
-  <reg name="pmpaddr15" bitsize="32"/>
-  <reg name="mcycle" bitsize="32"/>
-  <reg name="minstret" bitsize="32"/>
-  <reg name="mhpmcounter3" bitsize="32"/>
-  <reg name="mhpmcounter4" bitsize="32"/>
-  <reg name="mhpmcounter5" bitsize="32"/>
-  <reg name="mhpmcounter6" bitsize="32"/>
-  <reg name="mhpmcounter7" bitsize="32"/>
-  <reg name="mhpmcounter8" bitsize="32"/>
-  <reg name="mhpmcounter9" bitsize="32"/>
-  <reg name="mhpmcounter10" bitsize="32"/>
-  <reg name="mhpmcounter11" bitsize="32"/>
-  <reg name="mhpmcounter12" bitsize="32"/>
-  <reg name="mhpmcounter13" bitsize="32"/>
-  <reg name="mhpmcounter14" bitsize="32"/>
-  <reg name="mhpmcounter15" bitsize="32"/>
-  <reg name="mhpmcounter16" bitsize="32"/>
-  <reg name="mhpmcounter17" bitsize="32"/>
-  <reg name="mhpmcounter18" bitsize="32"/>
-  <reg name="mhpmcounter19" bitsize="32"/>
-  <reg name="mhpmcounter20" bitsize="32"/>
-  <reg name="mhpmcounter21" bitsize="32"/>
-  <reg name="mhpmcounter22" bitsize="32"/>
-  <reg name="mhpmcounter23" bitsize="32"/>
-  <reg name="mhpmcounter24" bitsize="32"/>
-  <reg name="mhpmcounter25" bitsize="32"/>
-  <reg name="mhpmcounter26" bitsize="32"/>
-  <reg name="mhpmcounter27" bitsize="32"/>
-  <reg name="mhpmcounter28" bitsize="32"/>
-  <reg name="mhpmcounter29" bitsize="32"/>
-  <reg name="mhpmcounter30" bitsize="32"/>
-  <reg name="mhpmcounter31" bitsize="32"/>
-  <reg name="mcycleh" bitsize="32"/>
-  <reg name="minstreth" bitsize="32"/>
-  <reg name="mhpmcounter3h" bitsize="32"/>
-  <reg name="mhpmcounter4h" bitsize="32"/>
-  <reg name="mhpmcounter5h" bitsize="32"/>
-  <reg name="mhpmcounter6h" bitsize="32"/>
-  <reg name="mhpmcounter7h" bitsize="32"/>
-  <reg name="mhpmcounter8h" bitsize="32"/>
-  <reg name="mhpmcounter9h" bitsize="32"/>
-  <reg name="mhpmcounter10h" bitsize="32"/>
-  <reg name="mhpmcounter11h" bitsize="32"/>
-  <reg name="mhpmcounter12h" bitsize="32"/>
-  <reg name="mhpmcounter13h" bitsize="32"/>
-  <reg name="mhpmcounter14h" bitsize="32"/>
-  <reg name="mhpmcounter15h" bitsize="32"/>
-  <reg name="mhpmcounter16h" bitsize="32"/>
-  <reg name="mhpmcounter17h" bitsize="32"/>
-  <reg name="mhpmcounter18h" bitsize="32"/>
-  <reg name="mhpmcounter19h" bitsize="32"/>
-  <reg name="mhpmcounter20h" bitsize="32"/>
-  <reg name="mhpmcounter21h" bitsize="32"/>
-  <reg name="mhpmcounter22h" bitsize="32"/>
-  <reg name="mhpmcounter23h" bitsize="32"/>
-  <reg name="mhpmcounter24h" bitsize="32"/>
-  <reg name="mhpmcounter25h" bitsize="32"/>
-  <reg name="mhpmcounter26h" bitsize="32"/>
-  <reg name="mhpmcounter27h" bitsize="32"/>
-  <reg name="mhpmcounter28h" bitsize="32"/>
-  <reg name="mhpmcounter29h" bitsize="32"/>
-  <reg name="mhpmcounter30h" bitsize="32"/>
-  <reg name="mhpmcounter31h" bitsize="32"/>
-  <reg name="mcountinhibit" bitsize="32"/>
-  <reg name="mhpmevent3" bitsize="32"/>
-  <reg name="mhpmevent4" bitsize="32"/>
-  <reg name="mhpmevent5" bitsize="32"/>
-  <reg name="mhpmevent6" bitsize="32"/>
-  <reg name="mhpmevent7" bitsize="32"/>
-  <reg name="mhpmevent8" bitsize="32"/>
-  <reg name="mhpmevent9" bitsize="32"/>
-  <reg name="mhpmevent10" bitsize="32"/>
-  <reg name="mhpmevent11" bitsize="32"/>
-  <reg name="mhpmevent12" bitsize="32"/>
-  <reg name="mhpmevent13" bitsize="32"/>
-  <reg name="mhpmevent14" bitsize="32"/>
-  <reg name="mhpmevent15" bitsize="32"/>
-  <reg name="mhpmevent16" bitsize="32"/>
-  <reg name="mhpmevent17" bitsize="32"/>
-  <reg name="mhpmevent18" bitsize="32"/>
-  <reg name="mhpmevent19" bitsize="32"/>
-  <reg name="mhpmevent20" bitsize="32"/>
-  <reg name="mhpmevent21" bitsize="32"/>
-  <reg name="mhpmevent22" bitsize="32"/>
-  <reg name="mhpmevent23" bitsize="32"/>
-  <reg name="mhpmevent24" bitsize="32"/>
-  <reg name="mhpmevent25" bitsize="32"/>
-  <reg name="mhpmevent26" bitsize="32"/>
-  <reg name="mhpmevent27" bitsize="32"/>
-  <reg name="mhpmevent28" bitsize="32"/>
-  <reg name="mhpmevent29" bitsize="32"/>
-  <reg name="mhpmevent30" bitsize="32"/>
-  <reg name="mhpmevent31" bitsize="32"/>
-  <reg name="tselect" bitsize="32"/>
-  <reg name="tdata1" bitsize="32"/>
-  <reg name="tdata2" bitsize="32"/>
-  <reg name="tdata3" bitsize="32"/>
-  <reg name="dcsr" bitsize="32"/>
-  <reg name="dpc" bitsize="32"/>
-  <reg name="dscratch0" bitsize="32"/>
-  <reg name="dscratch1" bitsize="32"/>
-  <reg name="hstatus" bitsize="32"/>
-  <reg name="hedeleg" bitsize="32"/>
-  <reg name="hideleg" bitsize="32"/>
-  <reg name="hie" bitsize="32"/>
-  <reg name="htvec" bitsize="32"/>
-  <reg name="hscratch" bitsize="32"/>
-  <reg name="hepc" bitsize="32"/>
-  <reg name="hcause" bitsize="32"/>
-  <reg name="hbadaddr" bitsize="32"/>
-  <reg name="hip" bitsize="32"/>
-  <reg name="mbase" bitsize="32"/>
-  <reg name="mbound" bitsize="32"/>
-  <reg name="mibase" bitsize="32"/>
-  <reg name="mibound" bitsize="32"/>
-  <reg name="mdbase" bitsize="32"/>
-  <reg name="mdbound" bitsize="32"/>
-  <reg name="mscounteren" bitsize="32"/>
-  <reg name="mhcounteren" bitsize="32"/>
-</feature>
diff --git a/gdb/features/riscv/64bit-csr.c b/gdb/features/riscv/64bit-csr.c
deleted file mode 100644
index e46a77f3051..00000000000
--- a/gdb/features/riscv/64bit-csr.c
+++ /dev/null
@@ -1,253 +0,0 @@
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: 64bit-csr.xml */
-
-#include "gdbsupport/tdesc.h"
-
-static int
-create_feature_riscv_64bit_csr (struct target_desc *result, long regnum)
-{
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.riscv.csr");
-  tdesc_create_reg (feature, "ustatus", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "uie", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "utvec", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "uscratch", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "uepc", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "ucause", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "utval", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "uip", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "fflags", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "frm", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "fcsr", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "cycle", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "time", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "instret", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter3", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter4", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter5", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter6", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter7", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter8", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter9", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter10", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter11", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter12", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter13", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter14", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter15", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter16", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter17", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter18", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter19", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter20", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter21", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter22", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter23", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter24", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter25", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter26", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter27", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter28", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter29", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter30", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter31", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "cycleh", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "timeh", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "instreth", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter3h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter4h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter5h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter6h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter7h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter8h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter9h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter10h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter11h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter12h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter13h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter14h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter15h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter16h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter17h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter18h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter19h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter20h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter21h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter22h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter23h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter24h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter25h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter26h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter27h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter28h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter29h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter30h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter31h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "sstatus", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "sedeleg", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "sideleg", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "sie", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "stvec", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "scounteren", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "sscratch", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "sepc", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "scause", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "stval", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "sip", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "satp", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mvendorid", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "marchid", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mimpid", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhartid", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mstatus", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "misa", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "medeleg", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mideleg", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mie", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mtvec", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mcounteren", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mscratch", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mepc", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mcause", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mtval", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mip", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpcfg0", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpcfg1", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpcfg2", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpcfg3", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr0", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr1", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr2", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr3", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr4", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr5", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr6", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr7", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr8", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr9", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr10", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr11", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr12", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr13", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr14", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr15", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mcycle", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "minstret", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter3", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter4", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter5", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter6", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter7", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter8", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter9", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter10", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter11", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter12", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter13", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter14", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter15", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter16", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter17", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter18", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter19", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter20", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter21", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter22", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter23", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter24", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter25", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter26", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter27", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter28", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter29", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter30", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter31", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mcycleh", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "minstreth", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter3h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter4h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter5h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter6h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter7h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter8h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter9h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter10h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter11h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter12h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter13h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter14h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter15h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter16h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter17h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter18h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter19h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter20h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter21h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter22h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter23h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter24h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter25h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter26h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter27h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter28h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter29h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter30h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter31h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent3", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent4", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent5", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent6", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent7", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent8", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent9", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent10", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent11", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent12", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent13", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent14", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent15", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent16", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent17", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent18", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent19", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent20", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent21", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent22", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent23", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent24", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent25", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent26", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent27", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent28", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent29", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent30", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent31", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "tselect", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "tdata1", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "tdata2", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "tdata3", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "dcsr", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "dpc", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "dscratch", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hstatus", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hedeleg", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hideleg", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hie", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "htvec", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hscratch", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hepc", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hcause", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hbadaddr", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hip", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mbase", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mbound", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mibase", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mibound", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mdbase", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mdbound", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mucounteren", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mscounteren", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhcounteren", regnum++, 1, NULL, 64, "int");
-  return regnum;
-}
diff --git a/gdb/features/riscv/64bit-csr.xml b/gdb/features/riscv/64bit-csr.xml
deleted file mode 100644
index ed28964ac35..00000000000
--- a/gdb/features/riscv/64bit-csr.xml
+++ /dev/null
@@ -1,186 +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 feature SYSTEM "gdb-target.dtd">
-<feature name="org.gnu.gdb.riscv.csr">
-  <reg name="ustatus" bitsize="64"/>
-  <reg name="uie" bitsize="64"/>
-  <reg name="utvec" bitsize="64"/>
-  <reg name="uscratch" bitsize="64"/>
-  <reg name="uepc" bitsize="64"/>
-  <reg name="ucause" bitsize="64"/>
-  <reg name="utval" bitsize="64"/>
-  <reg name="uip" bitsize="64"/>
-  <reg name="fflags" bitsize="64"/>
-  <reg name="frm" bitsize="64"/>
-  <reg name="fcsr" bitsize="64"/>
-  <reg name="cycle" bitsize="64"/>
-  <reg name="time" bitsize="64"/>
-  <reg name="instret" bitsize="64"/>
-  <reg name="hpmcounter3" bitsize="64"/>
-  <reg name="hpmcounter4" bitsize="64"/>
-  <reg name="hpmcounter5" bitsize="64"/>
-  <reg name="hpmcounter6" bitsize="64"/>
-  <reg name="hpmcounter7" bitsize="64"/>
-  <reg name="hpmcounter8" bitsize="64"/>
-  <reg name="hpmcounter9" bitsize="64"/>
-  <reg name="hpmcounter10" bitsize="64"/>
-  <reg name="hpmcounter11" bitsize="64"/>
-  <reg name="hpmcounter12" bitsize="64"/>
-  <reg name="hpmcounter13" bitsize="64"/>
-  <reg name="hpmcounter14" bitsize="64"/>
-  <reg name="hpmcounter15" bitsize="64"/>
-  <reg name="hpmcounter16" bitsize="64"/>
-  <reg name="hpmcounter17" bitsize="64"/>
-  <reg name="hpmcounter18" bitsize="64"/>
-  <reg name="hpmcounter19" bitsize="64"/>
-  <reg name="hpmcounter20" bitsize="64"/>
-  <reg name="hpmcounter21" bitsize="64"/>
-  <reg name="hpmcounter22" bitsize="64"/>
-  <reg name="hpmcounter23" bitsize="64"/>
-  <reg name="hpmcounter24" bitsize="64"/>
-  <reg name="hpmcounter25" bitsize="64"/>
-  <reg name="hpmcounter26" bitsize="64"/>
-  <reg name="hpmcounter27" bitsize="64"/>
-  <reg name="hpmcounter28" bitsize="64"/>
-  <reg name="hpmcounter29" bitsize="64"/>
-  <reg name="hpmcounter30" bitsize="64"/>
-  <reg name="hpmcounter31" bitsize="64"/>
-  <reg name="sstatus" bitsize="64"/>
-  <reg name="sedeleg" bitsize="64"/>
-  <reg name="sideleg" bitsize="64"/>
-  <reg name="sie" bitsize="64"/>
-  <reg name="stvec" bitsize="64"/>
-  <reg name="scounteren" bitsize="64"/>
-  <reg name="sscratch" bitsize="64"/>
-  <reg name="sepc" bitsize="64"/>
-  <reg name="scause" bitsize="64"/>
-  <reg name="stval" bitsize="64"/>
-  <reg name="sip" bitsize="64"/>
-  <reg name="satp" bitsize="64"/>
-  <reg name="mvendorid" bitsize="64"/>
-  <reg name="marchid" bitsize="64"/>
-  <reg name="mimpid" bitsize="64"/>
-  <reg name="mhartid" bitsize="64"/>
-  <reg name="mstatus" bitsize="64"/>
-  <reg name="misa" bitsize="64"/>
-  <reg name="medeleg" bitsize="64"/>
-  <reg name="mideleg" bitsize="64"/>
-  <reg name="mie" bitsize="64"/>
-  <reg name="mtvec" bitsize="64"/>
-  <reg name="mcounteren" bitsize="64"/>
-  <reg name="mscratch" bitsize="64"/>
-  <reg name="mepc" bitsize="64"/>
-  <reg name="mcause" bitsize="64"/>
-  <reg name="mtval" bitsize="64"/>
-  <reg name="mip" bitsize="64"/>
-  <reg name="pmpcfg0" bitsize="64"/>
-  <reg name="pmpcfg2" bitsize="64"/>
-  <reg name="pmpaddr0" bitsize="64"/>
-  <reg name="pmpaddr1" bitsize="64"/>
-  <reg name="pmpaddr2" bitsize="64"/>
-  <reg name="pmpaddr3" bitsize="64"/>
-  <reg name="pmpaddr4" bitsize="64"/>
-  <reg name="pmpaddr5" bitsize="64"/>
-  <reg name="pmpaddr6" bitsize="64"/>
-  <reg name="pmpaddr7" bitsize="64"/>
-  <reg name="pmpaddr8" bitsize="64"/>
-  <reg name="pmpaddr9" bitsize="64"/>
-  <reg name="pmpaddr10" bitsize="64"/>
-  <reg name="pmpaddr11" bitsize="64"/>
-  <reg name="pmpaddr12" bitsize="64"/>
-  <reg name="pmpaddr13" bitsize="64"/>
-  <reg name="pmpaddr14" bitsize="64"/>
-  <reg name="pmpaddr15" bitsize="64"/>
-  <reg name="mcycle" bitsize="64"/>
-  <reg name="minstret" bitsize="64"/>
-  <reg name="mhpmcounter3" bitsize="64"/>
-  <reg name="mhpmcounter4" bitsize="64"/>
-  <reg name="mhpmcounter5" bitsize="64"/>
-  <reg name="mhpmcounter6" bitsize="64"/>
-  <reg name="mhpmcounter7" bitsize="64"/>
-  <reg name="mhpmcounter8" bitsize="64"/>
-  <reg name="mhpmcounter9" bitsize="64"/>
-  <reg name="mhpmcounter10" bitsize="64"/>
-  <reg name="mhpmcounter11" bitsize="64"/>
-  <reg name="mhpmcounter12" bitsize="64"/>
-  <reg name="mhpmcounter13" bitsize="64"/>
-  <reg name="mhpmcounter14" bitsize="64"/>
-  <reg name="mhpmcounter15" bitsize="64"/>
-  <reg name="mhpmcounter16" bitsize="64"/>
-  <reg name="mhpmcounter17" bitsize="64"/>
-  <reg name="mhpmcounter18" bitsize="64"/>
-  <reg name="mhpmcounter19" bitsize="64"/>
-  <reg name="mhpmcounter20" bitsize="64"/>
-  <reg name="mhpmcounter21" bitsize="64"/>
-  <reg name="mhpmcounter22" bitsize="64"/>
-  <reg name="mhpmcounter23" bitsize="64"/>
-  <reg name="mhpmcounter24" bitsize="64"/>
-  <reg name="mhpmcounter25" bitsize="64"/>
-  <reg name="mhpmcounter26" bitsize="64"/>
-  <reg name="mhpmcounter27" bitsize="64"/>
-  <reg name="mhpmcounter28" bitsize="64"/>
-  <reg name="mhpmcounter29" bitsize="64"/>
-  <reg name="mhpmcounter30" bitsize="64"/>
-  <reg name="mhpmcounter31" bitsize="64"/>
-  <reg name="mcountinhibit" bitsize="64"/>
-  <reg name="mhpmevent3" bitsize="64"/>
-  <reg name="mhpmevent4" bitsize="64"/>
-  <reg name="mhpmevent5" bitsize="64"/>
-  <reg name="mhpmevent6" bitsize="64"/>
-  <reg name="mhpmevent7" bitsize="64"/>
-  <reg name="mhpmevent8" bitsize="64"/>
-  <reg name="mhpmevent9" bitsize="64"/>
-  <reg name="mhpmevent10" bitsize="64"/>
-  <reg name="mhpmevent11" bitsize="64"/>
-  <reg name="mhpmevent12" bitsize="64"/>
-  <reg name="mhpmevent13" bitsize="64"/>
-  <reg name="mhpmevent14" bitsize="64"/>
-  <reg name="mhpmevent15" bitsize="64"/>
-  <reg name="mhpmevent16" bitsize="64"/>
-  <reg name="mhpmevent17" bitsize="64"/>
-  <reg name="mhpmevent18" bitsize="64"/>
-  <reg name="mhpmevent19" bitsize="64"/>
-  <reg name="mhpmevent20" bitsize="64"/>
-  <reg name="mhpmevent21" bitsize="64"/>
-  <reg name="mhpmevent22" bitsize="64"/>
-  <reg name="mhpmevent23" bitsize="64"/>
-  <reg name="mhpmevent24" bitsize="64"/>
-  <reg name="mhpmevent25" bitsize="64"/>
-  <reg name="mhpmevent26" bitsize="64"/>
-  <reg name="mhpmevent27" bitsize="64"/>
-  <reg name="mhpmevent28" bitsize="64"/>
-  <reg name="mhpmevent29" bitsize="64"/>
-  <reg name="mhpmevent30" bitsize="64"/>
-  <reg name="mhpmevent31" bitsize="64"/>
-  <reg name="tselect" bitsize="64"/>
-  <reg name="tdata1" bitsize="64"/>
-  <reg name="tdata2" bitsize="64"/>
-  <reg name="tdata3" bitsize="64"/>
-  <reg name="dcsr" bitsize="64"/>
-  <reg name="dpc" bitsize="64"/>
-  <reg name="dscratch0" bitsize="64"/>
-  <reg name="dscratch1" bitsize="64"/>
-  <reg name="hstatus" bitsize="64"/>
-  <reg name="hedeleg" bitsize="64"/>
-  <reg name="hideleg" bitsize="64"/>
-  <reg name="hie" bitsize="64"/>
-  <reg name="htvec" bitsize="64"/>
-  <reg name="hscratch" bitsize="64"/>
-  <reg name="hepc" bitsize="64"/>
-  <reg name="hcause" bitsize="64"/>
-  <reg name="hbadaddr" bitsize="64"/>
-  <reg name="hip" bitsize="64"/>
-  <reg name="mbase" bitsize="64"/>
-  <reg name="mbound" bitsize="64"/>
-  <reg name="mibase" bitsize="64"/>
-  <reg name="mibound" bitsize="64"/>
-  <reg name="mdbase" bitsize="64"/>
-  <reg name="mdbound" bitsize="64"/>
-  <reg name="mscounteren" bitsize="64"/>
-  <reg name="mhcounteren" bitsize="64"/>
-</feature>
diff --git a/gdb/features/riscv/rebuild-csr-xml.sh b/gdb/features/riscv/rebuild-csr-xml.sh
deleted file mode 100755
index bff79b0371f..00000000000
--- a/gdb/features/riscv/rebuild-csr-xml.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#! /bin/bash
-
-RISCV_OPC_FILE=$1
-RISCV_FEATURE_DIR=$2
-
-function gen_csr_xml ()
-{
-    bitsize=$1
-
-    cat <<EOF
-<?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 feature SYSTEM "gdb-target.dtd">
-<feature name="org.gnu.gdb.riscv.csr">
-EOF
-
-if [ "$bitsize" = "64" ]; then
-    grep "^DECLARE_CSR(" ${RISCV_OPC_FILE} \
-        | sed /CSR_CLASS_.*_32/d \
-        | sed -e "s!DECLARE_CSR(\(.*\), .*, .*, .*, .*!  <reg name=\"\1\" bitsize=\"$bitsize\"/>!"
-
-    echo "</feature>"
-else
-    grep "^DECLARE_CSR(" ${RISCV_OPC_FILE} \
-        | sed -e "s!DECLARE_CSR(\(.*\), .*, .*, .*, .*!  <reg name=\"\1\" bitsize=\"$bitsize\"/>!"
-
-    echo "</feature>"
-fi
-}
-
-gen_csr_xml 32 > ${RISCV_FEATURE_DIR}/32bit-csr.xml
-gen_csr_xml 64 > ${RISCV_FEATURE_DIR}/64bit-csr.xml
-- 
2.25.4


  parent reply	other threads:[~2020-06-16 17:15 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-16 17:14 [PATCH 0/8] RISC-V target description and register handling fixes Andrew Burgess
2020-06-16 17:14 ` [PATCH 1/8] gdb/riscv: Improved register alias name creation Andrew Burgess
2020-06-18 20:36   ` Tom Tromey
2020-06-16 17:14 ` [PATCH 2/8] gdb/riscv: Fix whitespace error Andrew Burgess
2020-06-16 17:14 ` [PATCH 3/8] gdb/riscv: Take CSR names from target description Andrew Burgess
2020-06-16 17:14 ` Andrew Burgess [this message]
2020-06-16 17:14 ` [PATCH 5/8] gdb/riscv: Improve support for matching against target descriptions Andrew Burgess
2020-06-16 17:14 ` [PATCH 6/8] gdb: Extend target description processing of unknown registers Andrew Burgess
2020-06-16 17:14 ` [PATCH 7/8] gdb/riscv: Record information about unknown tdesc registers Andrew Burgess
2020-06-16 17:14 ` [PATCH 8/8] gdb/riscv: Loop over all registers for 'info all-registers' Andrew Burgess
2020-06-17  1:31 ` [PATCH 0/8] RISC-V target description and register handling fixes Nelson Chu
2020-06-18 20:45 ` Tom Tromey
2020-06-18 20:54   ` Andrew Burgess

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a77b809efc9acd0506530113806b5a65fc7f61a5.1592327296.git.andrew.burgess@embecosm.com \
    --to=andrew.burgess@embecosm.com \
    --cc=gdb-patches@sourceware.org \
    --cc=jimw@sifive.com \
    --cc=nelson.chu@sifive.com \
    --cc=palmer@dabbelt.com \
    --cc=tom@tromey.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).