Skip to content

Commit d9ee948

Browse files
hjl-toolsIngo Molnar
authored and
Ingo Molnar
committed
x86/asm: Use -mskip-rax-setup if supported
GCC 5 added a compiler option, -mskip-rax-setup, for x86-64. It skips setting up the RAX register when SSE is disabled and there are no variable arguments passed in vector registers. (According to the x86_64 ABI, %al is used as a hidden register containing the number of vector registers used). Since the kernel doesn't pass vector registers to functions with variable arguments, this option can be used to optimize the x86-64 kernel. This GCC feature was suggested by Rasmus Villemoes <[email protected]>. This is the corresponding kernel change using it. For kernel v3.17: text data bss dec filename 11455921 2204048 5853184 19513153 vmlinux #with -mskip-rax-setup 11480079 2204048 5853184 19537311 vmlinux For Kernel v4.0+ - custom config: text data bss dec filename 10231778 3479800 16617472 30329050 vmlinux-gcc5+-mskip-rax-setup 10268797 3547448 16621568 30437813 vmlinux Signed-off-by: H.J. Lu <[email protected]> Signed-off-by: Borislav Petkov <[email protected]> Cc: Andy Lutomirski <[email protected]> Cc: Borislav Petkov <[email protected]> Cc: Brian Gerst <[email protected]> Cc: Denys Vlasenko <[email protected]> Cc: H. Peter Anvin <[email protected]> Cc: Linus Torvalds <[email protected]> Cc: Rasmus Villemoes <[email protected]> Cc: Thomas Gleixner <[email protected]> Signed-off-by: Ingo Molnar <[email protected]>
1 parent 3f5159a commit d9ee948

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

Diff for: arch/x86/Makefile

+3
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ else
8484
# Use -mpreferred-stack-boundary=3 if supported.
8585
KBUILD_CFLAGS += $(call cc-option,-mpreferred-stack-boundary=3)
8686

87+
# Use -mskip-rax-setup if supported.
88+
KBUILD_CFLAGS += $(call cc-option,-mskip-rax-setup)
89+
8790
# FIXME - should be integrated in Makefile.cpu (Makefile_32.cpu)
8891
cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8)
8992
cflags-$(CONFIG_MPSC) += $(call cc-option,-march=nocona)

0 commit comments

Comments
 (0)