From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ard Biesheuvel Subject: Re: [PATCH] crypto: arm64/crc32 - detect crc32 support in assembler Date: Fri, 27 Jan 2017 10:43:16 +0000 Message-ID: References: <20170127104039.29351-1-mbrugger@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: Herbert Xu , Catalin Marinas , Will Deacon , Alexander Graf , "linux-kernel@vger.kernel.org" , "linux-crypto@vger.kernel.org" , Yazen Ghannam , "David S. Miller" , "linux-arm-kernel@lists.infradead.org" To: Matthias Brugger Return-path: In-Reply-To: <20170127104039.29351-1-mbrugger@suse.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org List-Id: linux-crypto.vger.kernel.org Hi Mathias, On 27 January 2017 at 10:40, Matthias Brugger wrote: > Older compilers may not be able to detect the crc32 extended cpu type. What do you mean 'detect'? Could you describe the failure in more detail please? > Anyway only inline assembler code is used, which gets passed to the > assembler. This patch moves the crc detection to the assembler. > > Suggested-by: Alexander Graf > Signed-off-by: Matthias Brugger > --- > arch/arm64/crypto/Makefile | 2 -- > arch/arm64/crypto/crc32-arm64.c | 3 +++ > 2 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/arch/arm64/crypto/Makefile b/arch/arm64/crypto/Makefile > index aa8888d7b744..0d779dac75cd 100644 > --- a/arch/arm64/crypto/Makefile > +++ b/arch/arm64/crypto/Makefile > @@ -48,8 +48,6 @@ CFLAGS_aes-glue-ce.o := -DUSE_V8_CRYPTO_EXTENSIONS > > obj-$(CONFIG_CRYPTO_CRC32_ARM64) += crc32-arm64.o > > -CFLAGS_crc32-arm64.o := -mcpu=generic+crc > - > $(obj)/aes-glue-%.o: $(src)/aes-glue.c FORCE > $(call if_changed_rule,cc_o_c) > > diff --git a/arch/arm64/crypto/crc32-arm64.c b/arch/arm64/crypto/crc32-arm64.c > index 6a37c3c6b11d..10f5dd075323 100644 > --- a/arch/arm64/crypto/crc32-arm64.c > +++ b/arch/arm64/crypto/crc32-arm64.c > @@ -29,6 +29,9 @@ MODULE_AUTHOR("Yazen Ghannam "); > MODULE_DESCRIPTION("CRC32 and CRC32C using optional ARMv8 instructions"); > MODULE_LICENSE("GPL v2"); > > +/* Request crc extension capabilities from the assembler */ > +asm(".arch_extension crc"); > + Will should confirm, but I think this is a recent feature in GAS for AArch64, so this may break older toolchains as well. > #define CRC32X(crc, value) __asm__("crc32x %w[c], %w[c], %x[v]":[c]"+r"(crc):[v]"r"(value)) > #define CRC32W(crc, value) __asm__("crc32w %w[c], %w[c], %w[v]":[c]"+r"(crc):[v]"r"(value)) > #define CRC32H(crc, value) __asm__("crc32h %w[c], %w[c], %w[v]":[c]"+r"(crc):[v]"r"(value)) > -- > 2.11.0 >