Messages in this thread Patch in this message | | | From | Andy Lutomirski <> | Subject | [PATCH resend] x86: Fix detection of GCC -mpreferred-stack-boundary support | Date | Tue, 21 Jul 2015 09:27:18 -0700 |
| |
As per https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53383, GCC only allows -mpreferred-stack-boundary=3 on x86_64 if -mno-sse is set. That means that cc-option will not detect -mpreferred-stack-boundary=3 support, because we test for it before setting -mno-sse.
Fix it by reordering the Makefile bits.
Compile-tested only. This should help avoid code generation issues such as the one that was worked around in b96fecbfa8c8 ("x86/fpu: Fix boot crash in the early FPU code").
I'm a bit concerned that we could still have problems on older GCC versions given that our asm code does not respect GCC's idea of the ABI-required stack alignment.
Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Jan Kara <jack@suse.cz> Cc: Ingo Molnar <mingo@kernel.org> Cc: Borislav Petkov <bp@alien8.de> Signed-off-by: Andy Lutomirski <luto@kernel.org> --- arch/x86/Makefile | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/arch/x86/Makefile b/arch/x86/Makefile index 118e6debc483..344dd2110b2a 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -39,6 +39,12 @@ ifdef CONFIG_X86_NEED_RELOCS LDFLAGS_vmlinux := --emit-relocs endif +# prevent gcc from generating any FP code by mistake +# This must be before we try -mpreferred-stack-boundary -- see +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53383 +KBUILD_CFLAGS += -mno-sse -mno-mmx -mno-sse2 -mno-3dnow +KBUILD_CFLAGS += $(call cc-option,-mno-avx,) + ifeq ($(CONFIG_X86_32),y) BITS := 32 UTS_MACHINE := i386 @@ -167,9 +173,6 @@ KBUILD_CFLAGS += -pipe KBUILD_CFLAGS += -Wno-sign-compare # KBUILD_CFLAGS += -fno-asynchronous-unwind-tables -# prevent gcc from generating any FP code by mistake -KBUILD_CFLAGS += -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -KBUILD_CFLAGS += $(call cc-option,-mno-avx,) KBUILD_CFLAGS += $(mflags-y) KBUILD_AFLAGS += $(mflags-y) -- 2.4.3
| |