summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Weisgerber <naddy@openbsd.org>2022-06-30 13:42:18 +0000
committerChristian Weisgerber <naddy@openbsd.org>2022-06-30 13:42:18 +0000
commit11162bb63127e63ec46e7593bd8a7211c120fbda (patch)
treefc032666dfccf929c484baa97c2b88a666a829fc
parentc5478d7ab181babd2daca9fe79386732e100d6df (diff)
downloadnss-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.c16
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