Message ID | 1539489134-9847-3-git-send-email-bmeng.cn@gmail.com |
---|---|
State | Accepted |
Delegated to: | Bin Meng |
Headers | show |
Series | x86: Bring qemu-x86_64 target in travis-ci build/testing | expand |
On 13 October 2018 at 21:52, Bin Meng <bmeng.cn@gmail.com> wrote: > With the '-march=core2' fix, it seems that we have some luck that > the 64-bit U-Boot boots again. However if we examine the disassembly > codes there are still SSE instructions elsewhere which means passing > cpu type to GCC is not enough to prevent it from generating these > instructions. A simple test case is doing a 'bootefi selftest' from > the U-Boot shell and it leads to a reset too. > > The 'bootefi selftest' reset is even seen with the image created by > the relative older GCC 5.4.0, the one shipped by Ubuntu 16.04. > > The reset actually originates from undefined instruction exception > caused by these SSE instructions. To keep U-Boot as a bootloader as > simple as possible, we don't want to handle such advanced SIMD stuff. > To make sure no MMX/SSE instruction sets are generated, tell GCC not > to do this. Note AVX is out of the question as CORE2 is old enough > to support AVX yet. > > Signed-off-by: Bin Meng <bmeng.cn@gmail.com> > Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de> > --- > > Changes in v2: None > > arch/x86/config.mk | 1 + > 1 file changed, 1 insertion(+) Reviewed-by: Simon Glass <sjg@chromium.org>
diff --git a/arch/x86/config.mk b/arch/x86/config.mk index 576501e..8151e47 100644 --- a/arch/x86/config.mk +++ b/arch/x86/config.mk @@ -24,6 +24,7 @@ ifeq ($(IS_32BIT),y) PLATFORM_CPPFLAGS += -march=i386 -m32 else PLATFORM_CPPFLAGS += $(if $(CONFIG_SPL_BUILD),,-fpic) -fno-common -march=core2 -m64 +PLATFORM_CPPFLAGS += -mno-mmx -mno-sse endif PLATFORM_RELFLAGS += -fdata-sections -ffunction-sections -fvisibility=hidden