diff options
author | Borislav Petkov <bp@suse.de> | 2014-02-04 19:55:11 -0500 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2014-02-04 23:00:35 -0500 |
commit | b399fe355b30d0102e7690c99e6f764ddfd32ec3 (patch) | |
tree | 78699801f7a010228cb646c25a87af3f267a54e3 | |
parent | 38dbfb59d1175ef458d006556061adeaa8751b72 (diff) |
x86: Disable generation of traditional x87 instructions
We recently had the case where wrongly used floating-constant 'E' caused
the generation of traditional x87 instructions in kernel code and
wreaking all kinds of havoc.
Disable the generation of those too. This will save people a lot of time
when trying to debug such issues by erroring out of the build instead of
let them manifest themselves in very spectacular and happy-crappy ways
at runtime.
We're using -mno-fp-ret-in-387 in addition to -mno-80387 (which is ==
-msoft-float) because, as the gcc manpage says:
On machines where a function returns floating-point results in the
80387 register stack, some floating-point opcodes may be emitted even
if -msoft-float is used.
so we want to turn off *all* non-integer instructions involving any
architectural FPU state, unless it is absolutely necessary (and those
cases need special handling anyway).
Cc: Jiri Kosina <jkosina@suse.cz>
Cc: Michael Matz <matz@suse.de>
Cc: Michal Hocko <mhocko@suse.cz>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: http://lkml.kernel.org/r/1391561711-3023-1-git-send-email-bp@alien8.de
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r-- | arch/x86/Makefile | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/x86/Makefile b/arch/x86/Makefile index eeda43abed6e..a414b1471ffc 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile | |||
@@ -82,8 +82,8 @@ else | |||
82 | KBUILD_AFLAGS += -m64 | 82 | KBUILD_AFLAGS += -m64 |
83 | KBUILD_CFLAGS += -m64 | 83 | KBUILD_CFLAGS += -m64 |
84 | 84 | ||
85 | # Don't autogenerate MMX or SSE instructions | 85 | # Don't autogenerate traditional x87, MMX or SSE instructions |
86 | KBUILD_CFLAGS += -mno-mmx -mno-sse | 86 | KBUILD_CFLAGS += -mno-mmx -mno-sse -mno-80387 -mno-fp-ret-in-387 |
87 | 87 | ||
88 | # Use -mpreferred-stack-boundary=3 if supported. | 88 | # Use -mpreferred-stack-boundary=3 if supported. |
89 | KBUILD_CFLAGS += $(call cc-option,-mpreferred-stack-boundary=3) | 89 | KBUILD_CFLAGS += $(call cc-option,-mpreferred-stack-boundary=3) |