]> git.sur5r.net Git - freertos/blobdiff - Source/portable/GCC/PPC405/port.c
More work in progress (PPC).
[freertos] / Source / portable / GCC / PPC405 / port.c
index 774ad92854f3cf9eda36bfbcd72581874b1c2b61..07b90fea5fa7ed10707726adad56e350d627dc46 100644 (file)
@@ -41,7 +41,7 @@
 */\r
 \r
 /*-----------------------------------------------------------\r
- * Implementation of functions defined in portable.h for the MicroBlaze port.\r
+ * Implementation of functions defined in portable.h for the PPC405 port.\r
  *----------------------------------------------------------*/\r
 \r
 \r
@@ -50,7 +50,6 @@
 #include "task.h"\r
 \r
 /* Library includes. */\r
-#include "xexception_l.h"\r
 #include "xtime_l.h"\r
 \r
 /* Standard includes. */\r
 \r
 /*-----------------------------------------------------------*/\r
 \r
-#define portCRITICAL_INTERRUPT_ENABLE  ( 1UL << 14UL )\r
-#define portEXTERNAL_INTERRUPT_ENABLE  ( 1UL << 16UL )\r
-#define portMACHINE_CHECK_ENABLE               ( 1UL << 19UL )\r
+#define portCRITICAL_INTERRUPT_ENABLE  ( 0UL << 17UL )\r
+#define portEXTERNAL_INTERRUPT_ENABLE  ( 1UL << 15UL )\r
+#define portMACHINE_CHECK_ENABLE               ( 0UL << 12UL )\r
 #define portINITIAL_MSR                ( portCRITICAL_INTERRUPT_ENABLE | portEXTERNAL_INTERRUPT_ENABLE | portMACHINE_CHECK_ENABLE )\r
 \r
-\r
 /*\r
  */\r
 static void prvSetupTimerInterrupt( void );\r
-extern void vStartFirstTask( void );\r
-/*-----------------------------------------------------------*/\r
-\r
-static void prvTickISR( void );\r
+extern void vPortTickISR( void );\r
 extern void vPortYield( void );\r
+extern void vPortStartFirstTask( void );\r
 \r
 /* \r
  * Initialise the stack of a task to look exactly as if a call to \r
@@ -156,13 +152,13 @@ portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE
        pxTopOfStack--;\r
        *pxTopOfStack = 0x00000000UL;   /* CTR. */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) vStartFirstTask;     /* LR. */\r
+       *pxTopOfStack = ( portSTACK_TYPE ) vPortStartFirstTask; /* LR. */\r
        pxTopOfStack--;\r
        *pxTopOfStack = ( portSTACK_TYPE ) pxCode; /* SRR0. */\r
        pxTopOfStack--;\r
        *pxTopOfStack = portINITIAL_MSR;/* SRR1. */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( portSTACK_TYPE ) vStartFirstTask;/* Next LR. */\r
+       *pxTopOfStack = ( portSTACK_TYPE ) vPortStartFirstTask;/* Next LR. */\r
        pxTopOfStack--;\r
        *pxTopOfStack = 0x00000000UL;;/* Backchain. */\r
 //     pxTopOfStack--;\r
@@ -178,12 +174,14 @@ extern void *pxCurrentTCB;
        XExc_Init();\r
        XExc_mDisableExceptions( XEXC_NON_CRITICAL ) ;  \r
 \r
-//     prvSetupTimerInterrupt();\r
+       prvSetupTimerInterrupt();\r
+\r
        XExc_RegisterHandler( XEXC_ID_SYSTEM_CALL, ( XExceptionHandler ) vPortYield, ( void * ) 0 );\r
-       XExc_mEnableExceptions( XEXC_NON_CRITICAL ) ;\r
 \r
-       vStartFirstTask();\r
-       \r
+//     XExc_mEnableExceptions( XEXC_NON_CRITICAL );\r
+\r
+       vPortStartFirstTask();\r
+\r
        /* Should not get here as the tasks are now running! */\r
        return pdFALSE;\r
 }\r
@@ -198,11 +196,18 @@ void vPortEndScheduler( void )
 /*\r
  * Hardware initialisation to generate the RTOS tick.   \r
  */\r
+static void prvTickISR( void );\r
 static void prvSetupTimerInterrupt( void )\r
 {\r
 const unsigned portLONG ulInterval = ( ( configCPU_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL );\r
 \r
-       XExc_RegisterHandler( XEXC_ID_PIT_INT, ( XExceptionHandler ) prvTickISR, ( void * ) 0 );\r
+       XTime_PITClearInterrupt();\r
+       XTime_FITClearInterrupt();\r
+       XTime_WDTClearInterrupt();\r
+       XTime_WDTDisableInterrupt();\r
+       XTime_FITDisableInterrupt();\r
+\r
+       XExc_RegisterHandler( XEXC_ID_PIT_INT, ( XExceptionHandler ) vPortTickISR, ( void * ) 0 );\r
 \r
        XTime_PITEnableAutoReload();\r
        XTime_PITSetInterval( ulInterval );\r
@@ -221,9 +226,6 @@ static unsigned portLONG ulTicks = 0;
                ulTicks = 0;\r
        }\r
        XTime_PITClearInterrupt();\r
-       \r
-       #if configUSE_PREEMPTION == 1\r
-       #endif\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r