EXPORT vPortYieldProcessor\r
EXPORT vPortStartFirstTask\r
EXPORT vPreemptiveTick\r
-\r
+ EXPORT vPortYield\r
\r
\r
VICVECTADDR EQU 0xFFFFF030\r
T0IR EQU 0xE0004000\r
T0MATCHBIT EQU 0x00000001\r
\r
-\r
ARM\r
AREA PORT_ASM, CODE, READONLY\r
- PRESERVE8\r
\r
\r
\r
; setup by pxPortInitialiseStack\r
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
vPortStartFirstTask\r
+\r
+ PRESERVE8\r
+\r
portRESTORE_CONTEXT\r
\r
+vPortYield\r
+\r
+ PRESERVE8\r
+\r
+ SVC 0\r
+ bx lr\r
\r
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
; Interrupt service routine for the SWI interrupt. The vector table is\r
\r
vPortYieldProcessor\r
\r
+ PRESERVE8\r
+\r
; Within an IRQ ISR the link register has an offset from the true return \r
; address, but an SWI ISR does not. Add the offset manually so the same \r
; ISR return code can be used in both cases.\r
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; \r
\r
vPreemptiveTick\r
+\r
+ PRESERVE8\r
+\r
portSAVE_CONTEXT ; Save the context of the current task. \r
\r
LDR R0, =vTaskIncrementTick ; Increment the tick count. \r