We are building FreeRTOS v8.1.0 for 64-bit Linux using the POSIX simulator. This is almost all fine, the main addition being the inclusion of a definition for portPOINTER_SIZE_TYPE in portmacros.h:
:::C #define portPOINTER_SIZE_TYPE uintptr_t
(If you see something wrong in this, please say!) However, a single warning remains which, to me, looks like a legitimate concern. On line 556 of tasks.c there is an assert:
:::C configASSERT( ( ( ( uint32_t ) pxTopOfStack & ( uint32_t ) portBYTE_ALIGNMENT_MASK ) == 0UL ) );
In order to silence the warning, we have changed this to:
:::C configASSERT( ( ( ( portPOINTER_SIZE_TYPE ) pxTopOfStack & ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK ) == 0U ) );
Given that the line above this (555) has a documented MISRA exception on it, and carefully makes use of portPOINTER_SIZE_TYPE, why does the assert cast to uint32_t? Is this a problem for anyone else (e.g. on the Windows simulator), or are we doing something differently/wrong?
Whatever the solution on this line, the same needs to be applied to line 563, which is the same assert, but for positive stack growth.