This is the mail archive of the
gdb-cvs@sourceware.org
mailing list for the GDB project.
[binutils-gdb] Add Aarch64 SVE dwarf regnums
- From: Alan Hayward <alahay01 at sourceware dot org>
- To: gdb-cvs at sourceware dot org
- Date: 11 Jun 2018 09:24:49 -0000
- Subject: [binutils-gdb] Add Aarch64 SVE dwarf regnums
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=65d4cadafd7d9d5bb84810cde98a8c3a007a0594
commit 65d4cadafd7d9d5bb84810cde98a8c3a007a0594
Author: Alan Hayward <alan.hayward@arm.com>
Date: Mon Jun 11 10:24:20 2018 +0100
Add Aarch64 SVE dwarf regnums
This is as per the spec:
https://developer.arm.com/products/architecture/a-profile/docs/100985/0000
gdb/
* aarch64-tdep.c (aarch64_dwarf_reg_to_regnum): Add mappings.
* aarch64-tdep.h (AARCH64_DWARF_SVE_VG): Add define.
(AARCH64_DWARF_SVE_FFR): Likewise.
(AARCH64_DWARF_SVE_P0): Likewise.
(AARCH64_DWARF_SVE_Z0): Likewise.
Diff:
---
gdb/ChangeLog | 8 ++++++++
gdb/aarch64-tdep.c | 13 ++++++++++++-
gdb/aarch64-tdep.h | 4 ++++
3 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 3e51f87..635f025 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,13 @@
2018-06-11 Alan Hayward <alan.hayward@arm.com>
+ * aarch64-tdep.c (aarch64_dwarf_reg_to_regnum): Add mappings.
+ * aarch64-tdep.h (AARCH64_DWARF_SVE_VG): Add define.
+ (AARCH64_DWARF_SVE_FFR): Likewise.
+ (AARCH64_DWARF_SVE_P0): Likewise.
+ (AARCH64_DWARF_SVE_Z0): Likewise.
+
+2018-06-11 Alan Hayward <alan.hayward@arm.com>
+
* common/common-regcache.h (raw_compare): New function.
* regcache.c (regcache::raw_compare): Likewise.
* regcache.h (regcache::raw_compare): New declaration.
diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c
index 5380baa..5120fff 100644
--- a/gdb/aarch64-tdep.c
+++ b/gdb/aarch64-tdep.c
@@ -1805,9 +1805,20 @@ aarch64_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg)
if (reg >= AARCH64_DWARF_V0 && reg <= AARCH64_DWARF_V0 + 31)
return AARCH64_V0_REGNUM + reg - AARCH64_DWARF_V0;
+ if (reg == AARCH64_DWARF_SVE_VG)
+ return AARCH64_SVE_VG_REGNUM;
+
+ if (reg == AARCH64_DWARF_SVE_FFR)
+ return AARCH64_SVE_FFR_REGNUM;
+
+ if (reg >= AARCH64_DWARF_SVE_P0 && reg <= AARCH64_DWARF_SVE_P0 + 15)
+ return AARCH64_SVE_P0_REGNUM + reg - AARCH64_DWARF_SVE_P0;
+
+ if (reg >= AARCH64_DWARF_SVE_Z0 && reg <= AARCH64_DWARF_SVE_Z0 + 15)
+ return AARCH64_SVE_Z0_REGNUM + reg - AARCH64_DWARF_SVE_Z0;
+
return -1;
}
-
/* Implement the "print_insn" gdbarch method. */
diff --git a/gdb/aarch64-tdep.h b/gdb/aarch64-tdep.h
index 5a31955..7e5031f 100644
--- a/gdb/aarch64-tdep.h
+++ b/gdb/aarch64-tdep.h
@@ -32,6 +32,10 @@ struct regset;
#define AARCH64_DWARF_X0 0
#define AARCH64_DWARF_SP 31
#define AARCH64_DWARF_V0 64
+#define AARCH64_DWARF_SVE_VG 46
+#define AARCH64_DWARF_SVE_FFR 47
+#define AARCH64_DWARF_SVE_P0 48
+#define AARCH64_DWARF_SVE_Z0 96
/* Size of integer registers. */
#define X_REGISTER_SIZE 8