Commit-ID: 706b158559e41ba8d8ea83f3e468466e64769058 Gitweb: http://git.kernel.org/tip/706b158559e41ba8d8ea83f3e468466e64769058 Author: Jan Beulich <JBeulich@xxxxxxxx> AuthorDate: Thu, 27 Feb 2014 08:47:02 +0000 Committer: H. Peter Anvin <hpa@xxxxxxxxxxxxxxx> CommitDate: Wed, 19 Mar 2014 16:25:03 -0700 x86, hash: Fix build failure with older binutils Just like for other ISA extension instruction uses we should check whether the assembler actually supports them. The fallback here simply is to encode an instruction with fixed operands (%eax and %ecx). [ hpa: tagging for -stable as a build fix ] Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Link: http://lkml.kernel.org/r/530F0996020000780011FBE7@xxxxxxxxxxxxxxxxxxxx Cc: Francesco Fusco <ffusco@xxxxxxxxxx> Cc: Daniel Borkmann <dborkman@xxxxxxxxxx> Cc: Thomas Graf <tgraf@xxxxxxxxxx> Cc: David S. Miller <davem@xxxxxxxxxxxxx> Signed-off-by: H. Peter Anvin <hpa@xxxxxxxxxxxxxxx> Cc: <stable@xxxxxxxxxxxxxxx> # v3.14 --- arch/x86/Makefile | 1 + arch/x86/lib/hash.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/arch/x86/Makefile b/arch/x86/Makefile index eeda43a..f8842c4 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -152,6 +152,7 @@ cfi-sections := $(call as-instr,.cfi_sections .debug_frame,-DCONFIG_AS_CFI_SECTI # does binutils support specific instructions? asinstr := $(call as-instr,fxsaveq (%rax),-DCONFIG_AS_FXSAVEQ=1) +asinstr += $(call as-instr,crc32l %eax$(comma)%eax,-DCONFIG_AS_CRC32=1) avx_instr := $(call as-instr,vxorps %ymm0$(comma)%ymm1$(comma)%ymm2,-DCONFIG_AS_AVX=1) avx2_instr :=$(call as-instr,vpbroadcastb %xmm0$(comma)%ymm1,-DCONFIG_AS_AVX2=1) diff --git a/arch/x86/lib/hash.c b/arch/x86/lib/hash.c index 3056702..060cc44 100644 --- a/arch/x86/lib/hash.c +++ b/arch/x86/lib/hash.c @@ -39,7 +39,11 @@ static inline u32 crc32_u32(u32 crc, u32 val) { +#ifdef CONFIG_AS_CRC32 asm ("crc32l %1,%0\n" : "+r" (crc) : "rm" (val)); +#else + asm (".byte 0xf2, 0x0f, 0x38, 0xf1, 0xc1" : "+a" (crc) : "c" (val)); +#endif return crc; } -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |