mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-04 11:07:46 +00:00
cortexm: fix stack size offset
The old code was broken and led to a HardFault in a rather convoluted
way:
1. The CFA offset was incorrect, in fact it was not aligned (the stack
is supposed to always be aligned to 4 bytes at least).
2. This unaligned size was then used for stack size calculations.
3. A stack that wasn't a multiple of 4 was allocated.
4. The calleeSavedRegs struct (in `(internal/task.state).archInit`) was
not correctly aligned.
5. Writing to this struct resulted in a HardFault.
This commit is contained in:
committed by
Ron Evans
parent
7e05c92420
commit
839edec64c
@@ -114,9 +114,9 @@ tinygo_swapTask:
|
||||
pop {r4-r11, pc}
|
||||
#else
|
||||
pop {r4-r7}
|
||||
.cfi_def_cfa_offset 5*9
|
||||
.cfi_def_cfa_offset 5*4
|
||||
pop {r0-r3}
|
||||
.cfi_def_cfa_offset 1*9
|
||||
.cfi_def_cfa_offset 1*4
|
||||
mov r8, r0
|
||||
mov r9, r1
|
||||
mov r10, r2
|
||||
|
||||
Reference in New Issue
Block a user