On Sun, Apr 03, 2022 at 02:01:47AM +0200, Christian Weisgerber wrote:
> The diff below should enable aarch64 hardware crypto support in
> security/gnutls.
> 
> The regression test results are the same before and after on my
> OverDrive 1000 (cpu0: CRC32,SHA2,SHA1,AES+PMULL,ASID16).
> (3 failures, 2 of which are due to unportable diff(1) options...)
> 
> ok?

OK.

> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/security/gnutls/Makefile,v
> retrieving revision 1.173
> diff -u -p -r1.173 Makefile
> --- Makefile  18 Mar 2022 23:22:23 -0000      1.173
> +++ Makefile  2 Apr 2022 23:56:35 -0000
> @@ -2,6 +2,7 @@ COMMENT=              GNU Transport Layer Security l
>  
>  V=                   3.7.4
>  DISTNAME=            gnutls-${V}
> +REVISION=            0
>  EXTRACT_SUFX=                .tar.xz
>  
>  CATEGORIES=          security
> Index: patches/patch-lib_accelerated_aarch64_aarch64-common_c
> ===================================================================
> RCS file: patches/patch-lib_accelerated_aarch64_aarch64-common_c
> diff -N patches/patch-lib_accelerated_aarch64_aarch64-common_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-lib_accelerated_aarch64_aarch64-common_c    2 Apr 2022 
> 23:56:35 -0000
> @@ -0,0 +1,42 @@
> +Index: lib/accelerated/aarch64/aarch64-common.c
> +
> +Enable aarch64 hardware crypto support.
> +
> +--- lib/accelerated/aarch64/aarch64-common.c.orig
> ++++ lib/accelerated/aarch64/aarch64-common.c
> +@@ -41,6 +41,10 @@
> + # ifdef AT_HWCAP
> + #  define USE_AUXVAL
> + # endif
> ++#elif defined(__OpenBSD__)
> ++# include <sys/sysctl.h>
> ++# include <machine/cpu.h>
> ++# include <machine/armreg.h>
> + #endif
> + 
> + #if defined(__GNUC__)
> +@@ -93,6 +97,24 @@ static void discover_caps(unsigned int *caps)
> +     if (c & HWCAP_SHA2)
> +             *caps |= ARMV8_SHA256;
> +     if (c & HWCAP_SHA512)
> ++            *caps |= ARMV8_SHA512;
> ++#elif defined(__OpenBSD__)
> ++    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
> + }
> -- 
> Christian "naddy" Weisgerber                          na...@mips.inka.de
> 

-- 
Antoine

Reply via email to