8 byte alignment
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 )
#endif
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.
Regards
Jokke
8 byte alignment
Thought that was in there already or was that just 4 byte alilgnmebt?
8 byte alignment
Correct, there was 1, 2 and 4 byte alignment already. No big change!
Jokke