diff --git a/pycardium/main.c b/pycardium/main.c
index 712fd65a176c4cb427c835127df98e07ce928ffd..a7fcad8162568a357ccb2b52aafe23d06d3eae88 100644
--- a/pycardium/main.c
+++ b/pycardium/main.c
@@ -6,9 +6,9 @@
 
 #include "max32665.h"
 
-static char heap[4096];
-
-extern int __StackTop, __StackLimit;
+/* Defined in linker script */
+extern void *__StackTop, *__StackLimit;
+extern void *__HeapBase, *__HeapLimit;
 
 int main(void)
 {
@@ -21,7 +21,7 @@ int main(void)
 	NVIC_EnableIRQ(TMR5_IRQn);
 
 	while (1) {
-		gc_init(heap, heap + sizeof(heap));
+		gc_init(&__HeapBase, &__HeapLimit);
 
 		mp_init();
 		pyexec_friendly_repl();