]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Source/portable/Tasking/ARM_CM4F/port_asm.asm
Update version number to 9.0.0rc2.
[freertos] / FreeRTOS / Source / portable / Tasking / ARM_CM4F / port_asm.asm
index aa3e99f33e018583e335ac313b61bc9ae9c4c659..8b8cd94fbf46ab31147a0528b13baf8fe77c3b13 100644 (file)
@@ -1,5 +1,5 @@
 ;/*\r
-;    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
+;    FreeRTOS V9.0.0rc2 - Copyright (C) 2016 Real Time Engineers Ltd.\r
 ;    All rights reserved\r
 ;\r
 ;\r
@@ -73,6 +73,7 @@
 _vector_14: .type func\r
 \r
        mrs r0, psp\r
+       isb\r
 \r
        ;Get the location of the current TCB.\r
        ldr.w   r3, =pxCurrentTCB\r
@@ -91,6 +92,7 @@ _vector_14: .type func
 \r
        stmdb sp!, {r3}\r
        ldr.w r0, =ulMaxSyscallInterruptPriorityConst\r
+       ldr r0, [r0]\r
        msr basepri, r0\r
        bl vTaskSwitchContext\r
        mov r0, #0\r
@@ -110,6 +112,7 @@ _vector_14: .type func
        vldmiaeq r0!, {s16-s31}\r
 \r
        msr psp, r0\r
+       isb\r
        bx r14\r
 \r
        .size   _vector_14, $-_vector_14\r
@@ -125,6 +128,7 @@ _vector_14: .type func
 _lc_ref__vector_pp_14: .type func\r
 \r
        mrs r0, psp\r
+       isb\r
 \r
        ;Get the location of the current TCB.\r
        ldr.w   r3, =pxCurrentTCB\r
@@ -143,6 +147,7 @@ _lc_ref__vector_pp_14: .type func
 \r
        stmdb sp!, {r3}\r
        ldr.w r0, =ulMaxSyscallInterruptPriorityConst\r
+       ldr r0, [r0]\r
        msr basepri, r0\r
        bl vTaskSwitchContext\r
        mov r0, #0\r
@@ -162,6 +167,7 @@ _lc_ref__vector_pp_14: .type func
        vldmiaeq r0!, {s16-s31}\r
 \r
        msr psp, r0\r
+       isb\r
        push { lr }\r
        pop { pc } ; XMC4000 specific errata workaround.  Do not used "bx lr" here.\r
 \r
@@ -181,6 +187,7 @@ SVC_Handler: .type func
        ;Pop the core registers.\r
        ldmia r0!, {r4-r11, r14}\r
        msr psp, r0\r
+       isb\r
        mov r0, #0\r
        msr     basepri, r0\r
        bx r14\r
@@ -201,6 +208,9 @@ vPortStartFirstTask .type func
        msr msp, r0\r
        ;Call SVC to start the first task.\r
        cpsie i\r
+       cpsie f\r
+       dsb\r
+       isb\r
        svc 0\r
        .size   vPortStartFirstTask, $-vPortStartFirstTask\r
        .endsec\r
@@ -230,6 +240,7 @@ vPortEnableVFP .type func
 ulPortSetInterruptMask:\r
        mrs r0, basepri\r
        ldr.w r1, =ulMaxSyscallInterruptPriorityConst\r
+       ldr r1, [r1]\r
        msr basepri, r1\r
        bx r14\r
        .size   ulPortSetInterruptMask, $-ulPortSetInterruptMask\r