mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-20 05:21:59 -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. */
|
/* -32 as we are using the high word of the 64bit mask. */
|
||||||
MCF_INTC0_INTFRCH &= ~( 1UL << ( configYIELD_INTERRUPT_VECTOR - 32UL ) );
|
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. */
|
/* Yield interrupt. */
|
||||||
__cs3_isr_interrupt_127:
|
__cs3_isr_interrupt_127:
|
||||||
portSAVE_CONTEXT
|
portSAVE_CONTEXT
|
||||||
jsr vPortClearYield
|
jsr vPortYieldHandler
|
||||||
jsr vTaskSwitchContext
|
|
||||||
portRESTORE_CONTEXT
|
portRESTORE_CONTEXT
|
||||||
|
|
||||||
/********************************************************************/
|
/********************************************************************/
|
||||||
|
|
|
@ -88,7 +88,7 @@ extern "C" {
|
||||||
#define portTICK_RATE_MS ( ( portTickType ) 1000 / configTICK_RATE_HZ )
|
#define portTICK_RATE_MS ( ( portTickType ) 1000 / configTICK_RATE_HZ )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
unsigned portLONG ulPortSetIPL( unsigned portLONG );
|
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 )
|
#define portENABLE_INTERRUPTS() ulPortSetIPL( 0 )
|
||||||
|
|
||||||
|
|
||||||
|
@ -99,8 +99,8 @@ extern void vPortExitCritical( void );
|
||||||
|
|
||||||
extern unsigned portBASE_TYPE uxPortSetInterruptMaskFromISR( void );
|
extern unsigned portBASE_TYPE uxPortSetInterruptMaskFromISR( void );
|
||||||
extern void vPortClearInterruptMaskFromISR( unsigned portBASE_TYPE );
|
extern void vPortClearInterruptMaskFromISR( unsigned portBASE_TYPE );
|
||||||
#define portSET_INTERRUPT_MASK_FROM_ISR() uxPortSetInterruptMaskFromISR()
|
#define portSET_INTERRUPT_MASK_FROM_ISR() ulPortSetIPL( configMAX_SYSCALL_INTERRUPT_PRIORITY )
|
||||||
#define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedStatusRegister ) vPortClearInterruptMaskFromISR( uxSavedStatusRegister )
|
#define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedStatusRegister ) ulPortSetIPL( uxSavedStatusRegister )
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue