VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Crypto/cpu.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/Crypto/cpu.c')
-rw-r--r--src/Crypto/cpu.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/Crypto/cpu.c b/src/Crypto/cpu.c
index 85278a92..0f1ba54d 100644
--- a/src/Crypto/cpu.c
+++ b/src/Crypto/cpu.c
@@ -453,46 +453,48 @@ void DisableCPUExtendedFeatures ()
g_hasSSE2 = 0;
g_hasISSE = 0;
g_hasMMX = 0;
g_hasSSE2 = 0;
g_hasISSE = 0;
g_hasMMX = 0;
g_hasAVX = 0;
g_hasAVX2 = 0;
g_hasBMI2 = 0;
g_hasSSE42 = 0;
g_hasSSE41 = 0;
g_hasSSSE3 = 0;
g_hasAESNI = 0;
g_hasCLMUL = 0;
g_hasSHA256 = 0;
}
#endif
#if CRYPTOPP_BOOL_ARMV8
-
-volatile int g_hasAESARM = 0;
-
+#if defined(__linux__) && defined(__aarch64__)
+#include <sys/auxv.h>
#ifndef HWCAP_AES
# define HWCAP_AES (1 << 3)
#endif
+#endif
+
+volatile int g_hasAESARM = 0;
inline int CPU_QueryAES()
{
#if defined(CRYPTOPP_ARM_AES_AVAILABLE)
#if defined(__linux__) && defined(__aarch64__)
if ((getauxval(AT_HWCAP) & HWCAP_AES) != 0)
return 1;
#elif defined(__APPLE__) && defined(__aarch64__)
// Apple Sillcon (M1) and later
return 1;
#elif defined(_WIN32) && defined(_M_ARM64)
#ifdef TC_WINDOWS_DRIVER
if (ExIsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE) != 0)
return 1;
#else
if (IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE) != 0)
return 1;
#endif
#endif
return 0;