Received: by 2002:ac0:98c7:0:0:0:0:0 with SMTP id g7-v6csp1603134imd; Sun, 4 Nov 2018 06:09:05 -0800 (PST) X-Google-Smtp-Source: AJdET5f37tNJM5P/jzBk7xnR/dJT470MEOat0TCwTD+xw9C4SGEaQNrYsZ5a2Knn8RPQ0qW+pwxq X-Received: by 2002:a62:8f8c:: with SMTP id n134-v6mr18869372pfd.258.1541340544995; Sun, 04 Nov 2018 06:09:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541340544; cv=none; d=google.com; s=arc-20160816; b=wvHz27FXLJBZu0sLKFWCmIe0CopN/P21B2U76gH3as8H0mkloB/oltV0tE2rGz90Qm XTOyuPWfC0gse0pRx3SXh5wFzM+ssJ6OJ+OzzfNpy+UJVcrV3Ki0OP4VIBvp4J3sTVxI y4PyRQzpFJ4xiUK3bTmudQwzZDIDXH5+FYWLwJk0Bf4TcI9I3vIPCX0B8jhqODrcICwG EBWFu91RKon6n6MIhCoCq7jFpFOnKYKA5nJnDzo09LDUoe53xlFbaZy6RYa9tbP6btRn bXxTakjQWl1Q9VHB6pJ6p6aHEX843FdEvywYfJ0b4C4ZkD7WJT88vCEh1gNi5RlH2x2u b+pg== 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 g9-v6si43809767plb.400.2018.11.04.06.08.49; Sun, 04 Nov 2018 06:09:04 -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 S1730067AbeKDXHI (ORCPT + 99 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(-) 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) -- 2.17.1