Add proper 8 byte alignment support.

pull/1/head
Richard Barry 16 years ago
parent 0b86cb1e2c
commit 0a9fddb5d4

@ -220,6 +220,10 @@
#include "../../Source/portable/GCC/PPC405_Xilinx/portmacro.h" #include "../../Source/portable/GCC/PPC405_Xilinx/portmacro.h"
#endif #endif
#ifdef GCC_PPC440
#include "../../Source/portable/GCC/PPC440_Xilinx/portmacro.h"
#endif
#ifdef _16FX_SOFTUNE #ifdef _16FX_SOFTUNE
#include "..\..\Source\portable\Softune\MB96340\portmacro.h" #include "..\..\Source\portable\Softune\MB96340\portmacro.h"
#endif #endif

@ -49,19 +49,6 @@
licensing and training services. licensing and training services.
*/ */
/*
Changes between V2.5.1 and V2.5.1
+ The memory pool has been defined within a struct to ensure correct memory
alignment on 32bit systems.
Changes between V2.6.1 and V3.0.0
+ An overflow check has been added to ensure the next free byte variable
does not wrap around.
*/
/* /*
* The simplest possible implementation of pvPortMalloc(). Note that this * The simplest possible implementation of pvPortMalloc(). Note that this
@ -100,7 +87,11 @@ Changes between V2.6.1 and V3.0.0
alignment without using any non-portable code. */ alignment without using any non-portable code. */
static union xRTOS_HEAP static union xRTOS_HEAP
{ {
volatile unsigned portLONG ulDummy; #if portBYTE_ALIGNMENT == 8
volatile portDOUBLE dDummy;
#else
volatile unsigned portLONG ulDummy;
#endif
unsigned portCHAR ucHeap[ configTOTAL_HEAP_SIZE ]; unsigned portCHAR ucHeap[ configTOTAL_HEAP_SIZE ];
} xHeap; } xHeap;

@ -88,7 +88,11 @@
alignment without using any non-portable code. */ alignment without using any non-portable code. */
static union xRTOS_HEAP static union xRTOS_HEAP
{ {
volatile unsigned portLONG ulDummy; #if portBYTE_ALIGNMENT == 8
volatile portDOUBLE dDummy;
#else
volatile unsigned portLONG ulDummy;
#endif
unsigned portCHAR ucHeap[ configTOTAL_HEAP_SIZE ]; unsigned portCHAR ucHeap[ configTOTAL_HEAP_SIZE ];
} xHeap; } xHeap;
@ -101,7 +105,7 @@ typedef struct A_BLOCK_LINK
} xBlockLink; } xBlockLink;
static const unsigned portSHORT heapSTRUCT_SIZE = ( sizeof( xBlockLink ) + ( sizeof( xBlockLink ) % portBYTE_ALIGNMENT ) ); static const unsigned portSHORT heapSTRUCT_SIZE = ( sizeof( xBlockLink ) + portBYTE_ALIGNMENT - ( sizeof( xBlockLink ) % portBYTE_ALIGNMENT ) );
#define heapMINIMUM_BLOCK_SIZE ( ( size_t ) ( heapSTRUCT_SIZE * 2 ) ) #define heapMINIMUM_BLOCK_SIZE ( ( size_t ) ( heapSTRUCT_SIZE * 2 ) )
/* Create a couple of list links to mark the start and end of the list. */ /* Create a couple of list links to mark the start and end of the list. */

@ -391,7 +391,7 @@ tskTCB * pxNewTCB;
required by the port. */ required by the port. */
#if portSTACK_GROWTH < 0 #if portSTACK_GROWTH < 0
{ {
pxTopOfStack = pxNewTCB->pxStack + ( usStackDepth - 1 ); pxTopOfStack = pxNewTCB->pxStack + ( usStackDepth - 1 ) - ( ( usStackDepth - 1 ) % portBYTE_ALIGNMENT );
} }
#else #else
{ {

Loading…
Cancel
Save