diff options
author | 2019-01-20 13:07:01 -0600 | |
---|---|---|
committer | 2019-01-20 13:07:01 -0600 | |
commit | 0e61775813fd78d0e50b0a19692b1c41cc246046 (patch) | |
tree | 94623b68cd4ef16ae9ed9c1c2e0b30177e58b796 /cortex-m-rt/asm.s | |
parent | 28f74ed6d29df432334d29d2083e91a1a5d0fa6c (diff) | |
download | cortex-m-0e61775813fd78d0e50b0a19692b1c41cc246046.tar.gz cortex-m-0e61775813fd78d0e50b0a19692b1c41cc246046.tar.zst cortex-m-0e61775813fd78d0e50b0a19692b1c41cc246046.zip |
On HardFault entry use MSP/PSP depending on stack mode
Diffstat (limited to 'cortex-m-rt/asm.s')
-rw-r--r-- | cortex-m-rt/asm.s | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/cortex-m-rt/asm.s b/cortex-m-rt/asm.s index 1f0e74d..50a3fa5 100644 --- a/cortex-m-rt/asm.s +++ b/cortex-m-rt/asm.s @@ -6,5 +6,14 @@ .type HardFaultTrampoline,%function .thumb_func HardFaultTrampoline: + # depending on the stack mode in EXC_RETURN, fetch stack pointer from + # PSP or MSP + mov r0, lr + mov r1, #4 + tst r0, r1 + bne 0f mrs r0, MSP b HardFault +0: + mrs r0, PSP + b HardFault |