8 byte alignment

jra01 wrote on Monday, November 13, 2006:

Working with real view compiler for ARM (used by Keil) I ran into a need for 8 byte alignment of the stack. (sprintf with float values did not work otherwise.)

To achive this I had to add the following lines in heap_1.c:
#if portBYTE_ALIGNMENT == 8
    #define heapBYTE_ALIGNMENT_MASK    ( ( size_t ) 0x0007 )

I also made some changes to my port of the OS.
In port.c, pxPortInitialiseStack, first lines:
    /* Setup the initial stack of the task.  The stack is set exactly as
    expected by the portRESTORE_CONTEXT() macro.

    8 byte alignment: */
    pxTopOfStack = (portSTACK_TYPE *)((long)pxTopOfStack & 0xfffffff8);

In portmacro.h:
#define portBYTE_ALIGNMENT            8

I’ll send the changes to Richard.



nobody wrote on Monday, November 13, 2006:

Thought that was in there already or was that just 4 byte alilgnmebt?

jra01 wrote on Tuesday, November 14, 2006:

Correct, there was 1, 2 and 4 byte alignment already. No big change!