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;