Interrupt nesting and cache support added.

This commit is contained in:
Richard Barry 2008-08-10 21:14:08 +00:00
parent 53a8d172df
commit f68aab980d
2 changed files with 15 additions and 9 deletions

View File

@ -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
/********************************************************************/

View File

@ -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,9 +119,9 @@ extern void vPortClearInterruptMaskFromISR( unsigned portBASE_TYPE );
#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters )
/*-----------------------------------------------------------*/
#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired ) \
{ \
portYIELD(); \
#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired != pdFALSE ) \
{ \
portYIELD(); \
}