From 1910ca83d8dc865a98c59cdf92ce72a8c7abea9c Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Tue, 22 Oct 2019 23:03:28 +0200 Subject: [PATCH] Detect NEON and ARMCRYPTO on ARM32 Which doesn't mean that the compiler will support these opcodes, so we need to autoconf magic as well. --- src/libsodium/sodium/runtime.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libsodium/sodium/runtime.c b/src/libsodium/sodium/runtime.c index c24494ce..0eb7d460 100644 --- a/src/libsodium/sodium/runtime.c +++ b/src/libsodium/sodium/runtime.c @@ -71,6 +71,8 @@ _sodium_runtime_arm_cpu_features(CPUFeatures * const cpu_features) (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) != 0x0; #elif defined(HAVE_GETAUXVAL) && defined(AT_HWCAP) && defined(__aarch64__) cpu_features->has_neon = (getauxval(AT_HWCAP) & (1L << 1)) != 0; +#elif defined(HAVE_GETAUXVAL) && defined(AT_HWCAP) && defined(__arm__) + cpu_features->has_neon = (getauxval(AT_HWCAP) & (1L << 12)) != 0; #endif if (cpu_features->has_neon == 0) { @@ -98,6 +100,8 @@ _sodium_runtime_arm_cpu_features(CPUFeatures * const cpu_features) (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_AES) != 0x0; #elif defined(HAVE_GETAUXVAL) && defined(AT_HWCAP) && defined(__aarch64__) cpu_features->has_armcrypto_aes = (getauxval(AT_HWCAP) & (1L << 3)) != 0; +#elif defined(HAVE_GETAUXVAL) && defined(AT_HWCAP) && defined(__arm__) + cpu_features->has_armcrypto_aes = (getauxval(AT_HWCAP2) & (1L << 0)) != 0; #endif return 0;