summaryrefslogtreecommitdiff
path: root/gdb/arm-tdep.c
diff options
context:
space:
mode:
authorTorbjörn SVENSSON <torbjorn.svensson@foss.st.com>2022-11-23 11:58:31 +0100
committerTorbjörn SVENSSON <torbjorn.svensson@foss.st.com>2022-11-23 14:19:04 +0100
commit8db533e7d6d28db1be0ae4c95ddea7aa3a6224c8 (patch)
tree3f6cdbbd75a67c06061eb71774f7ea2f2cb0e7df /gdb/arm-tdep.c
parent9bd83c444e3c73ee44cd9e9ec6f7d94940e467f1 (diff)
downloadbinutils-gdb-8db533e7d6d28db1be0ae4c95ddea7aa3a6224c8.tar.gz
gdb/arm: Include FType bit in EXC_RETURN pattern on v8m
For v8m, the EXC_RETURN pattern, without security extension, consists of FType, Mode and SPSEL. These are the same bits that are used in v7m. This patch extends the list of patterns to include also the FType bit and not just Mode and SPSEL bits for v8m targets without security extension. Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
Diffstat (limited to 'gdb/arm-tdep.c')
-rw-r--r--gdb/arm-tdep.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index a839f957440..6f02f04b5cb 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -828,13 +828,17 @@ arm_m_addr_is_lockup (CORE_ADDR addr)
For more details see "B1.5.8 Exception return behavior"
in both ARMv6-M and ARMv7-M Architecture Reference Manuals.
- In the ARMv8-M Architecture Technical Reference also adds
- for implementations without the Security Extension:
+ From ARMv8-M Architecture Technical Reference, D1.2.95
+ FType, Mode and SPSEL bits are to be considered when the Security
+ Extension is not implemented.
- EXC_RETURN Condition
- 0xFFFFFFB0 Return to Handler mode.
- 0xFFFFFFB8 Return to Thread mode using the main stack.
- 0xFFFFFFBC Return to Thread mode using the process stack. */
+ EXC_RETURN Return To Return Stack Frame Type
+ 0xFFFFFFA0 Handler mode Main Extended
+ 0xFFFFFFA8 Thread mode Main Extended
+ 0xFFFFFFAC Thread mode Process Extended
+ 0xFFFFFFB0 Handler mode Main Standard
+ 0xFFFFFFB8 Thread mode Main Standard
+ 0xFFFFFFBC Thread mode Process Standard */
static int
arm_m_addr_is_magic (struct gdbarch *gdbarch, CORE_ADDR addr)
@@ -859,6 +863,9 @@ arm_m_addr_is_magic (struct gdbarch *gdbarch, CORE_ADDR addr)
switch (addr)
{
/* Values from ARMv8-M Architecture Technical Reference. */
+ case 0xffffffa0:
+ case 0xffffffa8:
+ case 0xffffffac:
case 0xffffffb0:
case 0xffffffb8:
case 0xffffffbc: