diff options
Diffstat (limited to 'FreeRTOS/Source/portable/RVDS/ARM_CM3/port.c')
-rw-r--r-- | FreeRTOS/Source/portable/RVDS/ARM_CM3/port.c | 48 |
1 files changed, 7 insertions, 41 deletions
diff --git a/FreeRTOS/Source/portable/RVDS/ARM_CM3/port.c b/FreeRTOS/Source/portable/RVDS/ARM_CM3/port.c index 331fe7954..ce73953ac 100644 --- a/FreeRTOS/Source/portable/RVDS/ARM_CM3/port.c +++ b/FreeRTOS/Source/portable/RVDS/ARM_CM3/port.c @@ -1,5 +1,5 @@ /*
- FreeRTOS V8.2.3 - Copyright (C) 2015 Real Time Engineers Ltd.
+ FreeRTOS V9.0.0rc1 - Copyright (C) 2016 Real Time Engineers Ltd.
All rights reserved
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
@@ -133,9 +133,6 @@ is defined. */ /* Constants required to set up the initial stack. */
#define portINITIAL_XPSR ( 0x01000000 )
-/* Constants used with memory barrier intrinsics. */
-#define portSY_FULL_READ_WRITE ( 15 )
-
/* The systick is a 24-bit counter. */
#define portMAX_24_BIT_NUMBER ( 0xffffffUL )
@@ -362,24 +359,10 @@ void vPortEndScheduler( void ) }
/*-----------------------------------------------------------*/
-void vPortYield( void )
-{
- /* Set a PendSV to request a context switch. */
- portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;
-
- /* Barriers are normally not required but do ensure the code is completely
- within the specified behaviour for the architecture. */
- __dsb( portSY_FULL_READ_WRITE );
- __isb( portSY_FULL_READ_WRITE );
-}
-/*-----------------------------------------------------------*/
-
void vPortEnterCritical( void )
{
portDISABLE_INTERRUPTS();
uxCriticalNesting++;
- __dsb( portSY_FULL_READ_WRITE );
- __isb( portSY_FULL_READ_WRITE );
/* This is not the interrupt safe version of the enter critical function so
assert() if it is being called from an interrupt context. Only API
@@ -424,6 +407,8 @@ __asm void xPortPendSVHandler( void ) stmdb sp!, {r3, r14}
mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY
msr basepri, r0
+ dsb
+ isb
bl vTaskSwitchContext
mov r0, #0
msr basepri, r0
@@ -444,8 +429,9 @@ void xPortSysTickHandler( void ) /* The SysTick runs at the lowest interrupt priority, so when this interrupt
executes all interrupts must be unmasked. There is therefore no need to
save and then restore the interrupt mask value as its value is already
- known. */
- ( void ) portSET_INTERRUPT_MASK_FROM_ISR();
+ known - therefore the slightly faster vPortRaiseBASEPRI() function is used
+ in place of portSET_INTERRUPT_MASK_FROM_ISR(). */
+ vPortRaiseBASEPRI();
{
/* Increment the RTOS tick. */
if( xTaskIncrementTick() != pdFALSE )
@@ -455,7 +441,7 @@ void xPortSysTickHandler( void ) portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;
}
}
- portCLEAR_INTERRUPT_MASK_FROM_ISR( 0 );
+ vPortClearBASEPRIFromISR();
}
/*-----------------------------------------------------------*/
@@ -637,26 +623,6 @@ void xPortSysTickHandler( void ) #endif /* configOVERRIDE_DEFAULT_TICK_CONFIGURATION */
/*-----------------------------------------------------------*/
-__asm uint32_t ulPortSetInterruptMask( void )
-{
- PRESERVE8
-
- mrs r0, basepri
- mov r1, #configMAX_SYSCALL_INTERRUPT_PRIORITY
- msr basepri, r1
- bx r14
-}
-/*-----------------------------------------------------------*/
-
-__asm void vPortClearInterruptMask( uint32_t ulNewMask )
-{
- PRESERVE8
-
- msr basepri, r0
- bx r14
-}
-/*-----------------------------------------------------------*/
-
__asm uint32_t vPortGetIPSR( void )
{
PRESERVE8
|