From: Brad Smith Date: Sat, 16 Jul 2022 02:44:03 +0000 (-0400) Subject: accelerated: aarch64: add OpenBSD/aarch64 support X-Git-Tag: 3.7.7~9^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a7516cb32f356ea18dca6889105a47fa9265905e;p=thirdparty%2Fgnutls.git accelerated: aarch64: add OpenBSD/aarch64 support Signed-off-by: Brad Smith --- diff --git a/lib/accelerated/aarch64/aarch64-common.c b/lib/accelerated/aarch64/aarch64-common.c index 82cd8715fe..cadb436bb7 100644 --- a/lib/accelerated/aarch64/aarch64-common.c +++ b/lib/accelerated/aarch64/aarch64-common.c @@ -41,6 +41,10 @@ # ifdef AT_HWCAP # define USE_AUXVAL # endif +#elif defined(__OpenBSD__) +# include +# include +# include #endif #if defined(__GNUC__) @@ -94,6 +98,24 @@ static void discover_caps(unsigned int *caps) *caps |= ARMV8_SHA256; if (c & HWCAP_SHA512) *caps |= ARMV8_SHA512; +#elif defined(__OpenBSD__) && defined(CPU_ID_AA64ISAR0) + const int isar0_mib[] = { CTL_MACHDEP, CPU_ID_AA64ISAR0 }; + uint64_t isar0; + size_t len = sizeof(isar0); + + *caps |= ARMV7_NEON; + if (sysctl(isar0_mib, 2, &isar0, &len, NULL, 0) < 0) + return; + if (ID_AA64ISAR0_AES(isar0) >= ID_AA64ISAR0_AES_BASE) + *caps |= ARMV8_AES; + if (ID_AA64ISAR0_AES(isar0) >= ID_AA64ISAR0_AES_PMULL) + *caps |= ARMV8_PMULL; + if (ID_AA64ISAR0_SHA1(isar0) >= ID_AA64ISAR0_SHA1_BASE) + *caps |= ARMV8_SHA1; + if (ID_AA64ISAR0_SHA2(isar0) >= ID_AA64ISAR0_SHA2_BASE) + *caps |= ARMV8_SHA256; + if (ID_AA64ISAR0_SHA2(isar0) >= ID_AA64ISAR0_SHA2_512) + *caps |= ARMV8_SHA512; #endif }