diff --git a/soc/arm/xilinx_zynqmp/Kconfig.soc b/soc/arm/xilinx_zynqmp/Kconfig.soc index 90b43e63642..3c83d58c11f 100644 --- a/soc/arm/xilinx_zynqmp/Kconfig.soc +++ b/soc/arm/xilinx_zynqmp/Kconfig.soc @@ -9,3 +9,4 @@ config SOC_XILINX_ZYNQMP_RPU select GIC_V1 select MULTI_LEVEL_INTERRUPTS select 2ND_LEVEL_INTERRUPTS + select PLATFORM_SPECIFIC_INIT diff --git a/soc/arm/xilinx_zynqmp/soc.c b/soc/arm/xilinx_zynqmp/soc.c index 68fae6a2c8d..9deecdf11cc 100644 --- a/soc/arm/xilinx_zynqmp/soc.c +++ b/soc/arm/xilinx_zynqmp/soc.c @@ -9,7 +9,6 @@ #include #include -#include /** * * @brief Perform basic hardware initialization @@ -29,3 +28,15 @@ static int soc_init(struct device *arg) } SYS_INIT(soc_init, PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); + +void z_platform_init(void) +{ + /* + * Use normal exception vectors address range (0x0-0x1C). + */ + __asm__ volatile( + "mrc p15, 0, r0, c1, c0, 0;" /* SCTLR */ + "bic r0, r0, #" TOSTR(HIVECS) ";" /* Clear HIVECS */ + "mcr p15, 0, r0, c1, c0, 0;" + : : : "memory"); +}