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.
Этот коммит содержится в:
родитель
7e05c92420
коммит
839edec64c
1 изменённых файлов: 2 добавлений и 2 удалений
|
@ -114,9 +114,9 @@ tinygo_swapTask:
|
||||||
pop {r4-r11, pc}
|
pop {r4-r11, pc}
|
||||||
#else
|
#else
|
||||||
pop {r4-r7}
|
pop {r4-r7}
|
||||||
.cfi_def_cfa_offset 5*9
|
.cfi_def_cfa_offset 5*4
|
||||||
pop {r0-r3}
|
pop {r0-r3}
|
||||||
.cfi_def_cfa_offset 1*9
|
.cfi_def_cfa_offset 1*4
|
||||||
mov r8, r0
|
mov r8, r0
|
||||||
mov r9, r1
|
mov r9, r1
|
||||||
mov r10, r2
|
mov r10, r2
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче