Luca
Fork of mbed-rtos by
Diff: rtx/TARGET_CORTEX_M/TARGET_RTOS_M4_M7/TOOLCHAIN_ARM/HAL_CM4.c
- Revision:
- 123:58563e6cba1e
- Parent:
- 112:53ace74b190c
--- a/rtx/TARGET_CORTEX_M/TARGET_RTOS_M4_M7/TOOLCHAIN_ARM/HAL_CM4.c Wed Nov 09 12:22:14 2016 -0600 +++ b/rtx/TARGET_CORTEX_M/TARGET_RTOS_M4_M7/TOOLCHAIN_ARM/HAL_CM4.c Mon Nov 14 17:14:42 2016 -0600 @@ -164,7 +164,9 @@ SVC_ContextSave TST LR,#0x10 ; is it extended frame? +#if (__FPU_PRESENT == 1) VSTMDBEQ R12!,{S16-S31} ; yes, stack also VFP hi-regs +#endif MOVEQ R0,#0x01 ; os_tsk->stack_frame val MOVNE R0,#0x00 STRB R0,[R1,#TCB_STACKF] ; os_tsk.run->stack_frame = val @@ -184,7 +186,9 @@ CMP R0,#0 ; Basic/Extended Stack Frame MVNEQ LR,#:NOT:0xFFFFFFFD ; set EXC_RETURN value MVNNE LR,#:NOT:0xFFFFFFED +#if (__FPU_PRESENT == 1) VLDMIANE R12!,{S16-S31} ; restore VFP hi-registers +#endif MSR PSP,R12 ; Write PSP SVC_Exit @@ -247,7 +251,9 @@ MRS R12,PSP ; Read PSP TST LR,#0x10 ; is it extended frame? +#if (__FPU_PRESENT == 1) VSTMDBEQ R12!,{S16-S31} ; yes, stack also VFP hi-regs +#endif MOVEQ R0,#0x01 ; os_tsk->stack_frame val MOVNE R0,#0x00 STRB R0,[R1,#TCB_STACKF] ; os_tsk.run->stack_frame = val @@ -266,7 +272,9 @@ CMP R0,#0 ; Basic/Extended Stack Frame MVNEQ LR,#:NOT:0xFFFFFFFD ; set EXC_RETURN value MVNNE LR,#:NOT:0xFFFFFFED +#if (__FPU_PRESENT == 1) VLDMIANE R12!,{S16-S31} ; restore VFP hi-regs +#endif MSR PSP,R12 ; Write PSP Sys_Exit