From ccf8eebc5f1020533ab317cdc9633cc7d5165316 Mon Sep 17 00:00:00 2001 From: JacobBarthelmeh Date: Tue, 26 Aug 2025 14:02:27 -0600 Subject: [PATCH] update for cpuid atomic refactor --- wolfcrypt/src/cpuid.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/wolfcrypt/src/cpuid.c b/wolfcrypt/src/cpuid.c index 73b3a2925..5c3e333ff 100644 --- a/wolfcrypt/src/cpuid.c +++ b/wolfcrypt/src/cpuid.c @@ -41,17 +41,21 @@ */ void cpuid_set_flags(void) { - if (!cpuid_check) { - cpuid_flags |= CPUID_AVX1; - cpuid_flags |= CPUID_AVX2; - cpuid_flags |= CPUID_BMI2; - cpuid_flags |= CPUID_RDSEED; - cpuid_flags |= CPUID_AESNI; - cpuid_flags |= CPUID_ADX; - cpuid_flags |= CPUID_MOVBE; - cpuid_flags |= CPUID_BMI1; + if (WOLFSSL_ATOMIC_LOAD(cpuid_flags) == WC_CPUID_INITIALIZER) { + cpuid_flags_t new_cpuid_flags = 0, + old_cpuid_flags = WC_CPUID_INITIALIZER; - cpuid_check = 1; + new_cpuid_flags |= CPUID_AVX1; + new_cpuid_flags |= CPUID_AVX2; + new_cpuid_flags |= CPUID_BMI2; + new_cpuid_flags |= CPUID_RDSEED; + new_cpuid_flags |= CPUID_AESNI; + new_cpuid_flags |= CPUID_ADX; + new_cpuid_flags |= CPUID_MOVBE; + new_cpuid_flags |= CPUID_BMI1; + + (void)wolfSSL_Atomic_Uint_CompareExchange + (&cpuid_flags, &old_cpuid_flags, new_cpuid_flags); } }