diff options
| -rw-r--r-- | ports/zephyr/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | ports/zephyr/main.c | 6 |
2 files changed, 3 insertions, 4 deletions
diff --git a/ports/zephyr/CMakeLists.txt b/ports/zephyr/CMakeLists.txt index c8bb1fc45..a2c212031 100644 --- a/ports/zephyr/CMakeLists.txt +++ b/ports/zephyr/CMakeLists.txt @@ -54,6 +54,7 @@ list(TRANSFORM MICROPY_SOURCE_PORT PREPEND ${MICROPY_PORT_DIR}/) set(MICROPY_SOURCE_SHARED libc/printf.c readline/readline.c + runtime/gchelper_generic.c runtime/interrupt_char.c runtime/mpirq.c runtime/pyexec.c diff --git a/ports/zephyr/main.c b/ports/zephyr/main.c index 47c954622..a2af609ed 100644 --- a/ports/zephyr/main.c +++ b/ports/zephyr/main.c @@ -48,6 +48,7 @@ #include "py/gc.h" #include "py/mphal.h" #include "py/stackctrl.h" +#include "shared/runtime/gchelper.h" #include "shared/runtime/pyexec.h" #include "shared/readline/readline.h" #include "extmod/modbluetooth.h" @@ -180,11 +181,8 @@ soft_reset: } void gc_collect(void) { - // WARNING: This gc_collect implementation doesn't try to get root - // pointers from CPU registers, and thus may function incorrectly. - void *dummy; gc_collect_start(); - gc_collect_root(&dummy, ((mp_uint_t)MP_STATE_THREAD(stack_top) - (mp_uint_t)&dummy) / sizeof(mp_uint_t)); + gc_helper_collect_regs_and_stack(); #if MICROPY_PY_THREAD mp_thread_gc_others(); #endif |
