From e63dca12779869c6e795550dc38a54377e0aaba3 Mon Sep 17 00:00:00 2001 From: Karel Miko Date: Wed, 22 Apr 2026 19:24:09 +0200 Subject: [PATCH] GCM + FreeBSD + HWCAP_PMULL --- src/encauth/gcm/gcm_gf_mult.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/encauth/gcm/gcm_gf_mult.c b/src/encauth/gcm/gcm_gf_mult.c index c9f968ecb..778ce2da4 100644 --- a/src/encauth/gcm/gcm_gf_mult.c +++ b/src/encauth/gcm/gcm_gf_mult.c @@ -153,9 +153,11 @@ static void s_gcm_gf_mult_pclmul(const unsigned char *a, const unsigned char *b, #include #elif defined(_WIN32) #include -#else +#elif defined(__linux__) #include #include +#elif defined(__FreeBSD__) +#include #endif static LTC_INLINE int s_pmull_is_supported(void) @@ -171,9 +173,14 @@ static LTC_INLINE int s_pmull_is_supported(void) } #elif defined (_WIN32) is_supported = IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE); -#else +#elif defined(__linux__) unsigned long hwcaps = getauxval(AT_HWCAP); is_supported = (hwcaps & HWCAP_PMULL); +#elif defined(__FreeBSD__) + unsigned long hwcaps = 0; + if (elf_aux_info(AT_HWCAP, &hwcaps, sizeof(hwcaps)) == 0) { + is_supported = (hwcaps & HWCAP_PMULL) != 0; + } #endif initialized = 1; }