]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Source/portable/IAR/ARM_CM4F/portasm.s
+ New feature added: Task notifications.
[freertos] / FreeRTOS / Source / portable / IAR / ARM_CM4F / portasm.s
index 4e5ed520d052cc4f1421f14d10e43a07478a4d3b..546c95479a0bfaf06bc9f8041d9be300468e8418 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.\r
+    FreeRTOS V8.1.2 - Copyright (C) 2014 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
     the terms of the GNU General Public License (version 2) as published by the\r
     Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.\r
 \r
-    >>! NOTE: The modification to the GPL is included to allow you to distribute\r
-    >>! a combined work that includes FreeRTOS without being obliged to provide\r
-    >>! the source code for proprietary components outside of the FreeRTOS\r
-    >>! kernel.\r
+    >>!   NOTE: The modification to the GPL is included to allow you to     !<<\r
+    >>!   distribute a combined work that includes FreeRTOS without being   !<<\r
+    >>!   obliged to provide the source code for proprietary components     !<<\r
+    >>!   outside of the FreeRTOS kernel.                                   !<<\r
 \r
     FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY\r
     WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r
@@ -72,8 +72,6 @@
        EXTERN vTaskSwitchContext\r
 \r
        PUBLIC xPortPendSVHandler\r
-       PUBLIC ulPortSetInterruptMask\r
-       PUBLIC vPortClearInterruptMask\r
        PUBLIC vPortSVCHandler\r
        PUBLIC vPortStartFirstTask\r
        PUBLIC vPortEnableVFP\r
@@ -83,7 +81,7 @@
 \r
 xPortPendSVHandler:\r
        mrs r0, psp\r
-\r
+       isb\r
        /* Get the location of the current TCB. */\r
        ldr     r3, =pxCurrentTCB\r
        ldr     r2, [r3]\r
@@ -102,6 +100,8 @@ xPortPendSVHandler:
        stmdb sp!, {r3}\r
        mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY\r
        msr basepri, r0\r
+       dsb\r
+       isb\r
        bl vTaskSwitchContext\r
        mov r0, #0\r
        msr basepri, r0\r
@@ -121,7 +121,7 @@ xPortPendSVHandler:
        vldmiaeq r0!, {s16-s31}\r
 \r
        msr psp, r0\r
-\r
+       isb\r
        #ifdef WORKAROUND_PMU_CM001 /* XMC4000 specific errata */\r
                #if WORKAROUND_PMU_CM001 == 1\r
                        push { r14 }\r
@@ -134,20 +134,6 @@ xPortPendSVHandler:
 \r
 /*-----------------------------------------------------------*/\r
 \r
-ulPortSetInterruptMask:\r
-       mrs r0, basepri\r
-       mov r1, #configMAX_SYSCALL_INTERRUPT_PRIORITY\r
-       msr basepri, r1\r
-       bx r14\r
-\r
-/*-----------------------------------------------------------*/\r
-\r
-vPortClearInterruptMask:\r
-       msr basepri, r0\r
-       bx r14\r
-\r
-/*-----------------------------------------------------------*/\r
-\r
 vPortSVCHandler:\r
        /* Get the location of the current TCB. */\r
        ldr     r3, =pxCurrentTCB\r
@@ -156,6 +142,7 @@ vPortSVCHandler:
        /* 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
@@ -171,6 +158,9 @@ vPortStartFirstTask
        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
 \r
 /*-----------------------------------------------------------*/\r