]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Source/portable/GCC/RISC-V-RV32/port.c
Rename directories in the RISC-V port.
[freertos] / FreeRTOS / Source / portable / GCC / RISC-V-RV32 / port.c
index 95ec89e349922171ec8c6d4a8e15d476c1f8c9ac..3f9a981477c9945697e053afa1e815a02afe5885 100644 (file)
@@ -206,27 +206,31 @@ const uint32_t ulMPIE_Bit = 0x80, ulMPP_Bits = 0x1800;
 }\r
 /*-----------------------------------------------------------*/\r
 \r
-void vPortSetupTimerInterrupt( void )\r
-{\r
-uint32_t ulCurrentTimeHigh, ulCurrentTimeLow;\r
-volatile uint32_t * const pulTimeHigh = ( volatile uint32_t * const ) ( configCLINT_BASE_ADDRESS + 0xBFFC );\r
-volatile uint32_t * const pulTimeLow = ( volatile uint32_t * const ) ( configCLINT_BASE_ADDRESS + 0xBFF8 );\r
+#if( configCLINT_BASE_ADDRESS != 0 )\r
 \r
-       do\r
+       void vPortSetupTimerInterrupt( void )\r
        {\r
-               ulCurrentTimeHigh = *pulTimeHigh;\r
-               ulCurrentTimeLow = *pulTimeLow;\r
-       } while( ulCurrentTimeHigh != *pulTimeHigh );\r
-\r
-       ullNextTime = ( uint64_t ) ulCurrentTimeHigh;\r
-       ullNextTime <<= 32ULL;\r
-       ullNextTime |= ( uint64_t ) ulCurrentTimeLow;\r
-       ullNextTime += ( uint64_t ) ulTimerIncrementsForOneTick;\r
-       *pullMachineTimerCompareRegister = ullNextTime;\r
-\r
-       /* Prepare the time to use after the next tick interrupt. */\r
-       ullNextTime += ( uint64_t ) ulTimerIncrementsForOneTick;\r
-}\r
+       uint32_t ulCurrentTimeHigh, ulCurrentTimeLow;\r
+       volatile uint32_t * const pulTimeHigh = ( volatile uint32_t * const ) ( configCLINT_BASE_ADDRESS + 0xBFFC );\r
+       volatile uint32_t * const pulTimeLow = ( volatile uint32_t * const ) ( configCLINT_BASE_ADDRESS + 0xBFF8 );\r
+\r
+               do\r
+               {\r
+                       ulCurrentTimeHigh = *pulTimeHigh;\r
+                       ulCurrentTimeLow = *pulTimeLow;\r
+               } while( ulCurrentTimeHigh != *pulTimeHigh );\r
+\r
+               ullNextTime = ( uint64_t ) ulCurrentTimeHigh;\r
+               ullNextTime <<= 32ULL;\r
+               ullNextTime |= ( uint64_t ) ulCurrentTimeLow;\r
+               ullNextTime += ( uint64_t ) ulTimerIncrementsForOneTick;\r
+               *pullMachineTimerCompareRegister = ullNextTime;\r
+\r
+               /* Prepare the time to use after the next tick interrupt. */\r
+               ullNextTime += ( uint64_t ) ulTimerIncrementsForOneTick;\r
+       }\r
+\r
+#endif /* ( configCLINT_BASE_ADDRESS != 0 ) */\r
 /*-----------------------------------------------------------*/\r
 \r
 BaseType_t xPortStartScheduler( void )\r
@@ -247,14 +251,26 @@ extern void xPortStartFirstTask( void );
                started. */\r
                configASSERT( ( xISRStackTop & portBYTE_ALIGNMENT_MASK ) == 0 );\r
        }\r
-       #endif\r
+       #endif /* configASSERT_DEFINED */\r
 \r
+       /* If there is a CLINT then it is ok to use the default implementation\r
+       in this file, otherwise vPortSetupTimerInterrupt() must be implemented to\r
+       configure whichever clock is to be used to generate the tick interrupt. */\r
        vPortSetupTimerInterrupt();\r
 \r
-       /* Enable mtime and external interrupts.  1<<7 for timer interrupt, 1<<11\r
-       for external interrupt.  _RB_ What happens here when mtime is not present as\r
-       with pulpino? */\r
-       __asm volatile( "csrs mie, %0" :: "r"(0x880) );\r
+       #if( configCLINT_BASE_ADDRESS != 0 )\r
+       {\r
+               /* Enable mtime and external interrupts.  1<<7 for timer interrupt, 1<<11\r
+               for external interrupt.  _RB_ What happens here when mtime is not present as\r
+               with pulpino? */\r
+               __asm volatile( "csrs mie, %0" :: "r"(0x880) );\r
+       }\r
+       #else\r
+       {\r
+               /* Enable external interrupts. */\r
+               __asm volatile( "csrs mie, %0" :: "r"(0x800) );\r
+       }\r
+       #endif /* configCLINT_BASE_ADDRESS */\r
 \r
        xPortStartFirstTask();\r
 \r