[PUSHED] gdb/riscv: add ability to decode dwarf CSR numbers

Andrew Burgess andrew.burgess@embecosm.com
Wed Nov 11 11:58:00 GMT 2020


Extends riscv_dwarf_reg_to_regnum to add the ability to convert the
DWARF register numbers for CSRs into GDB's internal numbers.

gdb/ChangeLog:

	* riscv-tdep.c (riscv_dwarf_reg_to_regnum): Decode DWARF CSR
	numbers.
	* riscv-tdep.h (RISCV_DWARF_FIRST_CSR, RISCV_DWARF_LAST_CSR): New
	enum values.
---
 gdb/ChangeLog    | 7 +++++++
 gdb/riscv-tdep.c | 3 +++
 gdb/riscv-tdep.h | 2 ++
 3 files changed, 12 insertions(+)

diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c
index e2270aa77db..4e255056863 100644
--- a/gdb/riscv-tdep.c
+++ b/gdb/riscv-tdep.c
@@ -3150,6 +3150,9 @@ riscv_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg)
   else if (reg < RISCV_DWARF_REGNUM_F31)
     return RISCV_FIRST_FP_REGNUM + (reg - RISCV_DWARF_REGNUM_F0);
 
+  else if (reg >= RISCV_DWARF_FIRST_CSR && reg <= RISCV_DWARF_LAST_CSR)
+    return RISCV_FIRST_CSR_REGNUM + (reg - RISCV_DWARF_FIRST_CSR);
+
   return -1;
 }
 
diff --git a/gdb/riscv-tdep.h b/gdb/riscv-tdep.h
index 0ff555b0632..5bd3314d450 100644
--- a/gdb/riscv-tdep.h
+++ b/gdb/riscv-tdep.h
@@ -63,6 +63,8 @@ enum
   RISCV_DWARF_REGNUM_X31 = 31,
   RISCV_DWARF_REGNUM_F0 = 32,
   RISCV_DWARF_REGNUM_F31 = 63,
+  RISCV_DWARF_FIRST_CSR = 4096,
+  RISCV_DWARF_LAST_CSR = 8191,
 };
 
 /* RISC-V specific per-architecture information.  */
-- 
2.25.4



More information about the Gdb-patches mailing list