This commit is contained in:
Richard Barry 2008-09-17 15:58:45 +00:00
parent 223bd9c75f
commit 3b34009b75

View file

@ -48,7 +48,6 @@
*/ */
/* Kernel includes. */ /* Kernel includes. */
#include "FreeRTOS.h" #include "FreeRTOS.h"
#include "task.h" #include "task.h"
@ -57,8 +56,11 @@
/* Supervisor mode set. */ /* Supervisor mode set. */
#define portINITIAL_STATUS_REGISTER ( ( portSTACK_TYPE ) 0x2000) #define portINITIAL_STATUS_REGISTER ( ( portSTACK_TYPE ) 0x2000)
/* Used to keep track of the number of nested calls to taskENTER_CRITICAL(). This
will be set to 0 prior to the first task being started. */
static unsigned portLONG ulCriticalNesting = 0x9999UL; static unsigned portLONG ulCriticalNesting = 0x9999UL;
/*-----------------------------------------------------------*/
portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE * pxTopOfStack, pdTASK_CODE pxCode, void *pvParameters ) portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE * pxTopOfStack, pdTASK_CODE pxCode, void *pvParameters )
{ {
@ -76,48 +78,7 @@ portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE * pxTopOfStack, pdTASK_COD
pxTopOfStack--; pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0x0; /*FP*/ *pxTopOfStack = ( portSTACK_TYPE ) 0x0; /*FP*/
pxTopOfStack--; pxTopOfStack -= 14; /* A5 to D0. */
*pxTopOfStack = ( portSTACK_TYPE ) 0xA5A5A5A5;
pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xA4A4A4A4;
pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xA3A3A3A3;
pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xA2A2A2A2;
pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xA1A1A1A1;
pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xA0A0A0A0;
pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xD7D7D7D7;
pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xD6D6D6D6;
pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xD5D5D5D5;
pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xD4D4D4D4;
pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xD3D3D3D3;
pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xD2D2D2D2;
pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xD1D1D1D1;
pxTopOfStack--;
*pxTopOfStack = ( portSTACK_TYPE ) 0xD0D0D0D0;
return pxTopOfStack; return pxTopOfStack;
} }
@ -129,7 +90,10 @@ extern void vPortStartFirstTask( void );
ulCriticalNesting = 0UL; ulCriticalNesting = 0UL;
/* Configure the interrupts used by this port. */
vApplicationSetupInterrupts(); vApplicationSetupInterrupts();
/* Start the first task executing. */
vPortStartFirstTask(); vPortStartFirstTask();
return pdFALSE; return pdFALSE;
@ -138,6 +102,7 @@ extern void vPortStartFirstTask( void );
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* Not implemented as there is nothing to return to. */
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
@ -145,6 +110,8 @@ void vPortEnterCritical( void )
{ {
if( ulCriticalNesting == 0UL ) if( ulCriticalNesting == 0UL )
{ {
/* Guard against context switches being pended simultaneously with a
critical section being entered. */
do do
{ {
portDISABLE_INTERRUPTS(); portDISABLE_INTERRUPTS();
@ -176,7 +143,6 @@ void vPortYieldHandler( void )
unsigned portLONG ulSavedInterruptMask; unsigned portLONG ulSavedInterruptMask;
ulSavedInterruptMask = portSET_INTERRUPT_MASK_FROM_ISR(); ulSavedInterruptMask = portSET_INTERRUPT_MASK_FROM_ISR();
/* -32 as we are using the high word of the 64bit mask. */
/* Note this will clear all forced interrupts - this is done for speed. */ /* Note this will clear all forced interrupts - this is done for speed. */
MCF_INTC0_INTFRCH = 0; MCF_INTC0_INTFRCH = 0;
vTaskSwitchContext(); vTaskSwitchContext();