From patchwork Sun Nov 4 13:51:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sasha Levin X-Patchwork-Id: 150104 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp1537198ljp; Sun, 4 Nov 2018 05:52:07 -0800 (PST) X-Google-Smtp-Source: AJdET5eQL1Kp+bvyDbHSifl4zyL9QvQ3hpv9fbNP5Wj17E29KQseh2nf6Jyy1t4QDoWT9nCfNwfy X-Received: by 2002:a63:fd09:: with SMTP id d9-v6mr17338459pgh.164.1541339527835; Sun, 04 Nov 2018 05:52:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541339527; cv=none; d=google.com; s=arc-20160816; b=SHbQOe+X7hpoGP+Hz/7VyoGQkBoSlrPLWSXhgcq9mLtPwnO5JN+pmGFSMC/80uLT7E vlv8PVvO6AoCwq5EhVZS39N78hfYCWERWALssxM2F3zEXMCWGm1W7uGtgX7vz/u8NOGC pnNNCfy6vXUtwxdawocHd7Ok/AhRmHlR6Q4BTnds3WK2GKoUgdN29TpXDFmUhdsuRyjf aBgyHQjx16LHpcqLB0A2/KNPAj2HgN1IY/J07CxJnD7AfdaxuT+iefleEcYmHEapLo6y zmUdFCVAwAhx0/JmrBTfKpt7OZt7m1nzGx6LqiPC0A3ccbOKaYggMdDk5avFQGjDfnIM UqxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=1mgf8AOTN8rpXT6O5fyVjn0uAyS0Pacp+8CL8NAE1Ls=; b=swW6UKELvNGT12bmXVrnZyOu+/OroUjyJ25KRZ/Rkv9PyDXBrddCr2xsGN1JYOOzGA Ci2Ilprefm1/ll5h6PH+ytIB5u90SAxJ7onO1Y/XhimvujbyIa/kH6bZxAjlbDSk5DWY uT04hKAGDfIplI1C5atbT7Byhq2rLSmbAk7r8sSMci8JAadYKsYXvSHVVYg37fExyKuB Kg2ebIlNdWRCUZFEiwKjdTbB4xp+B8VB2/1F4p/LKGeufd/oXAoYtvhUhDkQKp529KHg 3Fueieyvs9R9A6/Wi9URnkekZtTMs0z+gpEGjCCM0FM9+CSYYz7kIXD5zUiF3tnjcnbZ 6hBA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Hsi05Ot2; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f192-v6si41250407pfc.73.2018.11.04.05.52.07; Sun, 04 Nov 2018 05:52:07 -0800 (PST) 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; dkim=pass header.i=@kernel.org header.s=default header.b=Hsi05Ot2; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730072AbeKDXHI (ORCPT + 32 others); Sun, 4 Nov 2018 18:07:08 -0500 Received: from mail.kernel.org ([198.145.29.99]:44400 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729989AbeKDXHH (ORCPT ); Sun, 4 Nov 2018 18:07:07 -0500 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 8FA6B21486; Sun, 4 Nov 2018 13:52:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541339523; bh=S6MfcMiCBPbQIdEY/Z9B6byaenQiRi21X2xrtwwIkzI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Hsi05Ot2qrOLp++e2PfcfMNutYck2kdVCENcfLSH2CiWZabvSvUoZLvgYacjWQuTy ctd3y1Rc++SkIDLBIFKLaxl7j8dEWpzT2WCR88bgGREuYYZAqQiRoaKXGZ3Mkd7iEh fge65p6fpV0ti0qh/8lxyMkHrUflCY/TEnith3D8= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Joel Stanley , Michael Ellerman , Sasha Levin Subject: [PATCH AUTOSEL 4.19 16/57] powerpc/Makefile: Fix PPC_BOOK3S_64 ASFLAGS Date: Sun, 4 Nov 2018 08:51:03 -0500 Message-Id: <20181104135144.88324-16-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181104135144.88324-1-sashal@kernel.org> References: <20181104135144.88324-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Joel Stanley [ Upstream commit 960e30029863db95ec79a71009272d4661db5991 ] Ever since commit 15a3204d24a3 ("powerpc/64s: Set assembler machine type to POWER4") we force -mpower4 to be passed to the assembler irrespective of the CFLAGS used (for Book3s 64). When building a powerpc64 kernel with clang, clang will not add -many to the assembler flags, so any instructions that the compiler has generated that are not available on power4 will cause an error: /usr/bin/as -a64 -mppc64 -mlittle-endian -mpower8 \ -I ./arch/powerpc/include -I ./arch/powerpc/include/generated \ -I ./include -I ./arch/powerpc/include/uapi \ -I ./arch/powerpc/include/generated/uapi -I ./include/uapi \ -I ./include/generated/uapi -I arch/powerpc -I arch/powerpc \ -maltivec -mpower4 -o init/do_mounts.o /tmp/do_mounts-3b0a3d.s /tmp/do_mounts-51ce54.s:748: Error: unrecognized opcode: `isel' GCC does include -many, so the GCC driven gas call will succeed: as -v -I ./arch/powerpc/include -I ./arch/powerpc/include/generated -I ./include -I ./arch/powerpc/include/uapi -I ./arch/powerpc/include/generated/uapi -I ./include/uapi -I ./include/generated/uapi -I arch/powerpc -I arch/powerpc -a64 -mpower8 -many -mlittle -maltivec -mpower4 -o init/do_mounts.o Note that isel is power7 and above for IBM CPUs. GCC only generates it for Power9 and above, but the above test was run against the clang generated assembly. Peter Bergner explains: When using -many -mpower4, gas will first try and find a matching power4 mnemonic and failing that, it will then allow any valid mnemonic that gas knows about. GCC's use of -many predates me though. IIRC, Alan looked at trying to remove it, but I forget why he didn't. Could be either a gcc or gas issue at the time. I'm not sure whether issue still exists or not. He and I have modified how gas works internally a fair amount since he tried removing gcc use of -many. I will also note that when using -many, gas will choose the first mnemonic that matches in the mnemonic table and we have (mostly) sorted the table so that server mnemonics show up earlier in the table than other mnemonics, so they'll be seen/chosen first. By explicitly setting -many we can build with Clang and GCC while retaining the -mpower4 option. Signed-off-by: Joel Stanley Signed-off-by: Michael Ellerman Signed-off-by: Sasha Levin --- arch/powerpc/Makefile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) -- 2.17.1 diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index 11a1acba164a..d2824b0cc142 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile @@ -238,7 +238,11 @@ cpu-as-$(CONFIG_4xx) += -Wa,-m405 cpu-as-$(CONFIG_ALTIVEC) += $(call as-option,-Wa$(comma)-maltivec) cpu-as-$(CONFIG_E200) += -Wa,-me200 cpu-as-$(CONFIG_E500) += -Wa,-me500 -cpu-as-$(CONFIG_PPC_BOOK3S_64) += -Wa,-mpower4 + +# When using '-many -mpower4' gas will first try and find a matching power4 +# mnemonic and failing that it will allow any valid mnemonic that GAS knows +# about. GCC will pass -many to GAS when assembling, clang does not. +cpu-as-$(CONFIG_PPC_BOOK3S_64) += -Wa,-mpower4 -Wa,-many cpu-as-$(CONFIG_PPC_E500MC) += $(call as-option,-Wa$(comma)-me500mc) KBUILD_AFLAGS += $(cpu-as-y)