diff --git a/unix/main.c b/unix/main.c
index 884ee9d32dc3dc68d702f74356f1f7f53c34c582..938c133d413ee62b8e4b8db78e1e06e39dcf3777 100644
--- a/unix/main.c
+++ b/unix/main.c
@@ -63,7 +63,7 @@ long heap_size = 128*1024 * (sizeof(machine_uint_t) / 4);
 #endif
 
 // Stack top at the start of program
-void *stack_top;
+char *stack_top;
 
 void microsocket_init();
 void time_init();
@@ -212,7 +212,10 @@ int usage(char **argv) {
 }
 
 mp_obj_t mem_info(void) {
-    printf("mem: total=%d, current=%d, peak=%d\n", m_get_total_bytes_allocated(), m_get_current_bytes_allocated(), m_get_peak_bytes_allocated());
+    volatile int stack_dummy;
+    printf("mem: total=%d, current=%d, peak=%d\n",
+        m_get_total_bytes_allocated(), m_get_current_bytes_allocated(), m_get_peak_bytes_allocated());
+    printf("stack: %d\n", stack_top - (char*)&stack_dummy);
 #if MICROPY_ENABLE_GC
     gc_dump_info();
 #endif
@@ -258,7 +261,7 @@ void pre_process_options(int argc, char **argv) {
 
 int main(int argc, char **argv) {
     volatile int stack_dummy;
-    stack_top = (void*)&stack_dummy;
+    stack_top = (char*)&stack_dummy;
 
     pre_process_options(argc, argv);