summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/arch/i386/crypto_cpu_caps.c
diff options
context:
space:
mode:
authorjsing <>2025-06-15 14:18:31 +0000
committerjsing <>2025-06-15 14:18:31 +0000
commit9fe52b4c66b17ca20d6e89f97ea00d36ce86086e (patch)
tree7f80f33fdf2ec6522caa141fd7bd83b8ff009972 /src/lib/libcrypto/arch/i386/crypto_cpu_caps.c
parent00556dbdb2a0ef259141c777042dfb7562f0b7c5 (diff)
downloadopenbsd-9fe52b4c66b17ca20d6e89f97ea00d36ce86086e.tar.gz
openbsd-9fe52b4c66b17ca20d6e89f97ea00d36ce86086e.tar.bz2
openbsd-9fe52b4c66b17ca20d6e89f97ea00d36ce86086e.zip
Provide machine dependent CPU capabilities for i386.
This indicates if AES-NI is available via CRYPTO_CPU_CAPS_I386_AES. ok tb@
Diffstat (limited to 'src/lib/libcrypto/arch/i386/crypto_cpu_caps.c')
-rw-r--r--src/lib/libcrypto/arch/i386/crypto_cpu_caps.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/lib/libcrypto/arch/i386/crypto_cpu_caps.c b/src/lib/libcrypto/arch/i386/crypto_cpu_caps.c
index 6bb77411af..01981ace55 100644
--- a/src/lib/libcrypto/arch/i386/crypto_cpu_caps.c
+++ b/src/lib/libcrypto/arch/i386/crypto_cpu_caps.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: crypto_cpu_caps.c,v 1.3 2024/11/12 13:14:57 jsing Exp $ */ 1/* $OpenBSD: crypto_cpu_caps.c,v 1.4 2025/06/15 14:18:31 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -19,11 +19,15 @@
19 19
20#include <openssl/crypto.h> 20#include <openssl/crypto.h>
21 21
22#include "crypto_arch.h"
22#include "x86_arch.h" 23#include "x86_arch.h"
23 24
24/* Legacy architecture specific capabilities, used by perlasm. */ 25/* Legacy architecture specific capabilities, used by perlasm. */
25uint64_t OPENSSL_ia32cap_P; 26uint64_t OPENSSL_ia32cap_P;
26 27
28/* Machine dependent CPU capabilities. */
29uint64_t crypto_cpu_caps_i386;
30
27/* Machine independent CPU capabilities. */ 31/* Machine independent CPU capabilities. */
28extern uint64_t crypto_cpu_caps; 32extern uint64_t crypto_cpu_caps;
29 33
@@ -92,8 +96,10 @@ crypto_cpu_caps_init(void)
92 if ((edx & IA32CAP_MASK0_SSE2) != 0) 96 if ((edx & IA32CAP_MASK0_SSE2) != 0)
93 caps |= CPUCAP_MASK_SSE2; 97 caps |= CPUCAP_MASK_SSE2;
94 98
95 if ((ecx & IA32CAP_MASK1_AESNI) != 0) 99 if ((ecx & IA32CAP_MASK1_AESNI) != 0) {
96 caps |= CPUCAP_MASK_AESNI; 100 caps |= CPUCAP_MASK_AESNI;
101 crypto_cpu_caps_i386 |= CRYPTO_CPU_CAPS_I386_AES;
102 }
97 if ((ecx & IA32CAP_MASK1_PCLMUL) != 0) 103 if ((ecx & IA32CAP_MASK1_PCLMUL) != 0)
98 caps |= CPUCAP_MASK_PCLMUL; 104 caps |= CPUCAP_MASK_PCLMUL;
99 if ((ecx & IA32CAP_MASK1_SSSE3) != 0) 105 if ((ecx & IA32CAP_MASK1_SSSE3) != 0)