Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp2803007pxk; Tue, 15 Sep 2020 02:47:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzWn8N2vY5IB2A2I5Oc+3umeqrNauDKEAwOXnCU+J4svGmlkPK2g7kG7XhZaSvls9lHOPbp X-Received: by 2002:a05:6402:1110:: with SMTP id u16mr21336637edv.253.1600163235925; Tue, 15 Sep 2020 02:47:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1600163235; cv=none; d=google.com; s=arc-20160816; b=rFOLTffHLGSQluy1wunHK84TytNussEXvjMdddmupxPGPsQLiOotZuJsrJei7EK76U egbcjv5vfa2iVdtrTpCNt1vztAWaBhXLVfowlJzhLQ1d94kAOOPO5+AjzZuFHh+YEI0k XgmSgyyJr77R8HLL2BvgQtbzmWptmGF2CvyA2AQxdFCDbJ3HKTpzQIZfJblhiwpnno9u s2haBf4VjmCapD7Q5XYP4Nfvu8IzErIkH0RgIOqPEyccYP9nPrZ0Y3KCR52crroHnCMm kVfdP92uPGi+B4BpRsQgO3eOXngpEhxuGnwOKaOyzjwcL8U+2Bh351H0BbZB65VC1prB uYsw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature; bh=sj19BwkVlXVItnNcJDqSnibDTdetD5QVWHpp9RyQiJE=; b=GbO8xAUwTvYLjlhxkNphj/e3c6gli6s5VerOKWIv6OL/dtlVeowdpnO/VIMSOR0UD5 HkFkSPnWBWlJFt0+f07czUAI8UBu9QxJvDMtHW4Y8XASBi/Fo9wPJ9DvRk4aaEDx56Da 3DJi8jaNXgFNoLFTIRs1542znSwgcVlXiDsB5eR1FErLBJ59r+tDAPZItQLrWtC8Dxib bdfSjGZrdCGDqWBn6jyfn5pA0XM7iz/7peZtXtXhSHH5CpB0y70eiy3+SHBaFzcZxigy JxHMHU8zGA1iI3gl9T4z6jHMN7TXqtXI+E7db4huqtvvHlC9ltMRWk+tDOh86IXh+OEm QXFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=y8+tQZ1K; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-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. [23.128.96.18]) by mx.google.com with ESMTP id p22si9112973edq.579.2020.09.15.02.46.46; Tue, 15 Sep 2020 02:47:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=y8+tQZ1K; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-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 S1726119AbgIOJqn (ORCPT + 99 others); Tue, 15 Sep 2020 05:46:43 -0400 Received: from mail.kernel.org ([198.145.29.99]:60466 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726102AbgIOJqn (ORCPT ); Tue, 15 Sep 2020 05:46:43 -0400 Received: from e123331-lin.nice.arm.com (adsl-245.46.190.88.tellas.gr [46.190.88.245]) (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 914AF21D1B; Tue, 15 Sep 2020 09:46:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1600163202; bh=cNdO1RxZG+tw0j5g016UG+BLJjOlAdG+2AMC813YY04=; h=From:To:Cc:Subject:Date:From; b=y8+tQZ1K0l1H/8Qak53ZiK9TMmQX33Xn+lEbRCj2Yvv5FQiAfu8GzAxAhPxd/lqpG oUW5fkMUE+otMH4pcw1rJHyEdpLRf2VwqhURizf29WFmrbc4aJR/HLqWmaaacv7t4J bAi5pDG/iCBBZdPFMl4rZqcqRI+m3DnifVYf28Ng= From: Ard Biesheuvel To: linux-crypto@vger.kernel.org Cc: herbert@gondor.apana.org.au, Ard Biesheuvel , Nick Desaulniers , Stefan Agner , Peter Smith Subject: [PATCH] crypto: arm/sha256-neon - avoid ADRL pseudo instruction Date: Tue, 15 Sep 2020 12:46:19 +0300 Message-Id: <20200915094619.32548-1-ardb@kernel.org> X-Mailer: git-send-email 2.17.1 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org The ADRL pseudo instruction is not an architectural construct, but a convenience macro that was supported by the ARM proprietary assembler and adopted by binutils GAS as well, but only when assembling in 32-bit ARM mode. Therefore, it can only be used in assembler code that is known to assemble in ARM mode only, but as it turns out, the Clang assembler does not implement ADRL at all, and so it is better to get rid of it entirely. So replace the ADRL instruction with a ADR instruction that refers to a nearer symbol, and apply the delta explicitly using an additional instruction. Cc: Nick Desaulniers Cc: Stefan Agner Cc: Peter Smith Signed-off-by: Ard Biesheuvel --- I will leave it to the Clang folks to decide whether this needs to be backported and how far, but a Cc stable seems reasonable here. arch/arm/crypto/sha256-armv4.pl | 4 ++-- arch/arm/crypto/sha256-core.S_shipped | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm/crypto/sha256-armv4.pl b/arch/arm/crypto/sha256-armv4.pl index 9f96ff48e4a8..8aeb2e82f915 100644 --- a/arch/arm/crypto/sha256-armv4.pl +++ b/arch/arm/crypto/sha256-armv4.pl @@ -175,7 +175,6 @@ $code=<<___; #else .syntax unified # ifdef __thumb2__ -# define adrl adr .thumb # else .code 32 @@ -471,7 +470,8 @@ sha256_block_data_order_neon: stmdb sp!,{r4-r12,lr} sub $H,sp,#16*4+16 - adrl $Ktbl,K256 + adr $Ktbl,.Lsha256_block_data_order + add $Ktbl,$Ktbl,#K256-.Lsha256_block_data_order bic $H,$H,#15 @ align for 128-bit stores mov $t2,sp mov sp,$H @ alloca diff --git a/arch/arm/crypto/sha256-core.S_shipped b/arch/arm/crypto/sha256-core.S_shipped index ea04b2ab0c33..1861c4e8a5ba 100644 --- a/arch/arm/crypto/sha256-core.S_shipped +++ b/arch/arm/crypto/sha256-core.S_shipped @@ -56,7 +56,6 @@ #else .syntax unified # ifdef __thumb2__ -# define adrl adr .thumb # else .code 32 @@ -1885,7 +1884,8 @@ sha256_block_data_order_neon: stmdb sp!,{r4-r12,lr} sub r11,sp,#16*4+16 - adrl r14,K256 + adr r14,.Lsha256_block_data_order + add r14,r14,#K256-.Lsha256_block_data_order bic r11,r11,#15 @ align for 128-bit stores mov r12,sp mov sp,r11 @ alloca -- 2.17.1