mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 21:11:57 -04:00
Update to allow interrupt nesting (not yet complete).
This commit is contained in:
parent
181889d6b1
commit
431d1c009d
|
@ -158,20 +158,16 @@ void vPortExitCritical( void )
|
|||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
unsigned portBASE_TYPE uxPortSetInterruptMaskFromISR( void )
|
||||
void vPortYieldHandler( void )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
unsigned portLONG ulSavedInterruptMask;
|
||||
|
||||
void vPortClearInterruptMaskFromISR( unsigned portBASE_TYPE uxSavedInterruptMask )
|
||||
{
|
||||
}
|
||||
|
||||
void vPortClearYield( void )
|
||||
{
|
||||
/* -32 as we are using the high word of the 64bit mask. */
|
||||
MCF_INTC0_INTFRCH &= ~( 1UL << ( configYIELD_INTERRUPT_VECTOR - 32UL ) );
|
||||
|
||||
ulSavedInterruptMask = portSET_INTERRUPT_MASK_FROM_ISR();
|
||||
vTaskSwitchContext();
|
||||
portCLEAR_INTERRUPT_MASK_FROM_ISR( ulSavedInterruptMask );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -73,8 +73,7 @@ ulPortSetIPL:
|
|||
/* Yield interrupt. */
|
||||
__cs3_isr_interrupt_127:
|
||||
portSAVE_CONTEXT
|
||||
jsr vPortClearYield
|
||||
jsr vTaskSwitchContext
|
||||
jsr vPortYieldHandler
|
||||
portRESTORE_CONTEXT
|
||||
|
||||
/********************************************************************/
|
||||
|
|
|
@ -88,7 +88,7 @@ extern "C" {
|
|||
#define portTICK_RATE_MS ( ( portTickType ) 1000 / configTICK_RATE_HZ )
|
||||
/*-----------------------------------------------------------*/
|
||||
unsigned portLONG ulPortSetIPL( unsigned portLONG );
|
||||
#define portDISABLE_INTERRUPTS() ulPortSetIPL( configKERNEL_INTERRUPT_PRIORITY )
|
||||
#define portDISABLE_INTERRUPTS() ulPortSetIPL( configMAX_SYSCALL_INTERRUPT_PRIORITY )
|
||||
#define portENABLE_INTERRUPTS() ulPortSetIPL( 0 )
|
||||
|
||||
|
||||
|
@ -99,8 +99,8 @@ extern void vPortExitCritical( void );
|
|||
|
||||
extern unsigned portBASE_TYPE uxPortSetInterruptMaskFromISR( void );
|
||||
extern void vPortClearInterruptMaskFromISR( unsigned portBASE_TYPE );
|
||||
#define portSET_INTERRUPT_MASK_FROM_ISR() uxPortSetInterruptMaskFromISR()
|
||||
#define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedStatusRegister ) vPortClearInterruptMaskFromISR( uxSavedStatusRegister )
|
||||
#define portSET_INTERRUPT_MASK_FROM_ISR() ulPortSetIPL( configMAX_SYSCALL_INTERRUPT_PRIORITY )
|
||||
#define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedStatusRegister ) ulPortSetIPL( uxSavedStatusRegister )
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
|
|
Loading…
Reference in a new issue