From: Mika Lindqvist Date: Wed, 21 Jul 2021 16:26:43 +0000 (+0300) Subject: [arm] Disable ACLE, UNALIGNED_OK and UNALIGNED64_OK on armv7 and earlier. X-Git-Tag: 2.1.0-beta1~524 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=747ffeb043c68349fb8cbb7f04f9b934a8f2e2e7;p=thirdparty%2Fzlib-ng.git [arm] Disable ACLE, UNALIGNED_OK and UNALIGNED64_OK on armv7 and earlier. * armv7 has partial support for unaligned reads, but compiler might use instructions that do not support unaligned accesses --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c4523b3d..b4eeaba81 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -234,7 +234,7 @@ endif() # Set architecture alignment requirements if(WITH_UNALIGNED) - if(BASEARCH_ARM_FOUND OR (BASEARCH_PPC_FOUND AND "${ARCH}" MATCHES "powerpc64le") OR BASEARCH_X86_FOUND) + if((BASEARCH_ARM_FOUND AND NOT "${ARCH}" MATCHES "armv[2-7]") OR (BASEARCH_PPC_FOUND AND "${ARCH}" MATCHES "powerpc64le") OR BASEARCH_X86_FOUND) if(NOT DEFINED UNALIGNED_OK) set(UNALIGNED_OK TRUE) endif() @@ -245,7 +245,9 @@ if(WITH_UNALIGNED) endif() if(BASEARCH_ARM_FOUND) if(NOT DEFINED UNALIGNED64_OK) - if("${ARCH}" MATCHES "(arm(v[8-9])?|aarch64)") + if("${ARCH}" MATCHES "armv[2-7]") + set(UNALIGNED64_OK FALSE) + elseif("${ARCH}" MATCHES "(arm(v[8-9])?|aarch64)") set(UNALIGNED64_OK TRUE) endif() endif() @@ -579,7 +581,7 @@ if(WITH_OPTIM) endif() list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/arm.h) list(APPEND ZLIB_ARCH_SRCS ${ARCHDIR}/armfeature.c) - if(WITH_ACLE AND NOT MSVC) + if(WITH_ACLE AND NOT MSVC AND NOT "${ARCH}" MATCHES "armv[2-7]") check_acle_intrinsics() if(HAVE_ACLE_INTRIN) add_definitions(-DARM_ACLE_CRC_HASH) @@ -1336,7 +1338,8 @@ add_feature_info(WITH_MAINTAINER_WARNINGS WITH_MAINTAINER_WARNINGS "Build with p add_feature_info(WITH_CODE_COVERAGE WITH_CODE_COVERAGE "Enable code coverage reporting") add_feature_info(WITH_INFLATE_STRICT WITH_INFLATE_STRICT "Build with strict inflate distance checking") add_feature_info(WITH_INFLATE_ALLOW_INVALID_DIST WITH_INFLATE_ALLOW_INVALID_DIST "Build with zero fill for inflate invalid distances") -add_feature_info(WITH_UNALIGNED WITH_UNALIGNED "Support unaligned reads on platforms that support it") +add_feature_info(WITH_UNALIGNED UNALIGNED_OK "Support unaligned reads on platforms that support it") +add_feature_info(WITH_UNALIGNED64 UNALIGNED64_OK "Support unaligned 64-bit reads on platforms that support it") if(BASEARCH_ARM_FOUND) add_feature_info(WITH_ACLE WITH_ACLE "Build with ACLE")