Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3930421imm; Mon, 4 Jun 2018 11:39:42 -0700 (PDT) X-Google-Smtp-Source: ADUXVKL2uYqHbnla0avKfvci+KtfD+sWp7YlQD734AiMUH8LHrsuf+EH9aTys6jypSLdGSk8D8TB X-Received: by 2002:a17:902:683:: with SMTP id 3-v6mr23137329plh.291.1528137582005; Mon, 04 Jun 2018 11:39:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528137581; cv=none; d=google.com; s=arc-20160816; b=QObzMIUYPVBBA0Ov/oK/RGO/VZIhc4BoG0CpbhBkl2h2tBS/Wk/7KTpEB3xZD2Kl73 nVE8oAFpJjNr8v5yl/v5UDGYaKSOGWF9QAs+c88IXr+0jhSRFr6XX5nH9zem7uryyt7a DUNf5KlEEhvu/lpFP0BiJ6GSWn20irKjMg5aKNcnvzA29AYqp0vXCK7yUx2ykKV303Lm Y9XGUu8QSdJ9QO3rMPO1rMRErlOAB00/m/OPfCbIN+HW7XZkEeY2kgn/o0ns9YRenGg2 QdH1E16b2v0dGXQxQ0H/yDNnoUYfY+Dae4/Fd7aM8BpGhfXNwoh2/WrMllYwruWLjpo6 dt/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:arc-authentication-results; bh=I4R32wTJNmQPJpFf9injOwE6FMjjR2YvZNQayCfvg6Q=; b=SQ3R4KWqBz1QfjhyQCats0Zc1+ccYTJFhLeSJ+sNJPbvnC/O59R+OZ40PYc1L4+FsD slDxQ5CUKHof6kh19ck5wfActMt5BA5zs8xwL1nmGpRwFuAjKnhDtsKr9S2DQgYCYtbU 5zKWW9xDu/1jZFIeQXixuEtATpmk4RPygfOevmdJoGZXFa/aAihnynWs01W19mHVFQkG KeLMqcvrxMeKQuXNIvcR7n7CMUR8J+h7WmySwXBaTgMtZjGIQwXNRbHfY5IHAZI1b9ba C6/KmPHi4WF3jMIYTSC91O+IV4s4qES1V/2/OB//l0PG8PpMxxRriuMA56HYhsaGd33a o6xg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=vmware.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a3-v6si23377300pll.412.2018.06.04.11.39.26; Mon, 04 Jun 2018 11:39:41 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=vmware.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751098AbeFDSg3 (ORCPT + 99 others); Mon, 4 Jun 2018 14:36:29 -0400 Received: from ex13-edg-ou-001.vmware.com ([208.91.0.189]:2727 "EHLO EX13-EDG-OU-001.vmware.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750779AbeFDSg1 (ORCPT ); Mon, 4 Jun 2018 14:36:27 -0400 Received: from sc9-mailhost2.vmware.com (10.113.161.72) by EX13-EDG-OU-001.vmware.com (10.113.208.155) with Microsoft SMTP Server id 15.0.1156.6; Mon, 4 Jun 2018 11:36:13 -0700 Received: from sc2-haas01-esx0118.eng.vmware.com (sc2-haas01-esx0118.eng.vmware.com [10.172.44.118]) by sc9-mailhost2.vmware.com (Postfix) with ESMTP id EC100B0BFA; Mon, 4 Jun 2018 11:36:26 -0700 (PDT) From: Nadav Amit To: , CC: Nadav Amit Subject: [PATCH v2 1/9] Makefile: Prepare for using macros for inline asm Date: Mon, 4 Jun 2018 04:21:23 -0700 Message-ID: <20180604112131.59100-2-namit@vmware.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180604112131.59100-1-namit@vmware.com> References: <20180604112131.59100-1-namit@vmware.com> MIME-Version: 1.0 Content-Type: text/plain Received-SPF: None (EX13-EDG-OU-001.vmware.com: namit@vmware.com does not designate permitted sender hosts) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Using macros for inline assembly improves both readability and compilation decisions that are distorted by big assembly blocks that use alternative sections. Compile macros.S and use it to assemble all C files. Currently, only x86 will use it. Signed-off-by: Nadav Amit --- Makefile | 9 +++++++-- arch/x86/Makefile | 11 +++++++++-- arch/x86/kernel/Makefile | 6 ++++++ arch/x86/kernel/macros.S | 7 +++++++ scripts/Kbuild.include | 4 +++- 5 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 arch/x86/kernel/macros.S diff --git a/Makefile b/Makefile index 619a85ad716b..c255ed4841d5 100644 --- a/Makefile +++ b/Makefile @@ -1082,7 +1082,7 @@ scripts: scripts_basic include/config/auto.conf include/config/tristate.conf \ # version.h and scripts_basic is processed / created. # Listed in dependency order -PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3 +PHONY += prepare archprepare macroprepare prepare0 prepare1 prepare2 prepare3 # prepare3 is used to check if we are building in a separate output directory, # and if so do: @@ -1106,7 +1106,9 @@ prepare1: prepare2 $(version_h) $(autoksyms_h) include/generated/utsrelease.h \ include/config/auto.conf $(cmd_crmodverdir) -archprepare: archheaders archscripts prepare1 scripts_basic +macroprepare: prepare1 archmacros + +archprepare: archheaders archscripts macroprepare scripts_basic prepare0: archprepare gcc-plugins $(Q)$(MAKE) $(build)=. @@ -1211,6 +1213,9 @@ archheaders: PHONY += archscripts archscripts: +PHONY += archmacros +archmacros: + PHONY += __headers __headers: $(version_h) scripts_basic uapi-asm-generic archheaders archscripts $(Q)$(MAKE) $(build)=scripts build_unifdef diff --git a/arch/x86/Makefile b/arch/x86/Makefile index 60135cbd905c..6b82314776fd 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -235,8 +235,8 @@ ifdef CONFIG_X86_64 LDFLAGS += $(call ld-option, -z max-page-size=0x200000) endif -# Speed up the build -KBUILD_CFLAGS += -pipe +# We cannot use -pipe flag since we give an additional .s file to the compiler +#KBUILD_CFLAGS += -pipe # Workaround for a gcc prelease that unfortunately was shipped in a suse release KBUILD_CFLAGS += -Wno-sign-compare # @@ -258,11 +258,18 @@ archscripts: scripts_basic archheaders: $(Q)$(MAKE) $(build)=arch/x86/entry/syscalls all +archmacros: + $(Q)$(MAKE) $(build)=arch/x86/kernel macros + archprepare: ifeq ($(CONFIG_KEXEC_FILE),y) $(Q)$(MAKE) $(build)=arch/x86/purgatory arch/x86/purgatory/kexec-purgatory.c endif +ASM_MACRO_FLAGS = -Wa,arch/x86/kernel/macros.s +export ASM_MACRO_FLAGS +KBUILD_CFLAGS += $(ASM_MACRO_FLAGS) + ### # Kernel objects diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile index 02d6f5cf4e70..fdb6c5b2a922 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile @@ -9,6 +9,12 @@ extra-y += ebda.o extra-y += platform-quirks.o extra-y += vmlinux.lds +$(obj)/macros.s: $(obj)/macros.S FORCE + $(call if_changed_dep,cpp_s_S) + +macros: $(obj)/macros.s + @: + CPPFLAGS_vmlinux.lds += -U$(UTS_MACHINE) ifdef CONFIG_FUNCTION_TRACER diff --git a/arch/x86/kernel/macros.S b/arch/x86/kernel/macros.S new file mode 100644 index 000000000000..cfc1c7d1a6eb --- /dev/null +++ b/arch/x86/kernel/macros.S @@ -0,0 +1,7 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +/* + * This file includes headers whose assembly part includes macros which are + * commonly used. The macros are precompiled into assmebly file which is later + * assembled together with each compiled file. + */ diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include index 50cee534fd64..ad2c02062aa4 100644 --- a/scripts/Kbuild.include +++ b/scripts/Kbuild.include @@ -189,7 +189,9 @@ __cc-option = $(call try-run-cached,\ # Do not attempt to build with gcc plugins during cc-option tests. # (And this uses delayed resolution so the flags will be up to date.) -CC_OPTION_CFLAGS = $(filter-out $(GCC_PLUGINS_CFLAGS),$(KBUILD_CFLAGS)) +# In addition, do not include the asm macros which are built later. +CC_OPTION_FILTERED = $(GCC_PLUGINS_CFLAGS) $(ASM_MACRO_FLAGS) +CC_OPTION_CFLAGS = $(filter-out $(CC_OPTION_FILTERED),$(KBUILD_CFLAGS)) # cc-option # Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586) -- 2.17.0