2727 */
2828
2929#ifndef PORTMACRO_H
30- #define PORTMACRO_H
30+ #define PORTMACRO_H
3131
3232/* *INDENT-OFF* */
3333#ifdef __cplusplus
4848/* The compiler needs to be told functions that are only referenced by pointer
4949 * are to be included in the build. NOTE: Omitting these lines will result in a
5050 * run-time crash, not a linker error! */
51- #pragma funcall vTaskStartScheduler prvIdleTask
52- #pragma funcall xTimerCreateTimerTask prvTimerTask
51+ #pragma funcall vTaskStartScheduler prvIdleTask
52+ #pragma funcall xTimerCreateTimerTask prvTimerTask
5353
5454/* Type definitions. */
55- #define portCHAR char
56- #define portFLOAT float
57- #define portDOUBLE double
58- #define portLONG long
59- #define portSHORT short
60- #define portSTACK_TYPE uint32_t
61- #define portBASE_TYPE long
62-
63- typedef portSTACK_TYPE StackType_t ;
64- typedef long BaseType_t ;
65- typedef unsigned long UBaseType_t ;
66-
67- #if ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_16_BITS )
68- typedef uint16_t TickType_t ;
69- #define portMAX_DELAY ( TickType_t ) 0xffff
70- #elif ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_32_BITS )
71- typedef uint32_t TickType_t ;
72- #define portMAX_DELAY ( TickType_t ) 0xffffffffUL
55+ #define portCHAR char
56+ #define portFLOAT float
57+ #define portDOUBLE double
58+ #define portLONG long
59+ #define portSHORT short
60+ #define portSTACK_TYPE uint32_t
61+ #define portBASE_TYPE long
62+
63+ typedef portSTACK_TYPE StackType_t ;
64+ typedef long BaseType_t ;
65+ typedef unsigned long UBaseType_t ;
66+
67+ #if ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_16_BITS )
68+ typedef uint16_t TickType_t ;
69+ #define portMAX_DELAY ( TickType_t ) 0xffff
70+ #elif ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_32_BITS )
71+ typedef uint32_t TickType_t ;
72+ #define portMAX_DELAY ( TickType_t ) 0xffffffffUL
7373
7474/* 32-bit tick type on a 32-bit architecture, so reads of the tick count do
7575 * not need to be guarded with a critical section. */
76- #define portTICK_TYPE_IS_ATOMIC 1
77- #else
78- #error configTICK_TYPE_WIDTH_IN_BITS set to unsupported tick type width.
79- #endif
76+ #define portTICK_TYPE_IS_ATOMIC 1
77+ #else
78+ #error configTICK_TYPE_WIDTH_IN_BITS set to unsupported tick type width.
79+ #endif
8080/*-----------------------------------------------------------*/
8181
8282/* Architecture specifics. */
83- #define portSTACK_GROWTH ( -1 )
84- #define portTICK_PERIOD_MS ( ( TickType_t ) 1000 / configTICK_RATE_HZ )
85- #define portBYTE_ALIGNMENT 8
83+ #define portSTACK_GROWTH ( -1 )
84+ #define portTICK_PERIOD_MS ( ( TickType_t ) 1000 / configTICK_RATE_HZ )
85+ #define portBYTE_ALIGNMENT 8
8686/*-----------------------------------------------------------*/
8787
8888/* Scheduler utilities. */
89- #define portYIELD () \
89+ #define portYIELD () \
9090 { \
9191 /* Set a PendSV to request a context switch. */ \
9292 portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT ; \
9393 \
9494 /* Barriers are normally not required but do ensure the code is completely \
9595 * within the specified behaviour for the architecture. */ \
96- __asm { dsb }; \
97- __asm { isb }; \
96+ __asm{ dsb }; \
97+ __asm{ isb }; \
9898 }
9999
100100#define portNVIC_INT_CTRL_REG ( *( ( volatile uint32_t * ) 0xe000ed04 ) )
@@ -116,91 +116,87 @@ typedef unsigned long UBaseType_t;
116116/*-----------------------------------------------------------*/
117117
118118/* Critical section management. */
119- extern void vPortEnterCritical ( void );
120- extern void vPortExitCritical ( void );
121- #define portDISABLE_INTERRUPTS () CPU_REG_SET( CPU_BASEPRI, configMAX_SYSCALL_INTERRUPT_PRIORITY ); __asm { dsb }; __asm { isb }
122- #define portENABLE_INTERRUPTS () CPU_REG_SET( CPU_BASEPRI, 0 );
123- #define portENTER_CRITICAL () vPortEnterCritical()
124- #define portEXIT_CRITICAL () vPortExitCritical()
125- #define portSET_INTERRUPT_MASK_FROM_ISR () ulPortRaiseBASEPRI()
126- #define portCLEAR_INTERRUPT_MASK_FROM_ISR ( x ) CPU_REG_SET( CPU_BASEPRI, x ); /* Barrier instructions not used as this is only used to lower the basepri. */
119+ extern void vPortEnterCritical ( void );
120+ extern void vPortExitCritical ( void );
121+ #define portDISABLE_INTERRUPTS () CPU_REG_SET( CPU_BASEPRI, configMAX_SYSCALL_INTERRUPT_PRIORITY ); __asm{ dsb }; __asm{ isb }
122+ #define portENABLE_INTERRUPTS () CPU_REG_SET( CPU_BASEPRI, 0 );
123+ #define portENTER_CRITICAL () vPortEnterCritical()
124+ #define portEXIT_CRITICAL () vPortExitCritical()
125+ #define portSET_INTERRUPT_MASK_FROM_ISR () ulPortRaiseBASEPRI()
126+ #define portCLEAR_INTERRUPT_MASK_FROM_ISR ( x ) CPU_REG_SET( CPU_BASEPRI, x ); /* Barrier instructions not used as this is only used to lower the basepri. */
127127
128128/*-----------------------------------------------------------*/
129129
130130/* Task function macros as described on the FreeRTOS.org WEB site. These are
131131 * not necessary for to use this port. They are defined so the common demo files
132132 * (which build with all the ports) will build. */
133- #define portTASK_FUNCTION_PROTO ( vFunction , pvParameters ) void vFunction( void * pvParameters )
134- #define portTASK_FUNCTION ( vFunction , pvParameters ) void vFunction( void * pvParameters )
133+ #define portTASK_FUNCTION_PROTO ( vFunction , pvParameters ) void vFunction( void * pvParameters )
134+ #define portTASK_FUNCTION ( vFunction , pvParameters ) void vFunction( void * pvParameters )
135135/*-----------------------------------------------------------*/
136136
137137/* Tickless idle/low power functionality. */
138- #ifndef portSUPPRESS_TICKS_AND_SLEEP
139- extern void vPortSuppressTicksAndSleep ( TickType_t xExpectedIdleTime );
140- #define portSUPPRESS_TICKS_AND_SLEEP ( xExpectedIdleTime ) vPortSuppressTicksAndSleep( xExpectedIdleTime )
141- #endif
138+ #ifndef portSUPPRESS_TICKS_AND_SLEEP
139+ extern void vPortSuppressTicksAndSleep ( TickType_t xExpectedIdleTime );
140+ #define portSUPPRESS_TICKS_AND_SLEEP ( xExpectedIdleTime ) vPortSuppressTicksAndSleep( xExpectedIdleTime )
141+ #endif
142142/*-----------------------------------------------------------*/
143143
144144/* Architecture specific optimisations. */
145- #ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION
146- #define configUSE_PORT_OPTIMISED_TASK_SELECTION 1
147- #endif
145+ #ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION
146+ #define configUSE_PORT_OPTIMISED_TASK_SELECTION 1
147+ #endif
148148
149- #if configUSE_PORT_OPTIMISED_TASK_SELECTION == 1
149+ #if configUSE_PORT_OPTIMISED_TASK_SELECTION == 1
150150
151151/* Generic helper function. */
152- __attribute__( ( always_inline ) ) static inline uint8_t ucPortCountLeadingZeros ( uint32_t ulBitmap )
153- {
154- uint8_t ucReturn ;
152+ __attribute__( ( always_inline ) ) static inline uint8_t ucPortCountLeadingZeros ( uint32_t ulBitmap )
153+ {
154+ uint8_t ucReturn ;
155155
156- __asm volatile ( "clz %0, %1" : "=r" ( ucReturn ) : "r" ( ulBitmap ) );
156+ __asm volatile ( "clz %0, %1" : "=r" ( ucReturn ) : "r" ( ulBitmap ) );
157157
158- return ucReturn ;
159- }
158+ return ucReturn ;
159+ }
160160
161161/* Check the configuration. */
162- #if ( configMAX_PRIORITIES > 32 )
163- #error configUSE_PORT_OPTIMISED_TASK_SELECTION can only be set to 1 when configMAX_PRIORITIES is less than or equal to 32. It is very rare that a system requires more than 10 to 15 difference priorities as tasks that share a priority will time slice.
164- #endif
162+ #if ( configMAX_PRIORITIES > 32 )
163+ #error configUSE_PORT_OPTIMISED_TASK_SELECTION can only be set to 1 when configMAX_PRIORITIES is less than or equal to 32. It is very rare that a system requires more than 10 to 15 difference priorities as tasks that share a priority will time slice.
164+ #endif
165165
166166/* Store/clear the ready priorities in a bit map. */
167- #define portRECORD_READY_PRIORITY ( uxPriority , uxReadyPriorities ) ( uxReadyPriorities ) |= ( 1UL << ( uxPriority ) )
168- #define portRESET_READY_PRIORITY ( uxPriority , uxReadyPriorities ) ( uxReadyPriorities ) &= ~( 1UL << ( uxPriority ) )
167+ #define portRECORD_READY_PRIORITY ( uxPriority , uxReadyPriorities ) ( uxReadyPriorities ) |= ( 1UL << ( uxPriority ) )
168+ #define portRESET_READY_PRIORITY ( uxPriority , uxReadyPriorities ) ( uxReadyPriorities ) &= ~( 1UL << ( uxPriority ) )
169169
170170/*-----------------------------------------------------------*/
171171
172- #define portGET_HIGHEST_PRIORITY ( uxTopPriority , uxReadyPriorities ) uxTopPriority = ( 31UL - ( uint32_t ) ucPortCountLeadingZeros( ( uxReadyPriorities ) ) )
172+ #define portGET_HIGHEST_PRIORITY ( uxTopPriority , uxReadyPriorities ) uxTopPriority = ( 31UL - ( uint32_t ) ucPortCountLeadingZeros( ( uxReadyPriorities ) ) )
173173
174- #endif /* configUSE_PORT_OPTIMISED_TASK_SELECTION */
174+ #endif /* configUSE_PORT_OPTIMISED_TASK_SELECTION */
175175
176176/*-----------------------------------------------------------*/
177177
178- #ifdef configASSERT
179- void vPortValidateInterruptPriority ( void );
180- #define portASSERT_IF_INTERRUPT_PRIORITY_INVALID () vPortValidateInterruptPriority()
181- #endif
178+ #ifdef configASSERT
179+ void vPortValidateInterruptPriority ( void );
180+ #define portASSERT_IF_INTERRUPT_PRIORITY_INVALID () vPortValidateInterruptPriority()
181+ #endif
182182
183183/* portNOP() is not required by this port. */
184- #define portNOP ()
184+ #define portNOP ()
185185
186- BaseType_t xPortIsInsideInterrupt ( void );
186+ BaseType_t xPortIsInsideInterrupt ( void );
187187
188188/*-----------------------------------------------------------*/
189189
190- static inline uint32_t ulPortRaiseBASEPRI ( void )
191- {
192- uint32_t ulOriginalBASEPRI ;
193-
194- ulOriginalBASEPRI = CPU_REG_GET ( CPU_BASEPRI );
195- CPU_REG_SET ( CPU_BASEPRI , configMAX_SYSCALL_INTERRUPT_PRIORITY );
196- __asm {
197- dsb
198- };
199- __asm {
200- isb
201- };
202- return ulOriginalBASEPRI ;
203- }
190+ static inline uint32_t ulPortRaiseBASEPRI ( void )
191+ {
192+ uint32_t ulOriginalBASEPRI ;
193+
194+ ulOriginalBASEPRI = CPU_REG_GET ( CPU_BASEPRI );
195+ CPU_REG_SET ( CPU_BASEPRI , configMAX_SYSCALL_INTERRUPT_PRIORITY );
196+ __asm{ dsb };
197+ __asm{ isb };
198+ return ulOriginalBASEPRI ;
199+ }
204200/*-----------------------------------------------------------*/
205201
206202/* *INDENT-OFF* */
0 commit comments