aboutsummaryrefslogtreecommitdiff
path: root/src/cortexm.c
diff options
context:
space:
mode:
authorGareth McMullin2014-09-12 12:24:43 +1200
committerGareth McMullin2014-09-12 12:24:43 +1200
commit9fda010b32a6d1ffbfaaae98f63470d8bce33c0b (patch)
treec3fdaee3c251b03a0db6da9fbf361506166ffb41 /src/cortexm.c
parent091389b982477bb96624b51f59930f304813bca8 (diff)
Give up unwinding a fault if reading the stack fails.
Diffstat (limited to 'src/cortexm.c')
-rw-r--r--src/cortexm.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/cortexm.c b/src/cortexm.c
index 1142394..8c2e54e 100644
--- a/src/cortexm.c
+++ b/src/cortexm.c
@@ -693,6 +693,8 @@ static int cortexm_fault_unwind(struct target_s *target)
/* Read stack for pre-exception registers */
uint32_t sp = spsel ? regs[REG_PSP] : regs[REG_MSP];
target_mem_read_words(target, stack, sp, sizeof(stack));
+ if (target_check_error(target))
+ return 0;
regs[REG_LR] = stack[5]; /* restore LR to pre-exception state */
regs[REG_PC] = stack[6]; /* restore PC to pre-exception state */