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}
|
||||
#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
|
||||
|
|
|
|||
Загрузка…
Создание таблицы
Сослаться в новой задаче