mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-20 05:21:59 -04:00
Reverse order of projdefs.h and FreeRTOSConfig.h includes in FreeRTOS.h to allow addition of pdMS_TO_TICKS() macro.
Update RXv2 GCC port to match RXv2 Renesas port.
This commit is contained in:
parent
5cd0b1e5ef
commit
1130a53ec8
|
@ -90,12 +90,12 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Basic FreeRTOS definitions. */
|
|
||||||
#include "projdefs.h"
|
|
||||||
|
|
||||||
/* Application specific configuration options. */
|
/* Application specific configuration options. */
|
||||||
#include "FreeRTOSConfig.h"
|
#include "FreeRTOSConfig.h"
|
||||||
|
|
||||||
|
/* Basic FreeRTOS definitions. */
|
||||||
|
#include "projdefs.h"
|
||||||
|
|
||||||
/* configUSE_PORT_OPTIMISED_TASK_SELECTION must be defined before portable.h
|
/* configUSE_PORT_OPTIMISED_TASK_SELECTION must be defined before portable.h
|
||||||
is included as it is used by the port layer. */
|
is included as it is used by the port layer. */
|
||||||
#ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION
|
#ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION
|
||||||
|
|
|
@ -72,6 +72,9 @@
|
||||||
*/
|
*/
|
||||||
typedef void (*TaskFunction_t)( void * );
|
typedef void (*TaskFunction_t)( void * );
|
||||||
|
|
||||||
|
/* Converts a time in miliseconds to a time in ticks. */
|
||||||
|
#define pdMS_TO_TICKS( xTimeInMs ) ( ( ( TickType_t ) xTimeInMs * configTICK_RATE_HZ ) / ( TickType_t ) 1000 )
|
||||||
|
|
||||||
#define pdFALSE ( ( BaseType_t ) 0 )
|
#define pdFALSE ( ( BaseType_t ) 0 )
|
||||||
#define pdTRUE ( ( BaseType_t ) 1 )
|
#define pdTRUE ( ( BaseType_t ) 1 )
|
||||||
|
|
||||||
|
|
|
@ -74,9 +74,6 @@
|
||||||
/* Library includes. */
|
/* Library includes. */
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
|
|
||||||
/* Hardware specifics. */
|
|
||||||
#include "iodefine.h"
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* Tasks should start with interrupts enabled and in Supervisor mode, therefore
|
/* Tasks should start with interrupts enabled and in Supervisor mode, therefore
|
||||||
|
@ -89,8 +86,8 @@ xTaskIncrementTick(), which is only ever called from interrupts at the kernel
|
||||||
priority - ie a known priority. Therefore these local macros are a slight
|
priority - ie a known priority. Therefore these local macros are a slight
|
||||||
optimisation compared to calling the global SET/CLEAR_INTERRUPT_MASK macros,
|
optimisation compared to calling the global SET/CLEAR_INTERRUPT_MASK macros,
|
||||||
which would require the old IPL to be read first and stored in a local variable. */
|
which would require the old IPL to be read first and stored in a local variable. */
|
||||||
#define portDISABLE_INTERRUPTS_FROM_KERNEL_ISR() __asm volatile ( "MVTIPL %0" ::"i"(configMAX_SYSCALL_INTERRUPT_PRIORITY) )
|
#define portMASK_INTERRUPTS_FROM_KERNEL_ISR() __asm volatile ( "MVTIPL %0" ::"i"(configMAX_SYSCALL_INTERRUPT_PRIORITY) )
|
||||||
#define portENABLE_INTERRUPTS_FROM_KERNEL_ISR() __asm volatile ( "MVTIPL %0" ::"i"(configKERNEL_INTERRUPT_PRIORITY) )
|
#define portUNMASK_INTERRUPTS_FROM_KERNEL_ISR() __asm volatile ( "MVTIPL %0" ::"i"(configKERNEL_INTERRUPT_PRIORITY) )
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -176,9 +173,17 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
|
||||||
pxTopOfStack--;
|
pxTopOfStack--;
|
||||||
*pxTopOfStack = portINITIAL_FPSW;
|
*pxTopOfStack = portINITIAL_FPSW;
|
||||||
pxTopOfStack--;
|
pxTopOfStack--;
|
||||||
*pxTopOfStack = 0x12345678; /* Accumulator. */
|
*pxTopOfStack = 0x11111111; /* Accumulator 0. */
|
||||||
pxTopOfStack--;
|
pxTopOfStack--;
|
||||||
*pxTopOfStack = 0x87654321; /* Accumulator. */
|
*pxTopOfStack = 0x22222222; /* Accumulator 0. */
|
||||||
|
pxTopOfStack--;
|
||||||
|
*pxTopOfStack = 0x33333333; /* Accumulator 0. */
|
||||||
|
pxTopOfStack--;
|
||||||
|
*pxTopOfStack = 0x44444444; /* Accumulator 1. */
|
||||||
|
pxTopOfStack--;
|
||||||
|
*pxTopOfStack = 0x55555555; /* Accumulator 1. */
|
||||||
|
pxTopOfStack--;
|
||||||
|
*pxTopOfStack = 0x66666666; /* Accumulator 1. */
|
||||||
|
|
||||||
return pxTopOfStack;
|
return pxTopOfStack;
|
||||||
}
|
}
|
||||||
|
@ -242,11 +247,27 @@ static void prvStartFirstTask( void )
|
||||||
"POP R15 \n" \
|
"POP R15 \n" \
|
||||||
|
|
||||||
/* Accumulator low 32 bits. */
|
/* Accumulator low 32 bits. */
|
||||||
"MVTACLO R15 \n" \
|
"MVTACLO R15, A0 \n" \
|
||||||
"POP R15 \n" \
|
"POP R15 \n" \
|
||||||
|
|
||||||
/* Accumulator high 32 bits. */
|
/* Accumulator high 32 bits. */
|
||||||
"MVTACHI R15 \n" \
|
"MVTACHI R15, A0 \n" \
|
||||||
|
"POP R15 \n" \
|
||||||
|
|
||||||
|
/* Accumulator guard. */
|
||||||
|
"MVTACGU R15, A0 \n" \
|
||||||
|
"POP R15 \n" \
|
||||||
|
|
||||||
|
/* Accumulator low 32 bits. */
|
||||||
|
"MVTACLO R15, A1 \n" \
|
||||||
|
"POP R15 \n" \
|
||||||
|
|
||||||
|
/* Accumulator high 32 bits. */
|
||||||
|
"MVTACHI R15, A1 \n" \
|
||||||
|
"POP R15 \n" \
|
||||||
|
|
||||||
|
/* Accumulator guard. */
|
||||||
|
"MVTACGU R15, A1 \n" \
|
||||||
"POP R15 \n" \
|
"POP R15 \n" \
|
||||||
|
|
||||||
/* Floating point status word. */
|
/* Floating point status word. */
|
||||||
|
@ -300,14 +321,19 @@ void vSoftwareInterruptISR( void )
|
||||||
/* Save the FPSW and accumulator. */
|
/* Save the FPSW and accumulator. */
|
||||||
"MVFC FPSW, R15 \n" \
|
"MVFC FPSW, R15 \n" \
|
||||||
"PUSH.L R15 \n" \
|
"PUSH.L R15 \n" \
|
||||||
"MVFACHI R15 \n" \
|
"MVFACGU #0, A1, R15 \n" \
|
||||||
"PUSH.L R15 \n" \
|
"PUSH.L R15 \n" \
|
||||||
|
"MVFACHI #0, A1, R15 \n" \
|
||||||
/* Middle word. */
|
"PUSH.L R15 \n" \
|
||||||
"MVFACMI R15 \n" \
|
/* Low order word. */
|
||||||
|
"MVFACLO #0, A1, R15 \n" \
|
||||||
/* Shifted left as it is restored to the low order word. */
|
"PUSH.L R15 \n" \
|
||||||
"SHLL #16, R15 \n" \
|
"MVFACGU #0, A0, R15 \n" \
|
||||||
|
"PUSH.L R15 \n" \
|
||||||
|
"MVFACHI #0, A0, R15 \n" \
|
||||||
|
"PUSH.L R15 \n" \
|
||||||
|
/* Low order word. */
|
||||||
|
"MVFACLO #0, A0, R15 \n" \
|
||||||
"PUSH.L R15 \n" \
|
"PUSH.L R15 \n" \
|
||||||
|
|
||||||
/* Save the stack pointer to the TCB. */
|
/* Save the stack pointer to the TCB. */
|
||||||
|
@ -334,9 +360,29 @@ void vSoftwareInterruptISR( void )
|
||||||
/* Restore the context of the new task. The PSW (Program Status Word) and
|
/* Restore the context of the new task. The PSW (Program Status Word) and
|
||||||
PC will be popped by the RTE instruction. */
|
PC will be popped by the RTE instruction. */
|
||||||
"POP R15 \n" \
|
"POP R15 \n" \
|
||||||
"MVTACLO R15 \n" \
|
|
||||||
|
/* Accumulator low 32 bits. */
|
||||||
|
"MVTACLO R15, A0 \n" \
|
||||||
"POP R15 \n" \
|
"POP R15 \n" \
|
||||||
"MVTACHI R15 \n" \
|
|
||||||
|
/* Accumulator high 32 bits. */
|
||||||
|
"MVTACHI R15, A0 \n" \
|
||||||
|
"POP R15 \n" \
|
||||||
|
|
||||||
|
/* Accumulator guard. */
|
||||||
|
"MVTACGU R15, A0 \n" \
|
||||||
|
"POP R15 \n" \
|
||||||
|
|
||||||
|
/* Accumulator low 32 bits. */
|
||||||
|
"MVTACLO R15, A1 \n" \
|
||||||
|
"POP R15 \n" \
|
||||||
|
|
||||||
|
/* Accumulator high 32 bits. */
|
||||||
|
"MVTACHI R15, A1 \n" \
|
||||||
|
"POP R15 \n" \
|
||||||
|
|
||||||
|
/* Accumulator guard. */
|
||||||
|
"MVTACGU R15, A1 \n" \
|
||||||
"POP R15 \n" \
|
"POP R15 \n" \
|
||||||
"MVTC R15, FPSW \n" \
|
"MVTC R15, FPSW \n" \
|
||||||
"POPM R1-R15 \n" \
|
"POPM R1-R15 \n" \
|
||||||
|
@ -355,14 +401,14 @@ void vTickISR( void )
|
||||||
|
|
||||||
/* Increment the tick, and perform any processing the new tick value
|
/* Increment the tick, and perform any processing the new tick value
|
||||||
necessitates. Ensure IPL is at the max syscall value first. */
|
necessitates. Ensure IPL is at the max syscall value first. */
|
||||||
portDISABLE_INTERRUPTS_FROM_KERNEL_ISR();
|
portMASK_INTERRUPTS_FROM_KERNEL_ISR();
|
||||||
{
|
{
|
||||||
if( xTaskIncrementTick() != pdFALSE )
|
if( xTaskIncrementTick() != pdFALSE )
|
||||||
{
|
{
|
||||||
taskYIELD();
|
taskYIELD();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
portENABLE_INTERRUPTS_FROM_KERNEL_ISR();
|
portUNMASK_INTERRUPTS_FROM_KERNEL_ISR();
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -74,11 +74,7 @@
|
||||||
/* Library includes. */
|
/* Library includes. */
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
|
|
||||||
/* Hardware specifics. */
|
|
||||||
#include "r_cg_iodefine.h"
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
#define USE_FULL_REGISTER_INITIALISATION
|
|
||||||
|
|
||||||
/* Tasks should start with interrupts enabled and in Supervisor mode, therefore
|
/* Tasks should start with interrupts enabled and in Supervisor mode, therefore
|
||||||
PSW is set with U and I set, and PM and IPL clear. */
|
PSW is set with U and I set, and PM and IPL clear. */
|
||||||
|
@ -324,7 +320,7 @@ static void prvYieldHandler( void )
|
||||||
/* Save the rest of the general registers (R15 has been saved already). */
|
/* Save the rest of the general registers (R15 has been saved already). */
|
||||||
PUSHM R1-R14
|
PUSHM R1-R14
|
||||||
|
|
||||||
/* Save the FPSW and accumulator. */
|
/* Save the FPSW and accumulators. */
|
||||||
MVFC FPSW, R15
|
MVFC FPSW, R15
|
||||||
PUSH.L R15
|
PUSH.L R15
|
||||||
MVFACGU #0, A1, R15
|
MVFACGU #0, A1, R15
|
||||||
|
|
Loading…
Reference in a new issue