diff options
author | Christian Weisgerber <naddy@openbsd.org> | 2022-06-30 13:42:18 +0000 |
---|---|---|
committer | Christian Weisgerber <naddy@openbsd.org> | 2022-06-30 13:42:18 +0000 |
commit | 11162bb63127e63ec46e7593bd8a7211c120fbda (patch) | |
tree | fc032666dfccf929c484baa97c2b88a666a829fc | |
parent | c5478d7ab181babd2daca9fe79386732e100d6df (diff) | |
download | nss-hg-11162bb63127e63ec46e7593bd8a7211c120fbda.tar.gz |
Bug 1762831: Enable aarch64 hardware crypto support on OpenBSD. r=nss-reviewers,bbeurdouche
Submitted on behalf of Landry Breuil & Christian Weisgerber.
Differential Revision: https://phabricator.services.mozilla.com/D150752
-rw-r--r-- | lib/freebl/blinit.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/freebl/blinit.c b/lib/freebl/blinit.c index 82375fdbf..e13844929 100644 --- a/lib/freebl/blinit.c +++ b/lib/freebl/blinit.c @@ -205,6 +205,12 @@ static unsigned long getauxval(unsigned long type) #endif #endif /* defined(__FreeBSD__) */ +#if defined(__OpenBSD__) +#include <sys/sysctl.h> +#include <machine/cpu.h> +#include <machine/armreg.h> +#endif /* defined(__OpenBSD__) */ + void CheckARMSupport() { @@ -231,6 +237,16 @@ CheckARMSupport() arm_sha1_support_ = ID_AA64ISAR0_SHA1_VAL(isar0) >= ID_AA64ISAR0_SHA1_BASE; arm_sha2_support_ = ID_AA64ISAR0_SHA2_VAL(isar0) >= ID_AA64ISAR0_SHA2_BASE; } +#elif defined(__OpenBSD__) + const int isar0_mib[] = { CTL_MACHDEP, CPU_ID_AA64ISAR0 }; + uint64_t isar0; + size_t len = sizeof(isar0); + if (sysctl(isar0_mib, 2, &isar0, &len, NULL, 0) < 0) + return; + arm_aes_support_ = ID_AA64ISAR0_AES(isar0) >= ID_AA64ISAR0_AES_BASE; + arm_pmull_support_ = ID_AA64ISAR0_AES(isar0) >= ID_AA64ISAR0_AES_PMULL; + arm_sha1_support_ = ID_AA64ISAR0_SHA1(isar0) >= ID_AA64ISAR0_SHA1_BASE; + arm_sha2_support_ = ID_AA64ISAR0_SHA2(isar0) >= ID_AA64ISAR0_SHA2_BASE; #elif defined(__ARM_FEATURE_CRYPTO) /* * Although no feature detection, default compiler option allows ARM |