diff --git a/src/backend/cpu/platform/BasicCpuInfo_arm.cpp b/src/backend/cpu/platform/BasicCpuInfo_arm.cpp index 318928cd9..ad24e10b0 100644 --- a/src/backend/cpu/platform/BasicCpuInfo_arm.cpp +++ b/src/backend/cpu/platform/BasicCpuInfo_arm.cpp @@ -28,7 +28,15 @@ #if __ARM_FEATURE_CRYPTO && !defined(__APPLE__) # include <sys/auxv.h> -# include <asm/hwcap.h> +# ifndef __FreeBSD__ +# include <asm/hwcap.h> +# else +# include <stdint.h> +# include <machine/armreg.h> +# ifndef ID_AA64ISAR0_AES_VAL +# define ID_AA64ISAR0_AES_VAL ID_AA64ISAR0_AES +# endif +# endif #endif @@ -62,10 +70,13 @@ xmrig::BasicCpuInfo::BasicCpuInfo() : # endif # if __ARM_FEATURE_CRYPTO -# if !defined(__APPLE__) - m_flags.set(FLAG_AES, getauxval(AT_HWCAP) & HWCAP_AES); -# else +# if defined(__APPLE__) m_flags.set(FLAG_AES, true); +# elif defined(__FreeBSD__) + uint64_t isar0 = READ_SPECIALREG(id_aa64isar0_el1); + m_flags.set(FLAG_AES, ID_AA64ISAR0_AES_VAL(isar0) >= ID_AA64ISAR0_AES_BASE); +# else + m_flags.set(FLAG_AES, getauxval(AT_HWCAP) & HWCAP_AES); # endif # endif