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 841bed9e6444a3e72322cf8698413c36219f92ab..87f34257b36d3b3e17e9aba92a01438df217183f 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*/ \ ); \