]> git.sur5r.net Git - freertos/commitdiff
Continue work on RX600 port - work in progress.
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Wed, 18 Aug 2010 13:29:12 +0000 (13:29 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Wed, 18 Aug 2010 13:29:12 +0000 (13:29 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1047 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

Source/portable/Renesas/RX600/port.c
Source/portable/Renesas/RX600/portmacro.h

index 8e3cc871d4f5507205eee9534aae78e774b54e6c..2998d30cdf0e71ed5bc327bec271647bf9a00607 100644 (file)
@@ -62,6 +62,9 @@
 /* Library includes. */\r
 #include "string.h"\r
 \r
+/* Hardware specifics. */\r
+#include "iodefine.h"\r
+\r
 /*-----------------------------------------------------------*/\r
 \r
 /* Tasks should start with interrupts enabled, therefore PSW is set with U,I,PM \r
@@ -72,8 +75,8 @@ flags set and IPL clear. */
  PM = 0 Supervisor mode.\r
  IPL = 0 All interrupt priorities enabled.\r
 */\r
-#define portINITIAL_PSW      ( ( portSTACK_TYPE ) 0x00030000 )\r
-#define portINITIAL_FPSW     ( ( portSTACK_TYPE ) 0x00000100 )\r
+#define portINITIAL_PSW     ( ( portSTACK_TYPE ) 0x00030000 )\r
+#define portINITIAL_FPSW    ( ( portSTACK_TYPE ) 0x00000100 )\r
 \r
 \r
 /*-----------------------------------------------------------*/\r
@@ -163,6 +166,15 @@ extern void vApplicationSetupTimerInterrupt( void );
                use.  A demo application is provided to show a suitable example. */\r
                vApplicationSetupTimerInterrupt();\r
 \r
+               /* Enable the software interrupt. */            \r
+               _IEN( _ICU_SWINT ) = 1;\r
+               \r
+               /* Ensure the software interrupt is clear. */\r
+               _IR( _ICU_SWINT ) = 0;\r
+               \r
+               /* Ensure the software interrupt is set to the kernel priority. */\r
+               _IPR( _ICU_SWINT ) = configKERNEL_INTERRUPT_PRIORITY;\r
+       \r
                /* Start the first task. */\r
                prvStartFirstTask();\r
        }\r
@@ -178,26 +190,30 @@ void vPortEndScheduler( void )
 }\r
 /*-----------------------------------------------------------*/\r
 \r
-void vPortYield( void )\r
-{\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-#pragma interrupt (vTickISR(vect=configTICK_VECTOR,enable))\r
+#pragma interrupt ( vTickISR( vect = _VECT( configTICK_VECTOR ), enable ) )\r
 void vTickISR( void )\r
 {\r
-       /* Restore previous IPL on exit. */\r
-       //set_ipl( configMAX_SYSCALL_INTERRUPT_PRIORITY );\r
+static volatile unsigned long ul = 0;\r
+\r
+       ul++;\r
        \r
        /* Clear the interrupt. */\r
-       vTaskIncrementTick();\r
+//     vTaskIncrementTick();\r
        \r
        #if( configUSE_PREEMPTION == 1 )\r
-               taskYIELD();\r
+//             taskYIELD();\r
        #endif\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
+#pragma interrupt ( vSoftwareInterruptISR( vect = _VECT( _ICU_SWINT ), enable ) )\r
+void vSoftwareInterruptISR( void )\r
+{\r
+static volatile unsigned long ul = 0;\r
+\r
+       ul++;\r
+}\r
+\r
 #pragma inline_asm prvStartFirstTask\r
 static void prvStartFirstTask( void )\r
 {\r
@@ -225,3 +241,5 @@ static void prvStartFirstTask( void )
     NOP\r
     NOP\r
 }\r
+\r
+\r
index 612219ac25b69f60501e6bd1ee7c78e89c2362d4..8bc1667e3f6f2b3b5ddb4d047e6a3b02c6df4600 100644 (file)
@@ -99,8 +99,10 @@ portSTACK_TYPE and portBASE_TYPE. */
 #define portSTART_SCHEDULER_TRAP_NO            ( 32 )\r
 #define portKERNEL_INTERRUPT_PRIORITY  ( 1 )\r
 \r
-void vPortYield( void );\r
-#define portYIELD()                                            vPortYield()\r
+/* The location of the software interrupt register.  Software interrupts use\r
+vector 27. */\r
+#define portITU_SWINTR                 ( ( unsigned char * ) 0x000872E0 )\r
+#define portYIELD()                            *portITU_SWINTR = 0x01; nop(); nop(); nop(); nop(); nop()\r
 \r
 extern void vTaskSwitchContext( void );\r
 #define portYIELD_FROM_ISR( x )                        if( x != pdFALSE ) vTaskSwitchContext()\r
@@ -110,7 +112,7 @@ extern void vTaskSwitchContext( void );
  * and taskEXIT_CRITICAL() macros.\r
  */\r
 #define portENABLE_INTERRUPTS()        set_ipl( 0 )\r
-#define portDISABLE_INTERRUPTS()       set_ipl( configKERNEL_INTERRUPT_PRIORITY )\r
+#define portDISABLE_INTERRUPTS()       set_ipl( configMAX_SYSCALL_INTERRUPT_PRIORITY )\r
 \r
 #define portSET_INTERRUPT_MASK_FROM_ISR() get_ipl(); set_ipl( configMAX_SYSCALL_INTERRUPT_PRIORITY )\r
 #define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ) set_ipl( uxSavedInterruptStatus )\r
@@ -124,6 +126,7 @@ extern void vTaskExitCritical( void );
 #define portENTER_CRITICAL()   vTaskEnterCritical();\r
 #define portEXIT_CRITICAL()            vTaskExitCritical();\r
 \r
+\r
 /*-----------------------------------------------------------*/\r
 \r
 /* Task function macros as described on the FreeRTOS.org WEB site. */\r