Revert "liblzma: Add ARM64 CRC32 instruction support detection on OpenBSD"

This reverts commit dc03f6290f.

OpenBSD 7.6 will support elf_aux_info(3), and the detection code used
on FreeBSD will work on OpenBSD 7.6 too. Keep things simpler and drop
the OpenBSD-specific sysctl() method.

Thanks to Christian Weisgerber.
This commit is contained in:
Lasse Collin 2024-07-19 19:42:26 +03:00
parent 7c292dd0bf
commit f7103c2c2a
4 changed files with 0 additions and 31 deletions

View File

@ -1306,12 +1306,6 @@ if(XZ_ARM64_CRC32)
check_symbol_exists(elf_aux_info sys/auxv.h HAVE_ELF_AUX_INFO) check_symbol_exists(elf_aux_info sys/auxv.h HAVE_ELF_AUX_INFO)
tuklib_add_definition_if(liblzma HAVE_ELF_AUX_INFO) tuklib_add_definition_if(liblzma HAVE_ELF_AUX_INFO)
# OpenBSD has a sysctl() based method. The macro CPU_ID_AA64ISAR0
# is used to detect when it's available.
check_symbol_exists(CPU_ID_AA64ISAR0 machine/cpu.h
HAVE_CPU_ID_AA64ISAR0)
tuklib_add_definition_if(liblzma HAVE_CPU_ID_AA64ISAR0)
# sysctlbyname("hw.optional.armv8_crc32", ...) is supported on Darwin # sysctlbyname("hw.optional.armv8_crc32", ...) is supported on Darwin
# (macOS, iOS, etc.). Note that sysctlbyname() is supported on FreeBSD, # (macOS, iOS, etc.). Note that sysctlbyname() is supported on FreeBSD,
# NetBSD, and possibly others too but the string is specific to # NetBSD, and possibly others too but the string is specific to

View File

@ -1096,23 +1096,14 @@ int main(void)
]) ])
# Check for ARM64 CRC32 instruction runtime detection. # Check for ARM64 CRC32 instruction runtime detection.
#
# getauxval() is supported on Linux, elf_aux_info() on FreeBSD, and # getauxval() is supported on Linux, elf_aux_info() on FreeBSD, and
# sysctlbyname("hw.optional.armv8_crc32", ...) is supported on Darwin # sysctlbyname("hw.optional.armv8_crc32", ...) is supported on Darwin
# (macOS, iOS, etc.). Note that sysctlbyname() is supported on FreeBSD, # (macOS, iOS, etc.). Note that sysctlbyname() is supported on FreeBSD,
# NetBSD, and possibly others too but the string is specific to Apple OSes. # NetBSD, and possibly others too but the string is specific to Apple OSes.
# The C code is responsible for checking defined(__APPLE__) before using # The C code is responsible for checking defined(__APPLE__) before using
# sysctlbyname("hw.optional.armv8_crc32", ...). # sysctlbyname("hw.optional.armv8_crc32", ...).
#
# sysctl() with CPU_ID_AA64ISAR0 is used on OpenBSD.
AS_IF([test "x$enable_arm64_crc32" = xyes], [ AS_IF([test "x$enable_arm64_crc32" = xyes], [
AC_CHECK_FUNCS([getauxval elf_aux_info sysctlbyname], [break]) AC_CHECK_FUNCS([getauxval elf_aux_info sysctlbyname], [break])
AC_CHECK_DECL([CPU_ID_AA64ISAR0],
[AC_DEFINE([HAVE_CPU_ID_AA64ISAR0], [1],
[Define to 1 if CPU_ID_AA64ISAR0 is defined
in <machine/cpu.h>.])],
[],
[#include <machine/cpu.h>])
]) ])

View File

@ -26,11 +26,6 @@
#if defined(CRC32_GENERIC) && defined(CRC32_ARCH_OPTIMIZED) #if defined(CRC32_GENERIC) && defined(CRC32_ARCH_OPTIMIZED)
# if defined(HAVE_GETAUXVAL) || defined(HAVE_ELF_AUX_INFO) # if defined(HAVE_GETAUXVAL) || defined(HAVE_ELF_AUX_INFO)
# include <sys/auxv.h> # include <sys/auxv.h>
# elif defined(HAVE_CPU_ID_AA64ISAR0)
# include <sys/types.h>
# include <sys/sysctl.h>
# include <machine/cpu.h>
# include <machine/armreg.h>
# elif defined(_WIN32) # elif defined(_WIN32)
# include <processthreadsapi.h> # include <processthreadsapi.h>
# elif defined(__APPLE__) && defined(HAVE_SYSCTLBYNAME) # elif defined(__APPLE__) && defined(HAVE_SYSCTLBYNAME)
@ -120,16 +115,6 @@ is_arch_extension_supported(void)
return (feature_flags & HWCAP_CRC32) != 0; return (feature_flags & HWCAP_CRC32) != 0;
#elif defined(HAVE_CPU_ID_AA64ISAR0)
const int isar0_mib[] = { CTL_MACHDEP, CPU_ID_AA64ISAR0 };
uint64_t isar0;
size_t len = sizeof(isar0);
if (sysctl(isar0_mib, 2, &isar0, &len, NULL, 0) == -1)
return false;
return ID_AA64ISAR0_CRC32(isar0) >= ID_AA64ISAR0_CRC32_BASE;
#elif defined(_WIN32) #elif defined(_WIN32)
return IsProcessorFeaturePresent( return IsProcessorFeaturePresent(
PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE); PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE);

View File

@ -92,7 +92,6 @@ extern const uint64_t lzma_crc64_table[4][256];
// Keep this in sync with changes to crc32_arm64.h // Keep this in sync with changes to crc32_arm64.h
#if defined(_WIN32) || defined(HAVE_GETAUXVAL) \ #if defined(_WIN32) || defined(HAVE_GETAUXVAL) \
|| defined(HAVE_ELF_AUX_INFO) \ || defined(HAVE_ELF_AUX_INFO) \
|| defined(HAVE_CPU_ID_AA64ISAR0) \
|| (defined(__APPLE__) && defined(HAVE_SYSCTLBYNAME)) || (defined(__APPLE__) && defined(HAVE_SYSCTLBYNAME))
# define CRC_ARM64_RUNTIME_DETECTION 1 # define CRC_ARM64_RUNTIME_DETECTION 1
#endif #endif