+ .endm\r
+;-----------------------------------------------------------\r
+ \r
+_vPortStartFirstTask:\r
+ \r
+ portRESTORE_CONTEXT\r
+ \r
+;-----------------------------------------------------------\r
+\r
+_vPortYield:\r
+\r
+ ; Push r0 so it can be used.\r
+ mov.l r0, @-r15\r
+ \r
+ ; Set the interrupt mask in the status register.\r
+ stc sr, r0\r
+ or #240,r0\r
+ ldc r0, sr\r
+ \r
+ ; Restore r0 so its original value can be saved by the movml.l instruction \r
+ ; below, without ending up with two copies on the stack.\r
+ mov.l @r15+, r0\r
+\r
+ portSAVE_CONTEXT\r
+\r
+ mov.l #_vTaskSwitchContext, r0\r
+ jsr @r0\r
+ nop\r
+\r
+ portRESTORE_CONTEXT\r
+ \r
+;-----------------------------------------------------------\r
+\r
+_vPortPreemptiveTick\r
+\r
+ portSAVE_CONTEXT\r
+ \r
+ mov.l #_vTaskIncrementTick, r0\r
+ jsr @r0\r
+ nop\r
+\r
+ mov.l #_vTaskSwitchContext, r0\r
+ jsr @r0\r
+ nop\r
+\r
+ portRESTORE_CONTEXT\r
+ \r
+;-----------------------------------------------------------\r
+\r
+_vPortCooperativeTick\r
+\r
+ portSAVE_CONTEXT\r
+ \r
+ mov.l #_vTaskIncrementTick, r0\r
+ jsr @r0\r
+ nop\r
+\r
+ portRESTORE_CONTEXT\r
+ \r
+;-----------------------------------------------------------\r