From bb64d597e9d792ccc5d97617fd3abe9179c23bc4 Mon Sep 17 00:00:00 2001 From: Daniele Cattaneo <daniele3.cattaneo@mail.polimi.it> Date: Sat, 27 May 2023 16:50:50 +0200 Subject: [PATCH] Fix context save/restore on STM32F0. Signed-off-by: Terraneo Federico <fede.tft@miosix.org> --- .../common/interfaces-impl/portability_impl.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/miosix/arch/cortexM0_stm32f0/common/interfaces-impl/portability_impl.h b/miosix/arch/cortexM0_stm32f0/common/interfaces-impl/portability_impl.h index 841bed9e..87f34257 100644 --- a/miosix/arch/cortexM0_stm32f0/common/interfaces-impl/portability_impl.h +++ b/miosix/arch/cortexM0_stm32f0/common/interfaces-impl/portability_impl.h @@ -80,12 +80,12 @@ const int stackPtrOffsetInCtxsave=0; ///< Allows to locate the stack pointer "mrs r1, psp \n\t" /*get PROCESS stack pointer*/ \ "ldr r0, =ctxsave \n\t" /*get current context*/ \ "ldr r0, [r0] \n\t" \ - "stmia r0, {r1,r4-r7} \n\t" /*save PROCESS sp + r4-r7*/ \ + "stmia r0!, {r1,r4-r7} \n\t" /*save PROCESS sp + r4-r7*/ \ "mov r4, r8 \n\t" \ "mov r5, r9 \n\t" \ "mov r6, r10 \n\t" \ "mov r7, r11 \n\t" \ - "stmia r0, {r4-r7} \n\t" \ + "stmia r0!, {r4-r7} \n\t" \ "dmb \n\t" \ ); \ } @@ -101,12 +101,12 @@ const int stackPtrOffsetInCtxsave=0; ///< Allows to locate the stack pointer { \ asm volatile("ldr r0, =ctxsave \n\t" /*get current context*/ \ "ldr r0, [r0] \n\t" \ - "ldmia r0, {r1,r4-r7} \n\t" /*pop r8-r11 saving in r4-r7*/ \ + "ldmia r0!, {r1,r4-r7} \n\t" /*pop r8-r11 saving in r4-r7*/ \ "msr psp, r1 \n\t" /*restore PROCESS sp*/ \ - "ldmia r0!, {r0-r3} \n\t" \ - "mov r9, r0 \n\t" \ - "mov r10, r1 \n\t" \ - "mov r11, r2 \n\t" \ + "ldmia r0, {r0-r3} \n\t" \ + "mov r8, r0 \n\t" \ + "mov r9, r1 \n\t" \ + "mov r10, r2 \n\t" \ "mov r11, r3 \n\t" \ "pop {pc} \n\t" /*return*/ \ ); \ -- GitLab