Add ARMV8_SHA512 detection for Fuchsia. See https://fuchsia-review.googlesource.com/c/fuchsia/+/624684. Also pick up the new, more specific, name for ZX_ARM64_FEATURE_ISA_SHA2. Update-Note: This CL is written assuming we can just rely on the SDK changes. Per go/fuchsia-sdk-age, this seems fairly safe. If this file fails to build due to missing symbols, update your project's Fuchsia SDK. If this blocks something, let us know. Change-Id: I28b0c234b577cc0de90e7ef096c15bb75a4ba501 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/50926 Reviewed-by: Adam Langley <agl@google.com>
diff --git a/crypto/cpu_aarch64_fuchsia.c b/crypto/cpu_aarch64_fuchsia.c index 4d97f03..64bc448 100644 --- a/crypto/cpu_aarch64_fuchsia.c +++ b/crypto/cpu_aarch64_fuchsia.c
@@ -29,8 +29,8 @@ uint32_t hwcap; zx_status_t rc = zx_system_get_features(ZX_FEATURE_KIND_CPU, &hwcap); if (rc != ZX_OK || (hwcap & ZX_ARM64_FEATURE_ISA_ASIMD) == 0) { - // Matching OpenSSL, if NEON/ASIMD is missing, don't report other features - // either. + // If NEON/ASIMD is missing, don't report other features either. This + // matches OpenSSL, and the other features depend on SIMD registers. return; } @@ -45,12 +45,12 @@ if (hwcap & ZX_ARM64_FEATURE_ISA_SHA1) { OPENSSL_armcap_P |= ARMV8_SHA1; } - if (hwcap & ZX_ARM64_FEATURE_ISA_SHA2) { + if (hwcap & ZX_ARM64_FEATURE_ISA_SHA256) { OPENSSL_armcap_P |= ARMV8_SHA256; } - // As of writing, Fuchsia does not have a flag for ARMv8.2 SHA-512 - // extensions. When it does, add it here. See - // https://bugs.fuchsia.dev/p/fuchsia/issues/detail?id=90759. + if (hwcap & ZX_ARM64_FEATURE_ISA_SHA512) { + OPENSSL_armcap_P |= ARMV8_SHA512; + } } #endif // OPENSSL_AARCH64 && OPENSSL_FUCHSIA && !OPENSSL_STATIC_ARMCAP