This repository has been archived on 2023-11-05. You can view files and clone it, but cannot push or open issues or pull requests.
FreeRTOS-Kernel/Source/portable/GCC/ColdFire_V2/portmacro.h

137 lines
5.9 KiB
C
Raw Normal View History

2008-08-08 02:51:34 +08:00
/*
2010-02-25 21:41:09 +08:00
FreeRTOS V6.0.3 - Copyright (C) 2010 Real Time Engineers Ltd.
2008-08-08 02:51:34 +08:00
2009-10-13 18:54:32 +08:00
***************************************************************************
* *
* If you are: *
* *
* + New to FreeRTOS, *
* + Wanting to learn FreeRTOS or multitasking in general quickly *
* + Looking for basic training, *
* + Wanting to improve your FreeRTOS skills and productivity *
* *
* then take a look at the FreeRTOS eBook *
* *
* "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
* http://www.FreeRTOS.org/Documentation *
* *
* A pdf reference manual is also available. Both are usually delivered *
* to your inbox within 20 minutes to two hours when purchased between 8am *
* and 8pm GMT (although please allow up to 24 hours in case of *
* exceptional circumstances). Thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
2008-08-08 02:51:34 +08:00
2009-10-13 18:54:32 +08:00
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
2009-10-13 18:54:32 +08:00
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
***NOTE*** The exception to the GPL is included to allow you to distribute
a combined work that includes FreeRTOS without being obliged to provide the
source code for proprietary components outside of the FreeRTOS kernel.
2009-10-13 18:54:32 +08:00
FreeRTOS 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
2009-10-13 18:54:32 +08:00
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
2009-03-15 03:20:12 +08:00
1 tab == 4 spaces!
2008-08-08 02:51:34 +08:00
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
2008-08-08 02:51:34 +08:00
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
2008-08-08 02:51:34 +08:00
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
2008-08-08 02:51:34 +08:00
*/
#ifndef PORTMACRO_H
#define PORTMACRO_H
#ifdef __cplusplus
extern "C" {
#endif
/*-----------------------------------------------------------
2008-08-08 17:41:33 +08:00
* Port specific definitions.
2008-08-08 02:51:34 +08:00
*
* 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
2008-08-08 17:41:33 +08:00
#define portTICK_RATE_MS ( ( portTickType ) 1000 / configTICK_RATE_HZ )
2008-08-08 02:51:34 +08:00
/*-----------------------------------------------------------*/
2008-08-08 17:41:33 +08:00
unsigned portLONG ulPortSetIPL( unsigned portLONG );
#define portDISABLE_INTERRUPTS() ulPortSetIPL( configMAX_SYSCALL_INTERRUPT_PRIORITY )
2008-08-08 17:41:33 +08:00
#define portENABLE_INTERRUPTS() ulPortSetIPL( 0 )
2008-08-08 02:51:34 +08:00
2008-08-08 17:41:33 +08:00
extern void vPortEnterCritical( void );
extern void vPortExitCritical( void );
2008-08-08 02:51:34 +08:00
#define portENTER_CRITICAL() vPortEnterCritical()
#define portEXIT_CRITICAL() vPortExitCritical()
2008-08-08 03:10:25 +08:00
extern unsigned portBASE_TYPE uxPortSetInterruptMaskFromISR( void );
2008-08-08 02:51:34 +08:00
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 )
2008-08-08 02:51:34 +08:00
/*-----------------------------------------------------------*/
/* Task utilities. */
#define portNOP() asm volatile ( "nop" )
2008-08-14 19:07:50 +08:00
/* Note this will overwrite all other bits in the force register, it is done this way for speed. */
2008-09-23 02:08:29 +08:00
#define portYIELD() MCF_INTC0_INTFRCL = ( 1UL << configYIELD_INTERRUPT_VECTOR ); portNOP(); portNOP()
2008-08-14 19:07:50 +08:00
2008-08-08 02:51:34 +08:00
/*-----------------------------------------------------------*/
/* 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(); \
2008-08-08 02:51:34 +08:00
}
#ifdef __cplusplus
}
#endif
#endif /* PORTMACRO_H */