/*
FreeRTOS . org V5 .0 .3 - Copyright ( C ) 2003 - 2008 Richard Barry .
This file is part of the FreeRTOS . org distribution .
FreeRTOS . org is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
FreeRTOS . org is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with FreeRTOS . org ; if not , write to the Free Software
Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS . org , without being obliged to provide
the source code for any proprietary components . See the licensing section
of http : //www.FreeRTOS.org for full details of how and when the exception
can be applied .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
* SAVE TIME AND MONEY ! We can port FreeRTOS . org to your own hardware , *
* and even write all or part of your application on your behalf . *
* See http : //www.OpenRTOS.com for details of the services we provide to *
* expedite your project . *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Please ensure to read the configuration and relevant port sections of the
online documentation .
http : //www.FreeRTOS.org - Documentation, latest information, license and
contact details .
http : //www.SafeRTOS.com - A version that is certified for use in safety
critical systems .
http : //www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services .
*/
# ifndef PORTMACRO_H
# define PORTMACRO_H
# ifdef __cplusplus
extern " C " {
# endif
/*-----------------------------------------------------------
* Port specific definitions .
*
* The settings in this file configure FreeRTOS correctly for the
* given hardware and compiler .
*
* These settings should not be altered .
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
/* Type definitions. */
# define portCHAR char
# define portFLOAT float
# define portDOUBLE double
# define portLONG long
# define portSHORT short
# define portSTACK_TYPE unsigned long
# define portBASE_TYPE long
# if( configUSE_16_BIT_TICKS == 1 )
typedef unsigned portSHORT portTickType ;
# define portMAX_DELAY ( portTickType ) 0xffff
# else
typedef unsigned portLONG portTickType ;
# define portMAX_DELAY ( portTickType ) 0xffffffff
# endif
/*-----------------------------------------------------------*/
/* Hardware specifics. */
# define portBYTE_ALIGNMENT 4
# define portSTACK_GROWTH -1
# define portTICK_RATE_MS ( ( portTickType ) 1000 / configTICK_RATE_HZ )
/*-----------------------------------------------------------*/
unsigned portLONG ulPortSetIPL ( unsigned portLONG ) ;
# define portDISABLE_INTERRUPTS() ulPortSetIPL( configMAX_SYSCALL_INTERRUPT_PRIORITY )
# define portENABLE_INTERRUPTS() ulPortSetIPL( 0 )
extern void vPortEnterCritical ( void ) ;
extern void vPortExitCritical ( void ) ;
# define portENTER_CRITICAL() vPortEnterCritical()
# define portEXIT_CRITICAL() vPortExitCritical()
extern unsigned portBASE_TYPE uxPortSetInterruptMaskFromISR ( void ) ;
extern void vPortClearInterruptMaskFromISR ( unsigned portBASE_TYPE ) ;
# define portSET_INTERRUPT_MASK_FROM_ISR() ulPortSetIPL( configMAX_SYSCALL_INTERRUPT_PRIORITY )
# define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedStatusRegister ) ulPortSetIPL( uxSavedStatusRegister )
/*-----------------------------------------------------------*/
/* Task utilities. */
# define portYIELD() MCF_INTC0_INTFRCH |= ( 1UL << ( configYIELD_INTERRUPT_VECTOR - 32UL ) ); portNOP(); portNOP(); portNOP() /* -32 as we are using the high word of the 64bit mask. */
# define portNOP() asm volatile ( "nop" )
/*-----------------------------------------------------------*/
/* Task function macros as described on the FreeRTOS.org WEB site. */
# define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters ) __attribute__((noreturn))
# define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters )
/*-----------------------------------------------------------*/
# define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired != pdFALSE ) \
{ \
portYIELD ( ) ; \
}
# ifdef __cplusplus
}
# endif
# endif /* PORTMACRO_H */