@@ -216,9 +216,12 @@ ifeq ($(IDF_TARGET_ARCH),xtensa)
216216# `#include "xtensa/xtensa_api.h"`.
217217
218218 CFLAGS += -mlongcalls -isystem esp-idf/components/xtensa/deprecated_include/ -Wno-error=cpp
219+ CFLAGS += -DMICROPY_GCREGS_SETJMP=1
219220
220221# Wrap longjmp with a patched version that protects register window update with a critical section
221222 LDFLAGS += -Wl,--wrap=longjmp
223+
224+ SRC_C += shared/runtime/gchelper_generic.c
222225else ifeq ($(IDF_TARGET_ARCH),riscv)
223226
224227 ifeq ($(IDF_TARGET),esp32p4)
@@ -230,6 +233,9 @@ else ifeq ($(IDF_TARGET_ARCH),riscv)
230233 LDFLAGS += \
231234 -Lesp-idf/components/riscv/ld \
232235 -Trom.api.ld
236+
237+ SRC_C += shared/runtime/gchelper_native.c
238+ SRC_S = shared/runtime/gchelper_rv32i.s
233239endif
234240
235241
@@ -585,16 +591,14 @@ FROZEN_MPY_PY_FILES := $(shell find -L $(FROZEN_MPY_DIR) -type f -name '*.py')
585591FROZEN_MPY_MPY_FILES := $(addprefix $(BUILD ) /,$(FROZEN_MPY_PY_FILES:.py=.mpy ) )
586592endif
587593
588- SRC_S_UPPER = supervisor/shared/cpu_regs.S
589-
590594OBJ += $(PY_O ) $(SUPERVISOR_O ) $(addprefix $(BUILD ) /, $(SRC_C:.c=.o ) )
591595OBJ += $(addprefix $(BUILD ) /, $(SRC_COMMON_HAL_SHARED_MODULE_EXPANDED:.c=.o ) )
592596ifeq ($(INTERNAL_LIBM ) ,1)
593597OBJ += $(addprefix $(BUILD ) /, $(SRC_LIBM:.c=.o ) )
594598endif
595599OBJ += $(addprefix $(BUILD ) /, $(SRC_CIRCUITPY_COMMON:.c=.o ) )
596600OBJ += $(addprefix $(BUILD ) /, $(SRC_MOD:.c=.o ) )
597- OBJ += $(addprefix $(BUILD ) /, $(SRC_S_UPPER:.S =.o ) )
601+ OBJ += $(addprefix $(BUILD ) /, $(SRC_S:.s =.o ) )
598602
599603$(BUILD ) /$(FATFS_DIR ) /ff.o : COPT += -Os
600604$(filter $(PY_BUILD ) /../extmod/vfs_fat_% .o, $(PY_O ) ) : COPT += -Os
0 commit comments