[PATCH 3/4] arch: m68k: Add QEMU specific RAMBAR workaround

Marek Vasut marek.vasut+renesas at mailbox.org
Sun Mar 19 04:14:53 CET 2023


The QEMU emulation of m68k does not support RAMBAR accesses,
add Kconfig option which inhibits those accesses, so that
U-Boot can be started in m68k QEMU for CI testing purpopses
until QEMU emulation improves.

Signed-off-by: Marek Vasut <marek.vasut+renesas at mailbox.org>
---
Cc: Angelo Dureghello <angelo at kernel-space.org>
Cc: Huan Wang <alison.wang at nxp.com>
Cc: Marek Vasut <marek.vasut+renesas at mailbox.org>
Cc: Simon Glass <sjg at chromium.org>
Cc: Stefan Roese <sr at denx.de>
Cc: Tom Rini <trini at konsulko.com>
---
 arch/m68k/Kconfig             | 11 ++++++++++-
 arch/m68k/cpu/mcf52x2/start.S |  4 ++--
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
index 32759cde47d..1911563e540 100644
--- a/arch/m68k/Kconfig
+++ b/arch/m68k/Kconfig
@@ -198,8 +198,17 @@ source "board/freescale/m5373evb/Kconfig"
 source "board/sysam/amcore/Kconfig"
 source "board/sysam/stmark2/Kconfig"
 
+config M68K_QEMU
+	bool "Build with workarounds for incomplete QEMU emulation"
+	default n
+	help
+	  QEMU 8.x currently does not implement RAMBAR accesses and
+	  DMA timers. Enable this option for U-Boot CI purposes only
+	  to skip the RAMBAR accesses.
+
 config MCFTMR
 	bool "Use DMA timer"
-	default y
+	default y if !M68K_QEMU
+	default n if M68K_QEMU
 
 endmenu
diff --git a/arch/m68k/cpu/mcf52x2/start.S b/arch/m68k/cpu/mcf52x2/start.S
index d48d0192eea..51d2e23df10 100644
--- a/arch/m68k/cpu/mcf52x2/start.S
+++ b/arch/m68k/cpu/mcf52x2/start.S
@@ -98,7 +98,7 @@ _start:
 	nop
 	move.w	#0x2700,%sr
 
-#if defined(CONFIG_M5208)
+#if defined(CONFIG_M5208) && !defined(CONFIG_M68K_QEMU)
 	/* Initialize RAMBAR: locate SRAM and validate it */
 	move.l	#(CFG_SYS_INIT_RAM_ADDR + CFG_SYS_INIT_RAM_CTRL), %d0
 	movec	%d0, %RAMBAR1
@@ -120,7 +120,7 @@ _start:
 	movec	%d0, %RAMBAR0
 #endif /* CONFIG_M5272 || CONFIG_M5249 || CONFIG_M5253 */
 
-#if defined(CONFIG_M5282) || defined(CONFIG_M5271)
+#if (defined(CONFIG_M5282) || defined(CONFIG_M5271)) && !defined(CONFIG_M68K_QEMU)
 	/* set MBAR address + valid flag */
 	move.l	#(CFG_SYS_MBAR + 1), %d0
 	move.l	%d0, 0x40000000
-- 
2.39.2



More information about the U-Boot mailing list