Module Name: src Committed By: riastradh Date: Tue Jun 30 20:32:11 UTC 2020
Modified Files: src/distrib/sets/lists/debug: mi src/distrib/sets/lists/tests: mi src/etc/mtree: NetBSD.dist.tests src/sys/crypto/aes: aes_bear.c aes_ct.c aes_selftest.c src/sys/crypto/aes/arch/arm: aes_armv8.c aes_neon.c aes_neon_impl.c aes_neon_subr.c src/sys/crypto/aes/arch/x86: aes_ni.c aes_sse2.c aes_sse2_impl.c aes_sse2_subr.c aes_ssse3.c aes_ssse3_impl.c aes_ssse3_subr.c aes_via.c src/tests/sys: Makefile Added Files: src/tests/sys/crypto: Makefile src/tests/sys/crypto/aes: Makefile t_aes.c Log Message: New test sys/crypto/aes/t_aes. Runs aes_selftest on all kernel AES implementations supported on the current hardware, not just the preferred one. To generate a diff of this commit: cvs rdiff -u -r1.321 -r1.322 src/distrib/sets/lists/debug/mi cvs rdiff -u -r1.866 -r1.867 src/distrib/sets/lists/tests/mi cvs rdiff -u -r1.170 -r1.171 src/etc/mtree/NetBSD.dist.tests cvs rdiff -u -r1.1 -r1.2 src/sys/crypto/aes/aes_bear.c \ src/sys/crypto/aes/aes_selftest.c cvs rdiff -u -r1.2 -r1.3 src/sys/crypto/aes/aes_ct.c cvs rdiff -u -r1.2 -r1.3 src/sys/crypto/aes/arch/arm/aes_armv8.c \ src/sys/crypto/aes/arch/arm/aes_neon.c cvs rdiff -u -r1.1 -r1.2 src/sys/crypto/aes/arch/arm/aes_neon_impl.c \ src/sys/crypto/aes/arch/arm/aes_neon_subr.c cvs rdiff -u -r1.1 -r1.2 src/sys/crypto/aes/arch/x86/aes_ni.c \ src/sys/crypto/aes/arch/x86/aes_sse2.c \ src/sys/crypto/aes/arch/x86/aes_sse2_subr.c \ src/sys/crypto/aes/arch/x86/aes_ssse3.c \ src/sys/crypto/aes/arch/x86/aes_ssse3_impl.c \ src/sys/crypto/aes/arch/x86/aes_ssse3_subr.c cvs rdiff -u -r1.2 -r1.3 src/sys/crypto/aes/arch/x86/aes_sse2_impl.c \ src/sys/crypto/aes/arch/x86/aes_via.c cvs rdiff -u -r1.3 -r1.4 src/tests/sys/Makefile cvs rdiff -u -r0 -r1.1 src/tests/sys/crypto/Makefile cvs rdiff -u -r0 -r1.1 src/tests/sys/crypto/aes/Makefile \ src/tests/sys/crypto/aes/t_aes.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/distrib/sets/lists/debug/mi diff -u src/distrib/sets/lists/debug/mi:1.321 src/distrib/sets/lists/debug/mi:1.322 --- src/distrib/sets/lists/debug/mi:1.321 Tue Jun 30 16:09:40 2020 +++ src/distrib/sets/lists/debug/mi Tue Jun 30 20:32:10 2020 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.321 2020/06/30 16:09:40 jruoho Exp $ +# $NetBSD: mi,v 1.322 2020/06/30 20:32:10 riastradh Exp $ ./etc/mtree/set.debug comp-sys-root ./usr/lib comp-sys-usr compatdir ./usr/lib/i18n/libBIG5_g.a comp-c-debuglib debuglib,compatfile @@ -2408,6 +2408,9 @@ ./usr/libdata/debug/usr/tests/rump/rumpvfs/t_etfs.debug tests-syscall-debug debug,atf,rump ./usr/libdata/debug/usr/tests/rump/rumpvfs/t_p2kifs.debug tests-syscall-debug debug,atf,rump ./usr/libdata/debug/usr/tests/sys tests-sys-debug debug,atf,compattestfile +./usr/libdata/debug/usr/tests/sys/crypto tests-sys-debug debug,atf,compattestfile +./usr/libdata/debug/usr/tests/sys/crypto/aes tests-sys-debug debug,atf,compattestfile +./usr/libdata/debug/usr/tests/sys/crypto/aes/t_aes.debug tests-sys-debug debug,atf,compattestfile ./usr/libdata/debug/usr/tests/sys/net tests-sys-debug debug,atf,compattestfile ./usr/libdata/debug/usr/tests/sys/net/t_print.debug tests-sys-debug debug,atf,compattestfile ./usr/libdata/debug/usr/tests/sys/netatalk tests-sys-debug debug,atf,compattestfile Index: src/distrib/sets/lists/tests/mi diff -u src/distrib/sets/lists/tests/mi:1.866 src/distrib/sets/lists/tests/mi:1.867 --- src/distrib/sets/lists/tests/mi:1.866 Tue Jun 30 16:09:40 2020 +++ src/distrib/sets/lists/tests/mi Tue Jun 30 20:32:10 2020 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.866 2020/06/30 16:09:40 jruoho Exp $ +# $NetBSD: mi,v 1.867 2020/06/30 20:32:10 riastradh Exp $ # # Note: don't delete entries from here - mark them as "obsolete" instead. # @@ -182,6 +182,8 @@ ./usr/libdata/debug/usr/tests/sbin tests-sbin-tests compattestfile,atf ./usr/libdata/debug/usr/tests/sbin/resize_ffs tests-sbin-tests compattestfile,atf ./usr/libdata/debug/usr/tests/sys tests-sys-debug compattestfile,atf +./usr/libdata/debug/usr/tests/sys/crypto tests-sys-debug compattestfile,atf +./usr/libdata/debug/usr/tests/sys/crypto/aes tests-sys-debug compattestfile,atf ./usr/libdata/debug/usr/tests/sys/net tests-sys-debug compattestfile,atf ./usr/libdata/debug/usr/tests/sys/netatalk tests-sys-debug compattestfile,atf ./usr/libdata/debug/usr/tests/sys/netinet tests-sys-debug compattestfile,atf @@ -4061,6 +4063,13 @@ ./usr/tests/sys tests-sys-tests compattestfile,atf ./usr/tests/sys/Atffile tests-sys-tests compattestfile,atf ./usr/tests/sys/Kyuafile tests-sys-tests compattestfile,atf,kyua +./usr/tests/sys/crypto tests-sys-tests compattestfile,atf +./usr/tests/sys/crypto/Atffile tests-sys-tests compattestfile,atf +./usr/tests/sys/crypto/Kyuafile tests-sys-tests compattestfile,atf,kyua +./usr/tests/sys/crypto/aes tests-sys-tests compattestfile,atf +./usr/tests/sys/crypto/aes/Atffile tests-sys-tests compattestfile,atf +./usr/tests/sys/crypto/aes/Kyuafile tests-sys-tests compattestfile,atf,kyua +./usr/tests/sys/crypto/aes/t_aes tests-sys-tests compattestfile,atf ./usr/tests/sys/net tests-sys-tests compattestfile,atf ./usr/tests/sys/net/Atffile tests-sys-tests compattestfile,atf ./usr/tests/sys/net/Kyuafile tests-sys-tests compattestfile,atf,kyua Index: src/etc/mtree/NetBSD.dist.tests diff -u src/etc/mtree/NetBSD.dist.tests:1.170 src/etc/mtree/NetBSD.dist.tests:1.171 --- src/etc/mtree/NetBSD.dist.tests:1.170 Tue Jun 30 14:30:49 2020 +++ src/etc/mtree/NetBSD.dist.tests Tue Jun 30 20:32:11 2020 @@ -1,4 +1,4 @@ -# $NetBSD: NetBSD.dist.tests,v 1.170 2020/06/30 14:30:49 jruoho Exp $ +# $NetBSD: NetBSD.dist.tests,v 1.171 2020/06/30 20:32:11 riastradh Exp $ ./usr/libdata/debug/usr/tests ./usr/libdata/debug/usr/tests/atf @@ -162,6 +162,8 @@ ./usr/libdata/debug/usr/tests/sbin ./usr/libdata/debug/usr/tests/sbin/resize_ffs ./usr/libdata/debug/usr/tests/sys +./usr/libdata/debug/usr/tests/sys/crypto +./usr/libdata/debug/usr/tests/sys/crypto/aes ./usr/libdata/debug/usr/tests/sys/net ./usr/libdata/debug/usr/tests/sys/netatalk ./usr/libdata/debug/usr/tests/sys/netinet @@ -386,6 +388,8 @@ ./usr/tests/share/examples/lutok ./usr/tests/share/mk ./usr/tests/sys +./usr/tests/sys/crypto +./usr/tests/sys/crypto/aes ./usr/tests/sys/net ./usr/tests/sys/netatalk ./usr/tests/sys/netinet Index: src/sys/crypto/aes/aes_bear.c diff -u src/sys/crypto/aes/aes_bear.c:1.1 src/sys/crypto/aes/aes_bear.c:1.2 --- src/sys/crypto/aes/aes_bear.c:1.1 Mon Jun 29 23:27:52 2020 +++ src/sys/crypto/aes/aes_bear.c Tue Jun 30 20:32:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: aes_bear.c,v 1.1 2020/06/29 23:27:52 riastradh Exp $ */ +/* $NetBSD: aes_bear.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -27,11 +27,20 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: aes_bear.c,v 1.1 2020/06/29 23:27:52 riastradh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aes_bear.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $"); #include <sys/types.h> #include <sys/endian.h> + +#ifdef _KERNEL #include <sys/systm.h> +#else +#include <assert.h> +#include <err.h> +#include <string.h> +#define KASSERT assert +#define panic(fmt, args...) err(1, fmt, args) +#endif #include <crypto/aes/aes.h> #include <crypto/aes/aes_bear.h> Index: src/sys/crypto/aes/aes_selftest.c diff -u src/sys/crypto/aes/aes_selftest.c:1.1 src/sys/crypto/aes/aes_selftest.c:1.2 --- src/sys/crypto/aes/aes_selftest.c:1.1 Mon Jun 29 23:27:52 2020 +++ src/sys/crypto/aes/aes_selftest.c Tue Jun 30 20:32:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: aes_selftest.c,v 1.1 2020/06/29 23:27:52 riastradh Exp $ */ +/* $NetBSD: aes_selftest.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -27,13 +27,44 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: aes_selftest.c,v 1.1 2020/06/29 23:27:52 riastradh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aes_selftest.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $"); + +#ifdef _KERNEL #include <sys/types.h> #include <sys/systm.h> #include <lib/libkern/libkern.h> +#else /* !_KERNEL */ + +#include <stdint.h> +#include <stdio.h> +#include <string.h> + +static void +hexdump(int (*prf)(const char *, ...) __printflike(1,2), const char *prefix, + const void *buf, size_t len) +{ + const uint8_t *p = buf; + size_t i; + + (*prf)("%s (%zu bytes)\n", prefix, len); + for (i = 0; i < len; i++) { + if (i % 16 == 8) + (*prf)(" "); + else + (*prf)(" "); + (*prf)("%02hhx", p[i]); + if ((i + 1) % 16 == 0) + (*prf)("\n"); + } + if (i % 16) + (*prf)("\n"); +} + +#endif /* _KERNEL */ + #include <crypto/aes/aes.h> static const unsigned aes_keybytes[] __unused = { 16, 24, 32 }; Index: src/sys/crypto/aes/aes_ct.c diff -u src/sys/crypto/aes/aes_ct.c:1.2 src/sys/crypto/aes/aes_ct.c:1.3 --- src/sys/crypto/aes/aes_ct.c:1.2 Mon Jun 29 23:36:59 2020 +++ src/sys/crypto/aes/aes_ct.c Tue Jun 30 20:32:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: aes_ct.c,v 1.2 2020/06/29 23:36:59 riastradh Exp $ */ +/* $NetBSD: aes_ct.c,v 1.3 2020/06/30 20:32:11 riastradh Exp $ */ /* * Copyright (c) 2016 Thomas Pornin <por...@bolet.org> @@ -25,11 +25,15 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: aes_ct.c,v 1.2 2020/06/29 23:36:59 riastradh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aes_ct.c,v 1.3 2020/06/30 20:32:11 riastradh Exp $"); #include <sys/types.h> +#ifdef _KERNEL #include <lib/libkern/libkern.h> +#else +#include <string.h> +#endif #include <crypto/aes/aes_bear.h> Index: src/sys/crypto/aes/arch/arm/aes_armv8.c diff -u src/sys/crypto/aes/arch/arm/aes_armv8.c:1.2 src/sys/crypto/aes/arch/arm/aes_armv8.c:1.3 --- src/sys/crypto/aes/arch/arm/aes_armv8.c:1.2 Mon Jun 29 23:53:12 2020 +++ src/sys/crypto/aes/arch/arm/aes_armv8.c Tue Jun 30 20:32:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: aes_armv8.c,v 1.2 2020/06/29 23:53:12 riastradh Exp $ */ +/* $NetBSD: aes_armv8.c,v 1.3 2020/06/30 20:32:11 riastradh Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -27,19 +27,35 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: aes_armv8.c,v 1.2 2020/06/29 23:53:12 riastradh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aes_armv8.c,v 1.3 2020/06/30 20:32:11 riastradh Exp $"); +#ifdef _KERNEL #include <sys/types.h> #include <sys/proc.h> #include <sys/systm.h> +#else +#include <assert.h> +#include <err.h> +#include <stdint.h> +#include <string.h> +#define KASSERT assert +#define panic(fmt, args...) err(1, fmt, args) +#endif #include <crypto/aes/aes.h> #include <crypto/aes/arch/arm/aes_armv8.h> -#include <arm/fpu.h> - #include <aarch64/armreg.h> +#ifdef _KERNEL +#include <arm/fpu.h> +#else +#include <sys/sysctl.h> +#include <stddef.h> +#define fpu_kern_enter() ((void)0) +#define fpu_kern_leave() ((void)0) +#endif + static void aesarmv8_setenckey(struct aesenc *enc, const uint8_t key[static 16], uint32_t nrounds) @@ -226,7 +242,18 @@ aesarmv8_probe(void) int result = 0; /* Verify that the CPU supports AES. */ +#ifdef _KERNEL id = &curcpu()->ci_id; +#else + struct aarch64_sysctl_cpu_id ids; + size_t idlen; + id = &ids; + idlen = sizeof ids; + if (sysctlbyname("machdep.cpu0.cpu_id", id, &idlen, NULL, 0)) + return -1; + if (idlen != sizeof ids) + return -1; +#endif switch (__SHIFTOUT(id->ac_aa64isar0, ID_AA64ISAR0_EL1_AES)) { case ID_AA64ISAR0_EL1_AES_AES: case ID_AA64ISAR0_EL1_AES_PMUL: Index: src/sys/crypto/aes/arch/arm/aes_neon.c diff -u src/sys/crypto/aes/arch/arm/aes_neon.c:1.2 src/sys/crypto/aes/arch/arm/aes_neon.c:1.3 --- src/sys/crypto/aes/arch/arm/aes_neon.c:1.2 Mon Jun 29 23:57:56 2020 +++ src/sys/crypto/aes/arch/arm/aes_neon.c Tue Jun 30 20:32:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: aes_neon.c,v 1.2 2020/06/29 23:57:56 riastradh Exp $ */ +/* $NetBSD: aes_neon.c,v 1.3 2020/06/30 20:32:11 riastradh Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -39,11 +39,16 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: aes_neon.c,v 1.2 2020/06/29 23:57:56 riastradh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aes_neon.c,v 1.3 2020/06/30 20:32:11 riastradh Exp $"); #include <sys/types.h> +#ifdef _KERNEL #include <sys/systm.h> +#else +#include <err.h> +#define panic(fmt, args...) err(1, fmt, ##args) +#endif #include "aes_neon_impl.h" Index: src/sys/crypto/aes/arch/arm/aes_neon_impl.c diff -u src/sys/crypto/aes/arch/arm/aes_neon_impl.c:1.1 src/sys/crypto/aes/arch/arm/aes_neon_impl.c:1.2 --- src/sys/crypto/aes/arch/arm/aes_neon_impl.c:1.1 Mon Jun 29 23:56:31 2020 +++ src/sys/crypto/aes/arch/arm/aes_neon_impl.c Tue Jun 30 20:32:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: aes_neon_impl.c,v 1.1 2020/06/29 23:56:31 riastradh Exp $ */ +/* $NetBSD: aes_neon_impl.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: aes_neon_impl.c,v 1.1 2020/06/29 23:56:31 riastradh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aes_neon_impl.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $"); #include <sys/types.h> #include <sys/proc.h> @@ -35,13 +35,21 @@ __KERNEL_RCSID(1, "$NetBSD: aes_neon_imp #include <crypto/aes/aes.h> #include <crypto/aes/arch/arm/aes_neon.h> -#include <arm/fpu.h> - #ifdef __aarch64__ #include <aarch64/armreg.h> -#else +#endif + +#ifdef _KERNEL +#ifndef __aarch64__ #include <arm/locore.h> #endif +#include <arm/fpu.h> +#else +#include <sys/sysctl.h> +#include <stddef.h> +#define fpu_kern_enter() ((void)0) +#define fpu_kern_leave() ((void)0) +#endif static void aes_neon_setenckey_impl(struct aesenc *enc, const uint8_t *key, @@ -145,7 +153,18 @@ aes_neon_probe(void) /* Verify that the CPU supports NEON. */ #ifdef __aarch64__ +#ifdef _KERNEL id = &curcpu()->ci_id; +#else + struct aarch64_sysctl_cpu_id ids; + size_t idlen; + id = &ids; + idlen = sizeof ids; + if (sysctlbyname("machdep.cpu0.cpu_id", id, &idlen, NULL, 0)) + return -1; + if (idlen != sizeof ids) + return -1; +#endif switch (__SHIFTOUT(id->ac_aa64pfr0, ID_AA64PFR0_EL1_ADVSIMD)) { case ID_AA64PFR0_EL1_ADV_SIMD_IMPL: break; @@ -153,8 +172,17 @@ aes_neon_probe(void) return -1; } #else +#ifdef _KERNEL if (!cpu_neon_present) return -1; +#else + int neon; + size_t neonlen = sizeof neon; + if (0 && sysctlbyname("machdep.neon_present", &neon, &neonlen, NULL, 0)) + return -1; + if (0 && !neon) + return -1; +#endif #endif fpu_kern_enter(); Index: src/sys/crypto/aes/arch/arm/aes_neon_subr.c diff -u src/sys/crypto/aes/arch/arm/aes_neon_subr.c:1.1 src/sys/crypto/aes/arch/arm/aes_neon_subr.c:1.2 --- src/sys/crypto/aes/arch/arm/aes_neon_subr.c:1.1 Mon Jun 29 23:56:31 2020 +++ src/sys/crypto/aes/arch/arm/aes_neon_subr.c Tue Jun 30 20:32:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: aes_neon_subr.c,v 1.1 2020/06/29 23:56:31 riastradh Exp $ */ +/* $NetBSD: aes_neon_subr.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -27,11 +27,17 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: aes_neon_subr.c,v 1.1 2020/06/29 23:56:31 riastradh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aes_neon_subr.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $"); +#ifdef _KERNEL #include <sys/systm.h> - #include <lib/libkern/libkern.h> +#else +#include <assert.h> +#include <inttypes.h> +#include <stdio.h> +#define KASSERT assert +#endif #include <crypto/aes/arch/arm/aes_neon.h> Index: src/sys/crypto/aes/arch/x86/aes_ni.c diff -u src/sys/crypto/aes/arch/x86/aes_ni.c:1.1 src/sys/crypto/aes/arch/x86/aes_ni.c:1.2 --- src/sys/crypto/aes/arch/x86/aes_ni.c:1.1 Mon Jun 29 23:29:40 2020 +++ src/sys/crypto/aes/arch/x86/aes_ni.c Tue Jun 30 20:32:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: aes_ni.c,v 1.1 2020/06/29 23:29:40 riastradh Exp $ */ +/* $NetBSD: aes_ni.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -27,17 +27,32 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: aes_ni.c,v 1.1 2020/06/29 23:29:40 riastradh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aes_ni.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $"); +#ifdef _KERNEL #include <sys/types.h> #include <sys/systm.h> +#else +#include <assert.h> +#include <err.h> +#include <stdint.h> +#include <string.h> +#define KASSERT assert +#define panic(fmt, args...) err(1, fmt, args) +#endif #include <crypto/aes/aes.h> #include <crypto/aes/arch/x86/aes_ni.h> +#ifdef _KERNEL #include <x86/cpuvar.h> #include <x86/fpu.h> #include <x86/specialreg.h> +#else +#include <cpuid.h> +#define fpu_kern_enter() ((void)0) +#define fpu_kern_leave() ((void)0) +#endif static void aesni_setenckey(struct aesenc *enc, const uint8_t key[static 16], @@ -224,8 +239,16 @@ aesni_probe(void) int result = 0; /* Verify that the CPU supports AES-NI. */ +#ifdef _KERNEL if ((cpu_feature[1] & CPUID2_AES) == 0) return -1; +#else + unsigned eax, ebx, ecx, edx; + if (!__get_cpuid(1, &eax, &ebx, &ecx, &edx)) + return -1; + if ((ecx & bit_AES) == 0) + return -1; +#endif fpu_kern_enter(); Index: src/sys/crypto/aes/arch/x86/aes_sse2.c diff -u src/sys/crypto/aes/arch/x86/aes_sse2.c:1.1 src/sys/crypto/aes/arch/x86/aes_sse2.c:1.2 --- src/sys/crypto/aes/arch/x86/aes_sse2.c:1.1 Mon Jun 29 23:47:54 2020 +++ src/sys/crypto/aes/arch/x86/aes_sse2.c Tue Jun 30 20:32:11 2020 @@ -23,11 +23,16 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: aes_sse2.c,v 1.1 2020/06/29 23:47:54 riastradh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aes_sse2.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $"); #include <sys/types.h> +#ifdef _KERNEL #include <lib/libkern/libkern.h> +#else +#include <stdint.h> +#include <string.h> +#endif #include "aes_sse2_impl.h" Index: src/sys/crypto/aes/arch/x86/aes_sse2_subr.c diff -u src/sys/crypto/aes/arch/x86/aes_sse2_subr.c:1.1 src/sys/crypto/aes/arch/x86/aes_sse2_subr.c:1.2 --- src/sys/crypto/aes/arch/x86/aes_sse2_subr.c:1.1 Mon Jun 29 23:50:05 2020 +++ src/sys/crypto/aes/arch/x86/aes_sse2_subr.c Tue Jun 30 20:32:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: aes_sse2_subr.c,v 1.1 2020/06/29 23:50:05 riastradh Exp $ */ +/* $NetBSD: aes_sse2_subr.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -27,11 +27,20 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: aes_sse2_subr.c,v 1.1 2020/06/29 23:50:05 riastradh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aes_sse2_subr.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $"); +#ifdef _KERNEL #include <sys/systm.h> - #include <lib/libkern/libkern.h> +#else +#include <err.h> +#include <assert.h> +#include <inttypes.h> +#include <stdio.h> +#include <string.h> +#define KASSERT assert +#define panic(fmt, args...) err(1, fmt, ##args) +#endif #include <crypto/aes/aes.h> #include <crypto/aes/arch/x86/aes_sse2.h> Index: src/sys/crypto/aes/arch/x86/aes_ssse3.c diff -u src/sys/crypto/aes/arch/x86/aes_ssse3.c:1.1 src/sys/crypto/aes/arch/x86/aes_ssse3.c:1.2 --- src/sys/crypto/aes/arch/x86/aes_ssse3.c:1.1 Mon Jun 29 23:51:35 2020 +++ src/sys/crypto/aes/arch/x86/aes_ssse3.c Tue Jun 30 20:32:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: aes_ssse3.c,v 1.1 2020/06/29 23:51:35 riastradh Exp $ */ +/* $NetBSD: aes_ssse3.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -39,11 +39,16 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: aes_ssse3.c,v 1.1 2020/06/29 23:51:35 riastradh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aes_ssse3.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $"); #include <sys/types.h> +#ifdef _KERNEL #include <sys/systm.h> +#else +#include <err.h> +#define panic(fmt, args...) err(1, fmt, ##args) +#endif #include "aes_ssse3_impl.h" Index: src/sys/crypto/aes/arch/x86/aes_ssse3_impl.c diff -u src/sys/crypto/aes/arch/x86/aes_ssse3_impl.c:1.1 src/sys/crypto/aes/arch/x86/aes_ssse3_impl.c:1.2 --- src/sys/crypto/aes/arch/x86/aes_ssse3_impl.c:1.1 Mon Jun 29 23:51:35 2020 +++ src/sys/crypto/aes/arch/x86/aes_ssse3_impl.c Tue Jun 30 20:32:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: aes_ssse3_impl.c,v 1.1 2020/06/29 23:51:35 riastradh Exp $ */ +/* $NetBSD: aes_ssse3_impl.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -27,15 +27,21 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: aes_ssse3_impl.c,v 1.1 2020/06/29 23:51:35 riastradh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aes_ssse3_impl.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $"); #include <crypto/aes/aes.h> #include <crypto/aes/arch/x86/aes_ssse3.h> +#ifdef _KERNEL #include <x86/cpu.h> #include <x86/cpuvar.h> #include <x86/fpu.h> #include <x86/specialreg.h> +#else +#include <cpuid.h> +#define fpu_kern_enter() ((void)0) +#define fpu_kern_leave() ((void)0) +#endif static void aes_ssse3_setenckey_impl(struct aesenc *enc, const uint8_t *key, @@ -135,6 +141,7 @@ aes_ssse3_probe(void) int result = 0; /* Verify that the CPU supports SSE, SSE2, SSE3, and SSSE3. */ +#ifdef _KERNEL if (!i386_has_sse) return -1; if (!i386_has_sse2) @@ -143,6 +150,19 @@ aes_ssse3_probe(void) return -1; if (((cpu_feature[1]) & CPUID2_SSSE3) == 0) return -1; +#else + unsigned eax, ebx, ecx, edx; + if (!__get_cpuid(1, &eax, &ebx, &ecx, &edx)) + return -1; + if ((edx & bit_SSE) == 0) + return -1; + if ((edx & bit_SSE2) == 0) + return -1; + if ((ecx & bit_SSE3) == 0) + return -1; + if ((ecx & bit_SSSE3) == 0) + return -1; +#endif fpu_kern_enter(); result = aes_ssse3_selftest(); Index: src/sys/crypto/aes/arch/x86/aes_ssse3_subr.c diff -u src/sys/crypto/aes/arch/x86/aes_ssse3_subr.c:1.1 src/sys/crypto/aes/arch/x86/aes_ssse3_subr.c:1.2 --- src/sys/crypto/aes/arch/x86/aes_ssse3_subr.c:1.1 Mon Jun 29 23:51:35 2020 +++ src/sys/crypto/aes/arch/x86/aes_ssse3_subr.c Tue Jun 30 20:32:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: aes_ssse3_subr.c,v 1.1 2020/06/29 23:51:35 riastradh Exp $ */ +/* $NetBSD: aes_ssse3_subr.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -27,11 +27,17 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: aes_ssse3_subr.c,v 1.1 2020/06/29 23:51:35 riastradh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aes_ssse3_subr.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $"); +#ifdef _KERNEL #include <sys/systm.h> - #include <lib/libkern/libkern.h> +#else +#include <assert.h> +#include <inttypes.h> +#include <stdio.h> +#define KASSERT assert +#endif #include "aes_ssse3_impl.h" Index: src/sys/crypto/aes/arch/x86/aes_sse2_impl.c diff -u src/sys/crypto/aes/arch/x86/aes_sse2_impl.c:1.2 src/sys/crypto/aes/arch/x86/aes_sse2_impl.c:1.3 --- src/sys/crypto/aes/arch/x86/aes_sse2_impl.c:1.2 Mon Jun 29 23:50:05 2020 +++ src/sys/crypto/aes/arch/x86/aes_sse2_impl.c Tue Jun 30 20:32:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: aes_sse2_impl.c,v 1.2 2020/06/29 23:50:05 riastradh Exp $ */ +/* $NetBSD: aes_sse2_impl.c,v 1.3 2020/06/30 20:32:11 riastradh Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: aes_sse2_impl.c,v 1.2 2020/06/29 23:50:05 riastradh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aes_sse2_impl.c,v 1.3 2020/06/30 20:32:11 riastradh Exp $"); #include <sys/types.h> #include <sys/endian.h> @@ -35,10 +35,16 @@ __KERNEL_RCSID(1, "$NetBSD: aes_sse2_imp #include <crypto/aes/aes.h> #include <crypto/aes/arch/x86/aes_sse2.h> +#ifdef _KERNEL #include <x86/cpu.h> #include <x86/cpuvar.h> #include <x86/fpu.h> #include <x86/specialreg.h> +#else +#include <cpuid.h> +#define fpu_kern_enter() ((void)0) +#define fpu_kern_leave() ((void)0) +#endif static void aes_sse2_setenckey_impl(struct aesenc *enc, const uint8_t *key, @@ -142,10 +148,20 @@ aes_sse2_probe(void) int result = 0; /* Verify that the CPU supports SSE and SSE2. */ +#ifdef _KERNEL if (!i386_has_sse) return -1; if (!i386_has_sse2) return -1; +#else + unsigned eax, ebx, ecx, edx; + if (!__get_cpuid(1, &eax, &ebx, &ecx, &edx)) + return -1; + if ((edx & bit_SSE) == 0) + return -1; + if ((edx & bit_SSE2) == 0) + return -1; +#endif fpu_kern_enter(); result = aes_sse2_selftest(); Index: src/sys/crypto/aes/arch/x86/aes_via.c diff -u src/sys/crypto/aes/arch/x86/aes_via.c:1.2 src/sys/crypto/aes/arch/x86/aes_via.c:1.3 --- src/sys/crypto/aes/arch/x86/aes_via.c:1.2 Mon Jun 29 23:41:35 2020 +++ src/sys/crypto/aes/arch/x86/aes_via.c Tue Jun 30 20:32:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: aes_via.c,v 1.2 2020/06/29 23:41:35 riastradh Exp $ */ +/* $NetBSD: aes_via.c,v 1.3 2020/06/30 20:32:11 riastradh Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -27,20 +27,51 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: aes_via.c,v 1.2 2020/06/29 23:41:35 riastradh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aes_via.c,v 1.3 2020/06/30 20:32:11 riastradh Exp $"); +#ifdef _KERNEL #include <sys/types.h> #include <sys/evcnt.h> #include <sys/systm.h> +#else +#include <assert.h> +#include <err.h> +#include <stdint.h> +#include <string.h> +#define KASSERT assert +#define panic(fmt, args...) err(1, fmt, args) +struct evcnt { uint64_t ev_count; }; +#define EVCNT_INITIALIZER(a,b,c,d) {0} +#define EVCNT_ATTACH_STATIC(name) static char name##_attach __unused = 0 +#endif #include <crypto/aes/aes.h> #include <crypto/aes/aes_bear.h> +#ifdef _KERNEL #include <x86/cpufunc.h> #include <x86/cpuvar.h> #include <x86/fpu.h> #include <x86/specialreg.h> #include <x86/via_padlock.h> +#else +#include <cpuid.h> +#define fpu_kern_enter() ((void)0) +#define fpu_kern_leave() ((void)0) +#define C3_CRYPT_CWLO_ROUND_M 0x0000000f +#define C3_CRYPT_CWLO_ALG_M 0x00000070 +#define C3_CRYPT_CWLO_ALG_AES 0x00000000 +#define C3_CRYPT_CWLO_KEYGEN_M 0x00000080 +#define C3_CRYPT_CWLO_KEYGEN_HW 0x00000000 +#define C3_CRYPT_CWLO_KEYGEN_SW 0x00000080 +#define C3_CRYPT_CWLO_NORMAL 0x00000000 +#define C3_CRYPT_CWLO_INTERMEDIATE 0x00000100 +#define C3_CRYPT_CWLO_ENCRYPT 0x00000000 +#define C3_CRYPT_CWLO_DECRYPT 0x00000200 +#define C3_CRYPT_CWLO_KEY128 0x0000000a /* 128bit, 10 rds */ +#define C3_CRYPT_CWLO_KEY192 0x0000040c /* 192bit, 12 rds */ +#define C3_CRYPT_CWLO_KEY256 0x0000080e /* 256bit, 15 rds */ +#endif static void aesvia_reload_keys(void) @@ -647,8 +678,34 @@ aesvia_probe(void) { /* Verify that the CPU advertises VIA ACE support. */ +#ifdef _KERNEL if ((cpu_feature[4] & CPUID_VIA_HAS_ACE) == 0) return -1; +#else + /* + * From the VIA PadLock Programming Guide: + * http://linux.via.com.tw/support/beginDownload.action?eleid=181&fid=261 + */ + unsigned eax, ebx, ecx, edx; + if (!__get_cpuid(0, &eax, &ebx, &ecx, &edx)) + return -1; + if (ebx != signature_CENTAUR_ebx || + ecx != signature_CENTAUR_ecx || + edx != signature_CENTAUR_edx) + return -1; + if (eax < 0xc0000000) + return -1; + if (!__get_cpuid(0xc0000000, &eax, &ebx, &ecx, &edx)) + return -1; + if (eax < 0xc0000001) + return -1; + if (!__get_cpuid(0xc0000001, &eax, &ebx, &ecx, &edx)) + return -1; + /* Check whether ACE or ACE2 is both supported and enabled. */ + if ((edx & 0x000000c0) != 0x000000c0 || + (edx & 0x00000300) != 0x00000300) + return -1; +#endif /* Verify that our XTS tweak update logic works. */ if (aesvia_xts_update_selftest()) Index: src/tests/sys/Makefile diff -u src/tests/sys/Makefile:1.3 src/tests/sys/Makefile:1.4 --- src/tests/sys/Makefile:1.3 Tue Dec 2 19:48:21 2014 +++ src/tests/sys/Makefile Tue Jun 30 20:32:11 2020 @@ -1,9 +1,14 @@ -# $NetBSD: Makefile,v 1.3 2014/12/02 19:48:21 christos Exp $ +# $NetBSD: Makefile,v 1.4 2020/06/30 20:32:11 riastradh Exp $ .include <bsd.own.mk> TESTSDIR= ${TESTSBASE}/sys -TESTS_SUBDIRS+= net netatalk netinet netinet6 rc +TESTS_SUBDIRS+= crypto +TESTS_SUBDIRS+= net +TESTS_SUBDIRS+= netatalk +TESTS_SUBDIRS+= netinet +TESTS_SUBDIRS+= netinet6 +TESTS_SUBDIRS+= rc .include <bsd.test.mk> Added files: Index: src/tests/sys/crypto/Makefile diff -u /dev/null src/tests/sys/crypto/Makefile:1.1 --- /dev/null Tue Jun 30 20:32:12 2020 +++ src/tests/sys/crypto/Makefile Tue Jun 30 20:32:11 2020 @@ -0,0 +1,9 @@ +# $NetBSD: Makefile,v 1.1 2020/06/30 20:32:11 riastradh Exp $ + +.include <bsd.own.mk> + +TESTSDIR= ${TESTSBASE}/sys/crypto + +TESTS_SUBDIRS+= aes + +.include <bsd.test.mk> Index: src/tests/sys/crypto/aes/Makefile diff -u /dev/null src/tests/sys/crypto/aes/Makefile:1.1 --- /dev/null Tue Jun 30 20:32:12 2020 +++ src/tests/sys/crypto/aes/Makefile Tue Jun 30 20:32:11 2020 @@ -0,0 +1,66 @@ +# $NetBSD: Makefile,v 1.1 2020/06/30 20:32:11 riastradh Exp $ + +.include <bsd.own.mk> + +TESTSDIR= ${TESTSBASE}/sys/crypto/aes + +TESTS_C= t_aes + +.PATH: ${NETBSDSRCDIR}/sys/crypto/aes +CPPFLAGS+= -I${NETBSDSRCDIR}/sys + +SRCS.t_aes+= t_aes.c + +SRCS.t_aes+= aes_bear.c +SRCS.t_aes+= aes_ct.c +SRCS.t_aes+= aes_ct_dec.c +SRCS.t_aes+= aes_ct_enc.c +SRCS.t_aes+= aes_selftest.c + +.if !empty(MACHINE_ARCH:Mearmv7*) || !empty(MACHINE_ARCH:Maarch64*) + +.PATH: ${NETBSDSRCDIR}/sys/crypto/aes/arch/arm +CPPFLAGS+= -I${NETBSDSRCDIR}/sys/crypto/aes/arch/arm + +.if !empty(MACHINE_ARCH:Maarch64*) # XXX no AESE/AESD in 32-bit mode yet +SRCS.t_aes+= aes_armv8.c +SRCS.t_aes+= aes_armv8_64.S +.endif + +SRCS.t_aes+= aes_neon.c +SRCS.t_aes+= aes_neon_impl.c +SRCS.t_aes+= aes_neon_subr.c +.if !empty(MACHINE_ARCH:Mearmv7*) +SRCS.t_aes+= aes_neon_32.S +.endif + +.endif # earmv7/aarch64 + +.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" + +.PATH: ${NETBSDSRCDIR}/sys/crypto/aes/arch/x86 +CPPFLAGS+= -I${NETBSDSRCDIR}/sys/crypto/aes/arch/x86 + +.if ${MACHINE_ARCH} == "x86_64" # XXX no AES-NI in 32-bit mode yet +SRCS.t_aes+= aes_ni.c +SRCS.t_aes+= aes_ni_64.S +.endif + +SRCS.t_aes+= aes_sse2.c +SRCS.t_aes+= aes_sse2_dec.c +SRCS.t_aes+= aes_sse2_enc.c +SRCS.t_aes+= aes_sse2_impl.c +SRCS.t_aes+= aes_sse2_subr.c + +SRCS.t_aes+= aes_ssse3.c +SRCS.t_aes+= aes_ssse3_impl.c +SRCS.t_aes+= aes_ssse3_subr.c +COPTS.aes_ssse3.c+= -msse3 -mssse3 + +SRCS.t_aes+= aes_via.c + +.endif # x86 + +WARNS= 5 + +.include <bsd.test.mk> Index: src/tests/sys/crypto/aes/t_aes.c diff -u /dev/null src/tests/sys/crypto/aes/t_aes.c:1.1 --- /dev/null Tue Jun 30 20:32:12 2020 +++ src/tests/sys/crypto/aes/t_aes.c Tue Jun 30 20:32:11 2020 @@ -0,0 +1,135 @@ +/* $NetBSD: t_aes.c,v 1.1 2020/06/30 20:32:11 riastradh Exp $ */ + +/*- + * Copyright (c) 2020 The NetBSD Foundation, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include <sys/types.h> + +#include <crypto/aes/aes.h> +#include <crypto/aes/aes_bear.h> + +#if defined(__i386__) || defined(__x86_64__) +#include <crypto/aes/arch/x86/aes_ni.h> +#include <crypto/aes/arch/x86/aes_sse2.h> +#include <crypto/aes/arch/x86/aes_ssse3.h> +#include <crypto/aes/arch/x86/aes_via.h> +#endif + +#ifdef __aarch64__ +#include <crypto/aes/arch/arm/aes_armv8.h> +#endif + +#ifdef __ARM_NEON +#include <crypto/aes/arch/arm/aes_neon.h> +#endif + +#include <atf-c.h> + +ATF_TC(aes_ct_selftest); +ATF_TC_HEAD(aes_ct_selftest, tc) +{ + + atf_tc_set_md_var(tc, "descr", "BearSSL aes_ct tests"); +} + +ATF_TC_BODY(aes_ct_selftest, tc) +{ + + if (aes_bear_impl.ai_probe()) { + /* + * aes_ct is the portable software fallback, so probe + * should never fail. + */ + atf_tc_fail("BearSSL aes_ct probe failed"); + } + + if (aes_selftest(&aes_bear_impl)) + atf_tc_fail("BearSSL aes_ct self-test failed"); +} + +#define AES_SELFTEST(name, impl, descr) \ +ATF_TC(name); \ +ATF_TC_HEAD(name, tc) \ +{ \ + \ + atf_tc_set_md_var(tc, "descr", descr); \ +} \ + \ +ATF_TC_BODY(name, tc) \ +{ \ + \ + if ((impl)->ai_probe()) \ + atf_tc_skip("%s not supported on this hardware", \ + (impl)->ai_name); \ + if (aes_selftest(impl)) \ + atf_tc_fail("%s self-test failed", (impl)->ai_name); \ +} + +#ifdef __aarch64__ +AES_SELFTEST(aes_armv8_selftest, &aes_armv8_impl, "ARMv8.0-AES self-test") +#endif + +#ifdef __ARM_NEON +AES_SELFTEST(aes_neon_selftest, &aes_neon_impl, "ARM NEON vpaes self-test") +#endif + +#ifdef __x86_64__ +AES_SELFTEST(aes_ni_selftest, &aes_ni_impl, "Intel AES-NI self-test") +#endif + +#if defined(__i386__) || defined(__x86_64__) +AES_SELFTEST(aes_sse2_selftest, &aes_sse2_impl, + "Intel SSE2 bitsliced self-test") +AES_SELFTEST(aes_ssse3_selftest, &aes_ssse3_impl, + "Intel SSSE3 vpaes self-test") +AES_SELFTEST(aes_via_selftest, &aes_via_impl, "VIA ACE AES self-test") +#endif + +ATF_TP_ADD_TCS(tp) +{ + + ATF_TP_ADD_TC(tp, aes_ct_selftest); + +#ifdef __aarch64__ + ATF_TP_ADD_TC(tp, aes_armv8_selftest); +#endif + +#ifdef __ARM_NEON + ATF_TP_ADD_TC(tp, aes_neon_selftest); +#endif + +#ifdef __x86_64__ + ATF_TP_ADD_TC(tp, aes_ni_selftest); +#endif + +#if defined(__i386__) || defined(__x86_64__) + ATF_TP_ADD_TC(tp, aes_sse2_selftest); + ATF_TP_ADD_TC(tp, aes_ssse3_selftest); + ATF_TP_ADD_TC(tp, aes_via_selftest); +#endif + + return atf_no_error(); +}