Am 21. September 2020 03:58:31 MESZ schrieb Bin Meng <bmeng...@gmail.com>: >Hi Simon, > >On Sun, Sep 6, 2020 at 3:15 AM Simon Glass <s...@chromium.org> wrote: >> >> 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.g...@gmx.de> >> Signed-off-by: Simon Glass <s...@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 */
%s/Definite/Define/ >> +#ifdef CONFIG_X86_64 > >I believe the correct fix is to drop the one in arch/x86/lib/bios.c > >> X86EMU_sysEnv _X86EMU_env; /* Global emulator machine state */ >> +#endif >> + >> X86EMU_intrFuncs _X86EMU_intrTab[256]; >> >> int debug_intr; >> -- > >Regards, >Bin