mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-20 05:21:59 -04:00
Interrupt nesting and cache support added.
This commit is contained in:
parent
53a8d172df
commit
f68aab980d
|
@ -9,8 +9,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.global ulPortSetIPL
|
.global ulPortSetIPL
|
||||||
|
.global mcf5xxx_wr_cacr
|
||||||
.global __cs3_isr_interrupt_127
|
.global __cs3_isr_interrupt_127
|
||||||
.global __cs3_isr_interrupt_119
|
|
||||||
.global vPortStartFirstTask
|
.global vPortStartFirstTask
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
@ -25,9 +25,8 @@
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro portRESTORE_CONTEXT
|
.macro portRESTORE_CONTEXT
|
||||||
|
move.l pxCurrentTCB, %a0
|
||||||
move.l pxCurrentTCB, %sp
|
move.l (%a0), %sp
|
||||||
move.l (%sp), %sp
|
|
||||||
movem.l (%sp), %d0-%fp
|
movem.l (%sp), %d0-%fp
|
||||||
lea.l %sp@(60), %sp
|
lea.l %sp@(60), %sp
|
||||||
rte
|
rte
|
||||||
|
@ -67,6 +66,13 @@ ulPortSetIPL:
|
||||||
lea 8(SP),SP
|
lea 8(SP),SP
|
||||||
unlk A6
|
unlk A6
|
||||||
rts
|
rts
|
||||||
|
/********************************************************************/
|
||||||
|
|
||||||
|
mcf5xxx_wr_cacr:
|
||||||
|
move.l 4(sp),d0
|
||||||
|
.long 0x4e7b0002 /* movec d0,cacr */
|
||||||
|
nop
|
||||||
|
rts
|
||||||
|
|
||||||
/********************************************************************/
|
/********************************************************************/
|
||||||
|
|
||||||
|
|
|
@ -84,7 +84,7 @@ extern "C" {
|
||||||
|
|
||||||
/* Hardware specifics. */
|
/* Hardware specifics. */
|
||||||
#define portBYTE_ALIGNMENT 4
|
#define portBYTE_ALIGNMENT 4
|
||||||
#define portSTACK_GROWTH -4
|
#define portSTACK_GROWTH -1
|
||||||
#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 );
|
||||||
|
@ -106,7 +106,7 @@ extern void vPortClearInterruptMaskFromISR( unsigned portBASE_TYPE );
|
||||||
|
|
||||||
/* Task utilities. */
|
/* Task utilities. */
|
||||||
|
|
||||||
#define portYIELD() MCF_INTC0_INTFRCH |= ( 1UL << ( configYIELD_INTERRUPT_VECTOR - 32UL ) ); portNOP(); portNOP(); portNOP(); /* -32 as we are using the high word of the 64bit mask. */
|
#define portYIELD() MCF_INTC0_INTFRCH |= ( 1UL << ( configYIELD_INTERRUPT_VECTOR - 32UL ) ); portNOP(); portNOP(); portNOP() /* -32 as we are using the high word of the 64bit mask. */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -119,9 +119,9 @@ extern void vPortClearInterruptMaskFromISR( unsigned portBASE_TYPE );
|
||||||
#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters )
|
#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters )
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired ) \
|
#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired != pdFALSE ) \
|
||||||
{ \
|
{ \
|
||||||
portYIELD(); \
|
portYIELD(); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue