From 4f7784cd1e8882d60955cfd4549949e10a83c779 Mon Sep 17 00:00:00 2001 From: Jack Lloyd Date: Sun, 11 Jan 2026 08:14:05 -0500 Subject: [PATCH] Add a BOTAN_FN_ISA flag for CPU RNG function This seems to be needed for ARMv8.5 RNG support (#5228) --- src/lib/rng/processor_rng/info.txt | 6 ------ src/lib/rng/processor_rng/processor_rng.cpp | 3 ++- src/lib/utils/isa_extn.h | 2 ++ 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/lib/rng/processor_rng/info.txt b/src/lib/rng/processor_rng/info.txt index 3429af09577..eb2d5ef51b8 100644 --- a/src/lib/rng/processor_rng/info.txt +++ b/src/lib/rng/processor_rng/info.txt @@ -17,12 +17,6 @@ ppc64 processor_rng.h - -x86_32:rdrand -x86_64:rdrand -ppc64:power9 - - cpuid diff --git a/src/lib/rng/processor_rng/processor_rng.cpp b/src/lib/rng/processor_rng/processor_rng.cpp index 4711e1f12fc..31557543fa8 100644 --- a/src/lib/rng/processor_rng/processor_rng.cpp +++ b/src/lib/rng/processor_rng/processor_rng.cpp @@ -7,6 +7,7 @@ #include #include +#include #include #include @@ -48,7 +49,7 @@ typedef uint32_t hwrng_output; typedef uint64_t hwrng_output; #endif -hwrng_output read_hwrng(bool& success) { +hwrng_output BOTAN_FN_ISA_RNG read_hwrng(bool& success) { hwrng_output output = 0; // NOLINT(*-const-correctness) clang-tidy doesn't understand inline asm success = false; diff --git a/src/lib/utils/isa_extn.h b/src/lib/utils/isa_extn.h index 667e71e8421..e78564fa70a 100644 --- a/src/lib/utils/isa_extn.h +++ b/src/lib/utils/isa_extn.h @@ -28,6 +28,7 @@ #define BOTAN_FN_ISA_SHANI BOTAN_FUNC_ISA("sha,ssse3,sse4.1") #define BOTAN_FN_ISA_SHA512 BOTAN_FUNC_ISA("sha512,avx2") #define BOTAN_FN_ISA_BMI2 BOTAN_FUNC_ISA("bmi,bmi2") + #define BOTAN_FN_ISA_RNG BOTAN_FUNC_ISA("rdrnd") #define BOTAN_FN_ISA_SSE2 BOTAN_FUNC_ISA("sse2") #define BOTAN_FN_ISA_AVX2 BOTAN_FUNC_ISA("avx2") #define BOTAN_FN_ISA_AVX2_BMI2 BOTAN_FUNC_ISA("avx2,bmi,bmi2") @@ -64,6 +65,7 @@ #define BOTAN_FN_ISA_SIMD_4X32 BOTAN_FUNC_ISA("altivec") #define BOTAN_FN_ISA_CLMUL BOTAN_FUNC_ISA("vsx,crypto") #define BOTAN_FN_ISA_AES BOTAN_FUNC_ISA("vsx,crypto") + #define BOTAN_FN_ISA_RNG BOTAN_FUNC_ISA("cpu=power9") #endif