diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c
index 167ff4b6d63ef8622a6c3727a9adb19163ea716a..aa48d159fa49c88e47825222e3272129110b1892 100644
--- a/arch/arm/mach-imx/imx8m/soc.c
+++ b/arch/arm/mach-imx/imx8m/soc.c
@@ -471,19 +471,24 @@ usb_modify_speed:
 }
 #endif
 
+#if defined(CONFIG_SPL_BUILD) || !defined(CONFIG_SYSRESET)
 void reset_cpu(ulong addr)
 {
-	struct watchdog_regs *wdog = (struct watchdog_regs *)WDOG1_BASE_ADDR;
+       struct watchdog_regs *wdog = (struct watchdog_regs *)addr;
 
-	/* Clear WDA to trigger WDOG_B immediately */
-	writew((WCR_WDE | WCR_SRS), &wdog->wcr);
+       if (!addr)
+	       wdog = (struct watchdog_regs *)WDOG1_BASE_ADDR;
 
-	while (1) {
-		/*
-		 * spin for .5 seconds before reset
-		 */
-	}
+       /* Clear WDA to trigger WDOG_B immediately */
+       writew((WCR_WDE | WCR_SRS), &wdog->wcr);
+
+       while (1) {
+               /*
+                * spin for .5 seconds before reset
+                */
+       }
 }
+#endif
 
 #if defined(CONFIG_ARCH_MISC_INIT)
 #define FSL_SIP_BUILDINFO			0xC2000003