]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
IBM zSystems: Hardcode HWCAP_S390_VXRS
authorIlya Leoshkevich <iii@linux.ibm.com>
Fri, 9 Aug 2024 08:29:20 +0000 (10:29 +0200)
committerHans Kristian Rosbach <hk-github@circlestorm.org>
Tue, 17 Sep 2024 12:05:18 +0000 (14:05 +0200)
Compiling zlib-ng with glibc 2.17 (minimum version still supported by
crosstool-ng) fails due to the lack of HWCAP_S390_VX - it was
introduced in glibc 2.23.

Strictly speaking, this is a problem with the feature detection logic
in cmake. However, it's not worth disabling the s390x vectorized CRC32
if the hwcap constant is missing and the compiler intrinsics are
available.

So fix by hardcoding the constant. It's a part of the kernel ABI,
which does not change.

arch/s390/s390_features.c
cmake/detect-intrinsics.cmake

index 82901060ebbb2dbc63dcba388b18d3bfc78e37f8..0f2d9e10f0a1dbaadfbce1d96fe3a15187024341 100644 (file)
@@ -6,7 +6,7 @@
 #endif
 
 #ifndef HWCAP_S390_VXRS
-#define HWCAP_S390_VXRS HWCAP_S390_VX
+#define HWCAP_S390_VXRS (1 << 11)
 #endif
 
 void Z_INTERNAL s390_check_features(struct s390_cpu_features *features) {
index fd1e68ea1c31e52ef97a5f8b4f8fbd30d9244009..81032cb6def690774edf16cc132022c38b3f8679 100644 (file)
@@ -444,7 +444,7 @@ macro(check_s390_intrinsics)
     check_c_source_compiles(
         "#include <sys/auxv.h>
         #ifndef HWCAP_S390_VXRS
-        #define HWCAP_S390_VXRS HWCAP_S390_VX
+        #define HWCAP_S390_VXRS (1 << 11)
         #endif
         int main() {
             return (getauxval(AT_HWCAP) & HWCAP_S390_VXRS);