aboutsummaryrefslogtreecommitdiff
path: root/gdb/features
diff options
context:
space:
mode:
authorAlan Hayward <alan.hayward@arm.com>2019-03-28 12:14:09 +0000
committerAlan Hayward <alan.hayward@arm.com>2019-03-28 12:14:09 +0000
commitfc96163a3ea7761f5353591c825027090942e330 (patch)
treed40af5ab32e59294119b2515922f4b07233fb4a4 /gdb/features
parent69f4c9cc037f2226982a21fae63ffbc5e866fcca (diff)
downloadgdb-fc96163a3ea7761f5353591c825027090942e330.zip
gdb-fc96163a3ea7761f5353591c825027090942e330.tar.gz
gdb-fc96163a3ea7761f5353591c825027090942e330.tar.bz2
AArch64: 128bit views for SVE registers
SVE can view Z registers as 128bit values using .q prefix. Add this view to the SVE feature. gdb/ChangeLog: * features/aarch64-sve.c (create_feature_aarch64_sve): Add q view.
Diffstat (limited to 'gdb/features')
-rw-r--r--gdb/features/aarch64-sve.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/gdb/features/aarch64-sve.c b/gdb/features/aarch64-sve.c
index aa2ac7a..2166b4b 100644
--- a/gdb/features/aarch64-sve.c
+++ b/gdb/features/aarch64-sve.c
@@ -31,6 +31,12 @@ create_feature_aarch64_sve (struct target_desc *result, long regnum,
feature = tdesc_create_feature (result, "org.gnu.gdb.aarch64.sve");
+ element_type = tdesc_named_type (feature, "uint128");
+ tdesc_create_vector (feature, "svevqu", element_type, scale);
+
+ element_type = tdesc_named_type (feature, "int128");
+ tdesc_create_vector (feature, "svevqs", element_type, scale);
+
element_type = tdesc_named_type (feature, "ieee_double");
tdesc_create_vector (feature, "svevdf", element_type, 2 * scale);
@@ -61,6 +67,12 @@ create_feature_aarch64_sve (struct target_desc *result, long regnum,
element_type = tdesc_named_type (feature, "int8");
tdesc_create_vector (feature, "svevbs", element_type, 16 * scale);
+ type_with_fields = tdesc_create_union (feature, "svevnq");
+ field_type = tdesc_named_type (feature, "svevqu");
+ tdesc_add_field (type_with_fields, "u", field_type);
+ field_type = tdesc_named_type (feature, "svevqs");
+ tdesc_add_field (type_with_fields, "s", field_type);
+
type_with_fields = tdesc_create_union (feature, "svevnd");
field_type = tdesc_named_type (feature, "svevdf");
tdesc_add_field (type_with_fields, "f", field_type);
@@ -90,6 +102,8 @@ create_feature_aarch64_sve (struct target_desc *result, long regnum,
tdesc_add_field (type_with_fields, "s", field_type);
type_with_fields = tdesc_create_union (feature, "svev");
+ field_type = tdesc_named_type (feature, "svevnq");
+ tdesc_add_field (type_with_fields, "q", field_type);
field_type = tdesc_named_type (feature, "svevnd");
tdesc_add_field (type_with_fields, "d", field_type);
field_type = tdesc_named_type (feature, "svevns");