aboutsummaryrefslogtreecommitdiff
path: root/gdb/arch
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2022-05-03 16:05:10 -0700
committerJohn Baldwin <jhb@FreeBSD.org>2022-05-03 16:05:10 -0700
commit92d48a1e4eac54db11f1a110328672394fce2853 (patch)
treea2ba5c23c3adda275329a6760f731006c9d8da32 /gdb/arch
parent40c23d880386d6e8202567eaa2a6b041feb1a652 (diff)
downloadbinutils-92d48a1e4eac54db11f1a110328672394fce2853.zip
binutils-92d48a1e4eac54db11f1a110328672394fce2853.tar.gz
binutils-92d48a1e4eac54db11f1a110328672394fce2853.tar.bz2
Add an arm-tls feature which includes the tpidruro register from CP15.
Diffstat (limited to 'gdb/arch')
-rw-r--r--gdb/arch/aarch32.c2
-rw-r--r--gdb/arch/arm.c6
-rw-r--r--gdb/arch/arm.h2
3 files changed, 8 insertions, 2 deletions
diff --git a/gdb/arch/aarch32.c b/gdb/arch/aarch32.c
index 0c544d3..4d6ffb4 100644
--- a/gdb/arch/aarch32.c
+++ b/gdb/arch/aarch32.c
@@ -19,6 +19,7 @@
#include "aarch32.h"
#include "../features/arm/arm-core.c"
+#include "../features/arm/arm-tls.c"
#include "../features/arm/arm-vfpv3.c"
/* See aarch32.h. */
@@ -38,6 +39,7 @@ aarch32_create_target_description ()
/* Create a vfpv3 feature, then a blank NEON feature. */
regnum = create_feature_arm_arm_vfpv3 (tdesc.get (), regnum);
tdesc_create_feature (tdesc.get (), "org.gnu.gdb.arm.neon");
+ regnum = create_feature_arm_arm_tls (tdesc.get (), regnum);
return tdesc.release ();
}
diff --git a/gdb/arch/arm.c b/gdb/arch/arm.c
index bc6e5ce..14f0a7a 100644
--- a/gdb/arch/arm.c
+++ b/gdb/arch/arm.c
@@ -22,6 +22,7 @@
#include "arm.h"
#include "../features/arm/arm-core.c"
+#include "../features/arm/arm-tls.c"
#include "../features/arm/arm-vfpv2.c"
#include "../features/arm/arm-vfpv3.c"
#include "../features/arm/xscale-iwmmxt.c"
@@ -374,7 +375,7 @@ shifted_reg_val (struct regcache *regcache, unsigned long inst,
/* See arch/arm.h. */
target_desc *
-arm_create_target_description (arm_fp_type fp_type)
+arm_create_target_description (arm_fp_type fp_type, bool tls)
{
target_desc_up tdesc = allocate_target_description ();
@@ -410,6 +411,9 @@ arm_create_target_description (arm_fp_type fp_type)
error (_("Invalid Arm FP type: %d"), fp_type);
}
+ if (tls)
+ regnum = create_feature_arm_arm_tls (tdesc.get (), regnum);
+
return tdesc.release ();
}
diff --git a/gdb/arch/arm.h b/gdb/arch/arm.h
index 0728bea..4ad329f 100644
--- a/gdb/arch/arm.h
+++ b/gdb/arch/arm.h
@@ -207,7 +207,7 @@ unsigned long shifted_reg_val (struct regcache *regcache,
/* Create an Arm target description with the given FP hardware type. */
-target_desc *arm_create_target_description (arm_fp_type fp_type);
+target_desc *arm_create_target_description (arm_fp_type fp_type, bool tls);
/* Create an Arm M-profile target description with the given hardware type. */