diff --git a/soc/nxp/imx/imx9/imx93/CMakeLists.txt b/soc/nxp/imx/imx9/imx93/CMakeLists.txt index 1d511e7d5ff..0ddfb39b65d 100644 --- a/soc/nxp/imx/imx9/imx93/CMakeLists.txt +++ b/soc/nxp/imx/imx9/imx93/CMakeLists.txt @@ -12,4 +12,5 @@ elseif(CONFIG_SOC_MIMX9352_M33) zephyr_include_directories(m33) zephyr_sources(m33/soc.c) set(SOC_LINKER_SCRIPT ${ZEPHYR_BASE}/include/zephyr/arch/arm/cortex_m/scripts/linker.ld CACHE INTERNAL "") + zephyr_library_sources_ifdef(CONFIG_SOC_RESET_HOOK m33/imx93_m33_startup.S) endif() diff --git a/soc/nxp/imx/imx9/imx93/Kconfig b/soc/nxp/imx/imx9/imx93/Kconfig index f17c1378911..b84c92a7791 100644 --- a/soc/nxp/imx/imx9/imx93/Kconfig +++ b/soc/nxp/imx/imx9/imx93/Kconfig @@ -22,6 +22,7 @@ config SOC_MIMX9352_M33 select HAS_MCUX_IOMUXC if PINCTRL select HAS_MCUX_CACHE select SOC_EARLY_INIT_HOOK + select SOC_RESET_HOOK config MCUX_CORE_SUFFIX default "_ca55" if SOC_MIMX9352_A55 diff --git a/soc/nxp/imx/imx9/imx93/m33/imx93_m33_startup.S b/soc/nxp/imx/imx9/imx93/m33/imx93_m33_startup.S new file mode 100644 index 00000000000..4df11a46439 --- /dev/null +++ b/soc/nxp/imx/imx9/imx93/m33/imx93_m33_startup.S @@ -0,0 +1,26 @@ +/* + * Copyright 2025 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include + +_ASM_FILE_PROLOGUE + +GTEXT(soc_reset_hook) + +SECTION_FUNC(TEXT, soc_reset_hook) + + mov r0, #0 + ldr r1, = DT_REG_ADDR(DT_NODELABEL(dtcm)) + ldr r2, = DT_REG_ADDR(DT_NODELABEL(dtcm)) + DT_REG_SIZE(DT_NODELABEL(dtcm)) +DTCM_LOOP: + cmp r1, r2 + itt lt + strlt r0, [r1], #4 + blt DTCM_LOOP + + bx lr