[PATCH] x86: Drop duplicate declaration of emulator state

Simon Glass sjg at chromium.org
Sat Sep 5 21:15:24 CEST 2020


With x86 we can execute an option ROM either natively or using the x86
emulator (if enabled with CONFIG_BIOSEMU). Both of these share the
_X86EMU_env variable, with the native code using it to hold register state
during interrupt processing.

At present, in 32-bit U-Boot, the variable is declared twice, once in
common code and once in code only compiled with CONFIG_BIOSEMU.

With gcc-10 this causes a 'multiple definitions' error on boards with
CONFIG_BIOSEMU.

Drop the emulator definition, except for 64-bit builds.

Also drop inclusion of the emulator in 64-bit U-Boot since this does not
work at present, and generally isn't needed if 32-bit code has already set
up the option ROMs.

Reported-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
Signed-off-by: Simon Glass <sjg at chromium.org>
---

 drivers/bios_emulator/x86emu/sys.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/bios_emulator/x86emu/sys.c b/drivers/bios_emulator/x86emu/sys.c
index c2db1213fe6..146586b3ceb 100644
--- a/drivers/bios_emulator/x86emu/sys.c
+++ b/drivers/bios_emulator/x86emu/sys.c
@@ -44,7 +44,11 @@
 
 /*------------------------- Global Variables ------------------------------*/
 
+/* Definite this here since the emulator is not present on 64-bit */
+#ifdef CONFIG_X86_64
 X86EMU_sysEnv _X86EMU_env;	/* Global emulator machine state */
+#endif
+
 X86EMU_intrFuncs _X86EMU_intrTab[256];
 
 int debug_intr;
-- 
2.28.0.526.ge36021eeef-goog



More information about the U-Boot mailing list