|
50 | 50 | */
|
51 | 51 |
|
52 | 52 | /* Type definitions - these are a bit legacy and not really used now, other
|
53 |
| - * than portSTACK_TYPE and portBASE_TYPE. */ |
54 |
| -#define portCHAR char |
55 |
| -#define portFLOAT float |
56 |
| -#define portDOUBLE double |
57 |
| -#define portLONG long |
58 |
| -#define portSHORT short |
59 |
| -#define portSTACK_TYPE uint32_t |
60 |
| -#define portBASE_TYPE long |
61 |
| - |
62 |
| -typedef portSTACK_TYPE StackType_t; |
63 |
| -typedef long BaseType_t; |
64 |
| -typedef unsigned long UBaseType_t; |
65 |
| - |
66 |
| -#if ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_16_BITS ) |
67 |
| - typedef uint16_t TickType_t; |
68 |
| - #define portMAX_DELAY ( TickType_t ) 0xffff |
| 53 | +than portSTACK_TYPE and portBASE_TYPE. */ |
| 54 | +#define portCHAR char |
| 55 | +#define portFLOAT float |
| 56 | +#define portDOUBLE double |
| 57 | +#define portLONG long |
| 58 | +#define portSHORT short |
| 59 | +#define portSTACK_TYPE uint32_t |
| 60 | +#define portBASE_TYPE long |
| 61 | + |
| 62 | +typedef portSTACK_TYPE StackType_t; |
| 63 | +typedef long BaseType_t; |
| 64 | +typedef unsigned long UBaseType_t; |
| 65 | + |
| 66 | +#if( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_16_BITS ) |
| 67 | + typedef uint16_t TickType_t; |
| 68 | + #define portMAX_DELAY ( TickType_t ) 0xffff |
69 | 69 | #elif ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_32_BITS )
|
70 |
| - typedef uint32_t TickType_t; |
71 |
| - #define portMAX_DELAY ( TickType_t ) 0xffffffffUL |
| 70 | + typedef uint32_t TickType_t; |
| 71 | + #define portMAX_DELAY ( TickType_t ) 0xffffffffUL |
72 | 72 |
|
73 |
| -/* 32-bit tick type on a 32-bit architecture, so reads of the tick count do |
74 |
| - * not need to be guarded with a critical section. */ |
75 |
| - #define portTICK_TYPE_IS_ATOMIC 1 |
| 73 | + /* 32-bit tick type on a 32-bit architecture, so reads of the tick count do |
| 74 | + not need to be guarded with a critical section. */ |
| 75 | + #define portTICK_TYPE_IS_ATOMIC 1 |
76 | 76 | #else
|
77 | 77 | #error configTICK_TYPE_WIDTH_IN_BITS set to unsupported tick type width.
|
78 | 78 | #endif
|
79 | 79 | /*-----------------------------------------------------------*/
|
80 | 80 |
|
81 | 81 | /* Hardware specifics. */
|
82 |
| -#define portBYTE_ALIGNMENT 8 /* Could make four, according to manual. */ |
83 |
| -#define portSTACK_GROWTH -1 |
84 |
| -#define portTICK_PERIOD_MS ( ( TickType_t ) 1000 / configTICK_RATE_HZ ) |
85 |
| -#define portNOP() nop() |
| 82 | +#define portBYTE_ALIGNMENT 8 /* Could make four, according to manual. */ |
| 83 | +#define portSTACK_GROWTH -1 |
| 84 | +#define portTICK_PERIOD_MS ( ( TickType_t ) 1000 / configTICK_RATE_HZ ) |
| 85 | +#define portNOP() nop() |
86 | 86 |
|
87 | 87 | #pragma inline_asm vPortYield
|
88 | 88 | static void vPortYield( void )
|
89 | 89 | {
|
90 | 90 | /* Save clobbered register - may not actually be necessary if inline asm
|
91 |
| - * functions are considered to use the same rules as function calls by the |
92 |
| - * compiler. */ |
| 91 | + functions are considered to use the same rules as function calls by the |
| 92 | + compiler. */ |
93 | 93 | PUSH.L R5
|
94 | 94 | /* Set ITU SWINTR. */
|
95 |
| - MOV.L # 872E0H, R5 |
96 |
| - MOV.B # 1, [ R5 ] |
| 95 | + MOV.L #872E0H, R5 |
| 96 | + MOV.B #1, [R5] |
97 | 97 | /* Read back to ensure the value is taken before proceeding. */
|
98 |
| - MOV.L[ R5 ], R5 |
| 98 | + MOV.L [R5], R5 |
99 | 99 | /* Restore clobbered register to its previous value. */
|
100 | 100 | POP R5
|
101 | 101 | }
|
102 |
| -#define portYIELD() vPortYield() |
103 |
| -#define portYIELD_FROM_ISR( x ) do { if( x != pdFALSE ) { portYIELD(); } } while( 0 ) |
| 102 | +#define portYIELD() vPortYield() |
| 103 | +#define portYIELD_FROM_ISR( x ) do { if( x != pdFALSE ) { portYIELD(); } } while( 0 ) |
104 | 104 |
|
105 | 105 | /* These macros should not be called directly, but through the
|
106 |
| - * taskENTER_CRITICAL() and taskEXIT_CRITICAL() macros. An extra check is |
107 |
| - * performed if configASSERT() is defined to ensure an assertion handler does not |
108 |
| - * inadvertently attempt to lower the IPL when the call to assert was triggered |
109 |
| - * because the IPL value was found to be above configMAX_SYSCALL_INTERRUPT_PRIORITY |
110 |
| - * when an ISR safe FreeRTOS API function was executed. ISR safe FreeRTOS API |
111 |
| - * functions are those that end in FromISR. FreeRTOS maintains a separate |
112 |
| - * interrupt API to ensure API function and interrupt entry is as fast and as |
113 |
| - * simple as possible. */ |
114 |
| -#define portENABLE_INTERRUPTS() set_ipl( ( long ) 0 ) |
| 106 | +taskENTER_CRITICAL() and taskEXIT_CRITICAL() macros. An extra check is |
| 107 | +performed if configASSERT() is defined to ensure an assertion handler does not |
| 108 | +inadvertently attempt to lower the IPL when the call to assert was triggered |
| 109 | +because the IPL value was found to be above configMAX_SYSCALL_INTERRUPT_PRIORITY |
| 110 | +when an ISR safe FreeRTOS API function was executed. ISR safe FreeRTOS API |
| 111 | +functions are those that end in FromISR. FreeRTOS maintains a separate |
| 112 | +interrupt API to ensure API function and interrupt entry is as fast and as |
| 113 | +simple as possible. */ |
| 114 | +#define portENABLE_INTERRUPTS() set_ipl( ( long ) 0 ) |
115 | 115 | #ifdef configASSERT
|
116 |
| - #define portASSERT_IF_INTERRUPT_PRIORITY_INVALID() configASSERT( ( get_ipl() <= configMAX_SYSCALL_INTERRUPT_PRIORITY ) ) |
117 |
| - #define portDISABLE_INTERRUPTS() if( get_ipl() < configMAX_SYSCALL_INTERRUPT_PRIORITY ) set_ipl( ( long ) configMAX_SYSCALL_INTERRUPT_PRIORITY ) |
| 116 | + #define portASSERT_IF_INTERRUPT_PRIORITY_INVALID() configASSERT( ( get_ipl() <= configMAX_SYSCALL_INTERRUPT_PRIORITY ) ) |
| 117 | + #define portDISABLE_INTERRUPTS() if( get_ipl() < configMAX_SYSCALL_INTERRUPT_PRIORITY ) set_ipl( ( long ) configMAX_SYSCALL_INTERRUPT_PRIORITY ) |
118 | 118 | #else
|
119 |
| - #define portDISABLE_INTERRUPTS() set_ipl( ( long ) configMAX_SYSCALL_INTERRUPT_PRIORITY ) |
| 119 | + #define portDISABLE_INTERRUPTS() set_ipl( ( long ) configMAX_SYSCALL_INTERRUPT_PRIORITY ) |
120 | 120 | #endif
|
121 | 121 |
|
122 | 122 | /* Critical nesting counts are stored in the TCB. */
|
123 |
| -#define portCRITICAL_NESTING_IN_TCB ( 1 ) |
| 123 | +#define portCRITICAL_NESTING_IN_TCB ( 1 ) |
124 | 124 |
|
125 | 125 | /* The critical nesting functions defined within tasks.c. */
|
126 | 126 | extern void vTaskEnterCritical( void );
|
127 | 127 | extern void vTaskExitCritical( void );
|
128 |
| -#define portENTER_CRITICAL() vTaskEnterCritical() |
129 |
| -#define portEXIT_CRITICAL() vTaskExitCritical() |
| 128 | +#define portENTER_CRITICAL() vTaskEnterCritical() |
| 129 | +#define portEXIT_CRITICAL() vTaskExitCritical() |
130 | 130 |
|
131 | 131 | /* As this port allows interrupt nesting... */
|
132 |
| -#define portSET_INTERRUPT_MASK_FROM_ISR() ( UBaseType_t ) get_ipl(); set_ipl( ( signed long ) configMAX_SYSCALL_INTERRUPT_PRIORITY ) |
133 |
| -#define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ) set_ipl( ( signed long ) uxSavedInterruptStatus ) |
| 132 | +#define portSET_INTERRUPT_MASK_FROM_ISR() ( UBaseType_t ) get_ipl(); set_ipl( ( signed long ) configMAX_SYSCALL_INTERRUPT_PRIORITY ) |
| 133 | +#define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ) set_ipl( ( signed long ) uxSavedInterruptStatus ) |
134 | 134 |
|
135 | 135 | /*-----------------------------------------------------------*/
|
136 | 136 |
|
137 | 137 | /* Tickless idle/low power functionality. */
|
138 | 138 | #if configUSE_TICKLESS_IDLE == 1
|
139 | 139 | #ifndef portSUPPRESS_TICKS_AND_SLEEP
|
140 | 140 | extern void vPortSuppressTicksAndSleep( TickType_t xExpectedIdleTime );
|
141 |
| - #define portSUPPRESS_TICKS_AND_SLEEP( xExpectedIdleTime ) vPortSuppressTicksAndSleep( xExpectedIdleTime ) |
| 141 | + #define portSUPPRESS_TICKS_AND_SLEEP( xExpectedIdleTime ) vPortSuppressTicksAndSleep( xExpectedIdleTime ) |
142 | 142 | #endif
|
143 | 143 | #endif
|
144 | 144 |
|
145 | 145 | /*-----------------------------------------------------------*/
|
146 | 146 |
|
147 | 147 | /* Task function macros as described on the FreeRTOS.org WEB site. */
|
148 |
| -#define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void * pvParameters ) |
149 |
| -#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void * pvParameters ) |
| 148 | +#define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters ) |
| 149 | +#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters ) |
150 | 150 |
|
151 | 151 | /* *INDENT-OFF* */
|
152 | 152 | #ifdef __cplusplus
|
|
0 commit comments