From: Andrew Cooper Date: Fri, 6 Oct 2017 13:21:32 +0000 (+0000) Subject: x86/Rules: Use -mskip-rax-setup if the compiler supports it X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~837 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=2d70b54e055635ff60526b6949156504b6194b7c;p=xen.git x86/Rules: Use -mskip-rax-setup if the compiler supports it This option is available from GCC 5 onwards, and was specifically introduced as an optimisation for Linux. When using variadic functions, the caller needs to know how many floating point arguments were passed. Xen, like Linux, doesn't uses floating point arguments, so doesn't need to emit code to inform variadic functions such as printk() that there are zero arguments. The net delta for a release build is: add/remove: 0/0 grow/shrink: 35/625 up/down: 603/-5489 (-4886) with the single biggest change being: x86_emulate 101933 101751 -182 Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich --- diff --git a/xen/arch/x86/Rules.mk b/xen/arch/x86/Rules.mk index 568657ee52..71ed3711ba 100644 --- a/xen/arch/x86/Rules.mk +++ b/xen/arch/x86/Rules.mk @@ -24,8 +24,12 @@ $(call as-insn-check,CFLAGS,CC,".equ \"x\"$$(comma)1", \ -U__OBJECT_LABEL__ -DHAVE_GAS_QUOTED_SYM \ '-D__OBJECT_LABEL__=$(subst $(BASEDIR)/,,$(CURDIR))/$$@') -CFLAGS += -mno-red-zone -mno-sse -fpic -CFLAGS += -fno-asynchronous-unwind-tables +CFLAGS += -mno-red-zone -fpic -fno-asynchronous-unwind-tables + +# Xen doesn't use SSE interally. If the compiler supports it, also skip the +# SSE setup for variadic function calls. +CFLAGS += -mno-sse $(call cc-option,$(CC),-mskip-rax-setup) + # -fvisibility=hidden reduces -fpic cost, if it's available ifneq ($(call cc-option,$(CC),-fvisibility=hidden,n),n) CFLAGS += -DGCC_HAS_VISIBILITY_ATTRIBUTE