From ae7e2f45aa4798be449f282bbf75ad41e73f055e Mon Sep 17 00:00:00 2001 From: Christophe Lyon Date: Fri, 1 Apr 2022 10:22:16 +0100 Subject: gdb/arm: Add support for multiple stack pointers on Cortex-M MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Armv8-M architecture with Security extension features four stack pointers to handle Secure and Non-secure modes. This patch adds support to switch between them as needed during unwinding, and replaces all updates of cache->prev_sp with calls to arm_cache_set_prev_sp. Signed-off-by: Torbjörn Svensson Signed-off-by: Christophe Lyon Signed-off-by: Christophe Lyon --- gdb/features/arm/arm-secext.c | 17 +++++++++++++++++ gdb/features/arm/arm-secext.xml | 15 +++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 gdb/features/arm/arm-secext.c create mode 100644 gdb/features/arm/arm-secext.xml (limited to 'gdb/features') diff --git a/gdb/features/arm/arm-secext.c b/gdb/features/arm/arm-secext.c new file mode 100644 index 0000000..39ef4af --- /dev/null +++ b/gdb/features/arm/arm-secext.c @@ -0,0 +1,17 @@ +/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro: + Original: arm-secext.xml */ + +#include "gdbsupport/tdesc.h" + +static int +create_feature_arm_arm_m_system (struct target_desc *result, long regnum) +{ + struct tdesc_feature *feature; + + feature = tdesc_create_feature (result, "org.gnu.gdb.arm.secext"); + tdesc_create_reg (feature, "msp_ns", regnum++, 1, NULL, 32, "data_ptr"); + tdesc_create_reg (feature, "psp_ns", regnum++, 1, NULL, 32, "data_ptr"); + tdesc_create_reg (feature, "msp_s", regnum++, 1, NULL, 32, "data_ptr"); + tdesc_create_reg (feature, "psp_s", regnum++, 1, NULL, 32, "data_ptr"); + return regnum; +} diff --git a/gdb/features/arm/arm-secext.xml b/gdb/features/arm/arm-secext.xml new file mode 100644 index 0000000..52b2c20 --- /dev/null +++ b/gdb/features/arm/arm-secext.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + -- cgit v1.1