[PATCH] Use -mskip-rax-setup if supported

From: H.J. Lu
Date: Thu Apr 16 2015 - 17:24:07 EST


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. Since kernel doesn't
pass vector registers to functions with variable arguments, this option
can be used to optimize the x86-64 kernel. For kernel 3.17:

text data bss dec hex filename
11455921 2204048 5853184 19513153 129bf41 vmlinux #with -mskip-rax-setup
11480079 2204048 5853184 19537311 12a1d9f vmlinux


--
H.J.
From a759c1a4f6ffa408d49e1959449d6797769b951e Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@xxxxxxxxx>
Date: Wed, 17 Dec 2014 18:05:29 -0800
Subject: [PATCH] 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. Since kernel doesn't
pass vector registers to functions with variable arguments, this option
can be used to optimize the x86-64 kernel. For kernel 3.17:

text data bss dec hex filename
11455921 2204048 5853184 19513153 129bf41 vmlinux #with -mskip-rax-setup
11480079 2204048 5853184 19537311 12a1d9f vmlinux

Signed-off-by: H.J. Lu <hjl.tools@xxxxxxxxx>
---
arch/x86/Makefile | 3 +++
1 file changed, 3 insertions(+)

diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index 5ba2d9c..40af1ba 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -84,6 +84,9 @@ else
# Use -mpreferred-stack-boundary=3 if supported.
KBUILD_CFLAGS += $(call cc-option,-mpreferred-stack-boundary=3)

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