Align StackSize and StackAddress for macOS (#674)
diff --git a/portable/ThirdParty/GCC/Posix/port.c b/portable/ThirdParty/GCC/Posix/port.c
index d634c8b..5ac570d 100644
--- a/portable/ThirdParty/GCC/Posix/port.c
+++ b/portable/ThirdParty/GCC/Posix/port.c
@@ -61,6 +61,10 @@
#include <sys/times.h>
#include <time.h>
+#ifdef __APPLE__
+ #include <mach/mach_vm.h>
+#endif
+
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
@@ -146,6 +150,11 @@
pxTopOfStack = ( portSTACK_TYPE * ) thread - 1;
ulStackSize = ( size_t )( pxTopOfStack + 1 - pxEndOfStack ) * sizeof( *pxTopOfStack );
+ #ifdef __APPLE__
+ pxEndOfStack = mach_vm_round_page ( pxEndOfStack );
+ ulStackSize = mach_vm_trunc_page ( ulStackSize );
+ #endif
+
thread->pxCode = pxCode;
thread->pvParams = pvParameters;
thread->xDying = pdFALSE;