Update MPS430X ports so the sleep mode bits are cleared on exit from the tick interrupt.

Update heap_4.c.
pull/1/head
Richard Barry 13 years ago
parent 59c9044de1
commit 054b018d0e

@ -213,6 +213,7 @@ interrupt void vTickISREntry( void )
{
extern void vPortTickISR( void );
__bic_SR_register_on_exit( SCG1 + SCG0 + OSCOFF + CPUOFF );
#if configUSE_PREEMPTION == 1
extern void vPortPreemptiveTickISR( void );
vPortPreemptiveTickISR();

@ -88,12 +88,6 @@ portRESTORE_CONTEXT .macro
pop_x r15
mov.w r15, &usCriticalNesting
popm_x #12, r15
;The last thing on the stack will be the status register.
;Ensure the power down bits are clear ready for the next
;time this power down register is popped from the stack.
bic.w #0xf0, 0( sp )
pop.w sr
ret_x
.endm

@ -214,6 +214,7 @@ __interrupt __raw void vTickISREntry( void )
{
extern void vPortTickISR( void );
__bic_SR_register_on_exit( SCG1 + SCG0 + OSCOFF + CPUOFF );
vPortTickISR();
}

@ -95,12 +95,6 @@ portRESTORE_CONTEXT macro
pop_x r15
mov.w r15, &usCriticalNesting
popm_x #12, r15
/* The last thing on the stack will be the status register.
Ensure the power down bits are clear ready for the next
time this power down register is popped from the stack. */
bic.w #0xf0, 0( sp )
pop.w sr
reta
endm
@ -122,7 +116,9 @@ portRESTORE_CONTEXT macro
vPortTickISR:
/* The sr is not saved in portSAVE_CONTEXT() because vPortYield() needs
to save it manually before it gets modified (interrupts get disabled). */
to save it manually before it gets modified (interrupts get disabled).
Entering through this interrupt means the SR is already on the stack, but
this keeps the stack frames identical. */
push.w sr
portSAVE_CONTEXT

@ -356,7 +356,7 @@ unsigned char *puc;
}
#define INCLUDE_TEST_CODE 1
#define INCLUDE_TEST_CODE 0
#if INCLUDE_TEST_CODE == 1
#define heapMAX_TEST_BLOCKS 6
@ -366,6 +366,7 @@ void vTestHeap4( void )
void *pvReturned;
static void *pvUsedBlocks[ heapMAX_TEST_BLOCKS ];
unsigned long ulIndex = 0, ulSize, ulRandSample;
size_t xSize1, xSize2, xSize3;
static const unsigned long ulCombinations[ 6 ][ 3 ] =
{
{ 0, 1, 2 },
@ -530,13 +531,17 @@ static const unsigned long ulCombinations[ 6 ][ 3 ] =
}
/* Do the same, but using random block sizes. */
for( ulRandSample = 0; ulRandSample < 0x5ffff; ulRandSample++ )
for( ulRandSample = 0; ulRandSample < 0xffffffUL; ulRandSample++ )
{
xSize1 = rand();
xSize2 = rand();
xSize3 = rand();
for( ulIndex = 0; ulIndex < 6; ulIndex++ )
{
pvUsedBlocks[ 0 ] = pvPortMalloc( rand() );
pvUsedBlocks[ 1 ] = pvPortMalloc( rand() );
pvUsedBlocks[ 2 ] = pvPortMalloc( rand() );
pvUsedBlocks[ 0 ] = pvPortMalloc( xSize1 );
pvUsedBlocks[ 1 ] = pvPortMalloc( xSize2 );
pvUsedBlocks[ 2 ] = pvPortMalloc( xSize3 );
vPortFree( pvUsedBlocks[ ulCombinations[ ulIndex ][ 0 ] ] );
vPortFree( pvUsedBlocks[ ulCombinations[ ulIndex ][ 1 ] ] );

Loading…
Cancel
Save