mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 21:11:57 -04:00
Interrupt nesting and cache support added.
This commit is contained in:
parent
53a8d172df
commit
f68aab980d
|
@ -9,8 +9,8 @@
|
|||
*/
|
||||
|
||||
.global ulPortSetIPL
|
||||
.global mcf5xxx_wr_cacr
|
||||
.global __cs3_isr_interrupt_127
|
||||
.global __cs3_isr_interrupt_119
|
||||
.global vPortStartFirstTask
|
||||
|
||||
.text
|
||||
|
@ -25,9 +25,8 @@
|
|||
.endm
|
||||
|
||||
.macro portRESTORE_CONTEXT
|
||||
|
||||
move.l pxCurrentTCB, %sp
|
||||
move.l (%sp), %sp
|
||||
move.l pxCurrentTCB, %a0
|
||||
move.l (%a0), %sp
|
||||
movem.l (%sp), %d0-%fp
|
||||
lea.l %sp@(60), %sp
|
||||
rte
|
||||
|
@ -67,6 +66,13 @@ ulPortSetIPL:
|
|||
lea 8(SP),SP
|
||||
unlk A6
|
||||
rts
|
||||
/********************************************************************/
|
||||
|
||||
mcf5xxx_wr_cacr:
|
||||
move.l 4(sp),d0
|
||||
.long 0x4e7b0002 /* movec d0,cacr */
|
||||
nop
|
||||
rts
|
||||
|
||||
/********************************************************************/
|
||||
|
||||
|
|
|
@ -84,7 +84,7 @@ extern "C" {
|
|||
|
||||
/* Hardware specifics. */
|
||||
#define portBYTE_ALIGNMENT 4
|
||||
#define portSTACK_GROWTH -4
|
||||
#define portSTACK_GROWTH -1
|
||||
#define portTICK_RATE_MS ( ( portTickType ) 1000 / configTICK_RATE_HZ )
|
||||
/*-----------------------------------------------------------*/
|
||||
unsigned portLONG ulPortSetIPL( unsigned portLONG );
|
||||
|
@ -106,7 +106,7 @@ extern void vPortClearInterruptMaskFromISR( unsigned portBASE_TYPE );
|
|||
|
||||
/* 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,7 +119,7 @@ extern void vPortClearInterruptMaskFromISR( unsigned portBASE_TYPE );
|
|||
#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(); \
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue