		RSEG ICODE:CODE
		CODE32

	EXTERN vTaskSwitchContext
	EXTERN vTaskIncrementTick

	PUBLIC vPortYieldProcessor
	PUBLIC vPortPreemptiveTick
	PUBLIC vPortStartFirstTask

#include "AT91SAM7S64_inc.h"
#include "ISR_Support.h"

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Starting the first task is just a matter of restoring the context that
; was created by pxPortInitialiseStack().
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
vPortStartFirstTask:
	portRESTORE_CONTEXT

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Manual context switch function.  This is the SWI hander.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
vPortYieldProcessor:
	ADD		LR, LR, #4			; Add 4 to the LR to make the LR appear exactly 
								; as if the context was saved during and IRQ 
								; handler.
								
	portSAVE_CONTEXT			; Save the context of the current task...
	LDR R0, =vTaskSwitchContext	; before selecting the next task to execute.
	mov     lr, pc
	BX R0
	portRESTORE_CONTEXT			; Restore the context of the selected task.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Preemptive context switch function.  This will only ever get installed if
; portUSE_PREEMPTION is set to 1 in portmacro.h.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
vPortPreemptiveTick:
	portSAVE_CONTEXT			; Save the context of the current task.

	LDR R0, =vTaskIncrementTick ; Increment the tick count - this may wake a task.
	mov lr, pc
	BX R0
	LDR R0, =vTaskSwitchContext ; Select the next task to execute.
	mov lr, pc
	BX R0

	LDR	R14, =AT91C_BASE_PITC	; Clear the PIT interrupt
	LDR	R0, [R14, #PITC_PIVR ]

	LDR R14, =AT91C_BASE_AIC	; Mark the End of Interrupt on the AIC
    STR	R14, [R14, #AIC_EOICR]

	portRESTORE_CONTEXT			; Restore the context of the selected task.


	END

