]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdb/riscv: add ability to decode dwarf CSR numbers
authorAndrew Burgess <andrew.burgess@embecosm.com>
Wed, 11 Nov 2020 11:55:08 +0000 (11:55 +0000)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Wed, 11 Nov 2020 11:55:08 +0000 (11:55 +0000)
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
gdb/riscv-tdep.c
gdb/riscv-tdep.h

index 84fa18706046d1d8b82d47af173b86de79890167..e78a71721e8bc606e7880d2bda8fd1a4b79d7acb 100644 (file)
@@ -1,3 +1,10 @@
+2020-11-11  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+       * 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.
+
 2020-11-10  Tom Tromey  <tom@tromey.com>
 
        * value.h (internalvar_name): Update.
index e2270aa77dbe687f606e4edccc87b573e74a9257..4e255056863494dc2a2de6f9cc1ec42f18f8fb6c 100644 (file)
@@ -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;
 }
 
index 0ff555b06321ddbc078b37711ccfa0a819391cb3..5bd3314d450fce4c6e3906b0c636b28d6b8b7baa 100644 (file)
@@ -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.  */