diff --git a/zephyr/main.c b/zephyr/main.c
index f8e48e61e80f1c108d66aae360b01418bea16a07..250e51a2f500c5a985663c86f1a0f04ea7e1e7c3 100644
--- a/zephyr/main.c
+++ b/zephyr/main.c
@@ -67,6 +67,7 @@ int real_main(void) {
     // Should be set to stack size in prj.mdef minus fuzz factor
     mp_stack_set_limit(3584);
 
+soft_reset:
     #if MICROPY_ENABLE_GC
     gc_init(heap, heap + sizeof(heap));
     #endif
@@ -89,7 +90,9 @@ int real_main(void) {
         }
     }
 
-    mp_deinit();
+    printf("soft reboot\n");
+    goto soft_reset;
+
     return 0;
 }