summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkettenis <>2023-04-05 11:07:40 +0000
committerkettenis <>2023-04-05 11:07:40 +0000
commit2db0dca691f89b76656d40a20829357632754405 (patch)
treea7ae7fa64299b8eb0fee493437fc9f165cd0bb52
parentd575d6cc26a8d40373901b5ec211ee30a7d15b2d (diff)
downloadopenbsd-2db0dca691f89b76656d40a20829357632754405.tar.gz
openbsd-2db0dca691f89b76656d40a20829357632754405.tar.bz2
openbsd-2db0dca691f89b76656d40a20829357632754405.zip
Sprinkle a few BTI instructions into the arm64 assembly files and pass
-mmark-bti-property to indicate those now have BTI support. ok jsing@, deraadt@
-rw-r--r--src/lib/libcrypto/arch/aarch64/Makefile.inc3
-rw-r--r--src/lib/libcrypto/arch/aarch64/arm64cpuid.S6
2 files changed, 8 insertions, 1 deletions
diff --git a/src/lib/libcrypto/arch/aarch64/Makefile.inc b/src/lib/libcrypto/arch/aarch64/Makefile.inc
index b953494234..82a1e4c6e5 100644
--- a/src/lib/libcrypto/arch/aarch64/Makefile.inc
+++ b/src/lib/libcrypto/arch/aarch64/Makefile.inc
@@ -1,4 +1,4 @@
1# $OpenBSD: Makefile.inc,v 1.4 2023/01/31 06:17:10 jsing Exp $ 1# $OpenBSD: Makefile.inc,v 1.5 2023/04/05 11:07:40 kettenis Exp $
2 2
3# aarch64-specific libcrypto build rules 3# aarch64-specific libcrypto build rules
4 4
@@ -27,4 +27,5 @@ ${f}.S: ${LCRYPTO_SRC}/${dir}/asm/${f}.pl
27.endfor 27.endfor
28 28
29CFLAGS+= -DOPENSSL_CPUID_OBJ 29CFLAGS+= -DOPENSSL_CPUID_OBJ
30AFLAGS+= -mmark-bti-property
30SRCS+= arm64cpuid.S arm64cap.c 31SRCS+= arm64cpuid.S arm64cap.c
diff --git a/src/lib/libcrypto/arch/aarch64/arm64cpuid.S b/src/lib/libcrypto/arch/aarch64/arm64cpuid.S
index d267ad6897..96a9c76fb1 100644
--- a/src/lib/libcrypto/arch/aarch64/arm64cpuid.S
+++ b/src/lib/libcrypto/arch/aarch64/arm64cpuid.S
@@ -7,6 +7,7 @@
7.globl _armv7_neon_probe 7.globl _armv7_neon_probe
8.type _armv7_neon_probe,%function 8.type _armv7_neon_probe,%function
9_armv7_neon_probe: 9_armv7_neon_probe:
10 bti c
10 orr v15.16b, v15.16b, v15.16b 11 orr v15.16b, v15.16b, v15.16b
11 ret 12 ret
12.size _armv7_neon_probe,.-_armv7_neon_probe 13.size _armv7_neon_probe,.-_armv7_neon_probe
@@ -14,6 +15,7 @@ _armv7_neon_probe:
14.globl _armv8_aes_probe 15.globl _armv8_aes_probe
15.type _armv8_aes_probe,%function 16.type _armv8_aes_probe,%function
16_armv8_aes_probe: 17_armv8_aes_probe:
18 bti c
17 aese v0.16b, v0.16b 19 aese v0.16b, v0.16b
18 ret 20 ret
19.size _armv8_aes_probe,.-_armv8_aes_probe 21.size _armv8_aes_probe,.-_armv8_aes_probe
@@ -21,6 +23,7 @@ _armv8_aes_probe:
21.globl _armv8_sha1_probe 23.globl _armv8_sha1_probe
22.type _armv8_sha1_probe,%function 24.type _armv8_sha1_probe,%function
23_armv8_sha1_probe: 25_armv8_sha1_probe:
26 bti c
24 sha1h s0, s0 27 sha1h s0, s0
25 ret 28 ret
26.size _armv8_sha1_probe,.-_armv8_sha1_probe 29.size _armv8_sha1_probe,.-_armv8_sha1_probe
@@ -28,6 +31,7 @@ _armv8_sha1_probe:
28.globl _armv8_sha256_probe 31.globl _armv8_sha256_probe
29.type _armv8_sha256_probe,%function 32.type _armv8_sha256_probe,%function
30_armv8_sha256_probe: 33_armv8_sha256_probe:
34 bti c
31 sha256su0 v0.4s, v0.4s 35 sha256su0 v0.4s, v0.4s
32 ret 36 ret
33.size _armv8_sha256_probe,.-_armv8_sha256_probe 37.size _armv8_sha256_probe,.-_armv8_sha256_probe
@@ -35,6 +39,7 @@ _armv8_sha256_probe:
35.globl _armv8_pmull_probe 39.globl _armv8_pmull_probe
36.type _armv8_pmull_probe,%function 40.type _armv8_pmull_probe,%function
37_armv8_pmull_probe: 41_armv8_pmull_probe:
42 bti c
38 pmull v0.1q, v0.1d, v0.1d 43 pmull v0.1q, v0.1d, v0.1d
39 ret 44 ret
40.size _armv8_pmull_probe,.-_armv8_pmull_probe 45.size _armv8_pmull_probe,.-_armv8_pmull_probe
@@ -42,6 +47,7 @@ _armv8_pmull_probe:
42.globl _armv8_sha512_probe 47.globl _armv8_sha512_probe
43.type _armv8_sha512_probe,%function 48.type _armv8_sha512_probe,%function
44_armv8_sha512_probe: 49_armv8_sha512_probe:
50 bti c
45 sha512su0 v0.2d,v0.2d 51 sha512su0 v0.2d,v0.2d
46 ret 52 ret
47.size _armv8_sha512_probe,.-_armv8_sha512_probe 53.size _armv8_sha512_probe,.-_armv8_sha512_probe