1 /* $FreeBSD$ */
2 /* Do not modify. This file is auto-generated from arm64cpuid.pl. */
3 #include "arm_arch.h"
4
5 .text
6 .arch armv8-a+crypto
7
8 .align 5
9 .globl _armv7_neon_probe
10 .type _armv7_neon_probe,%function
11 _armv7_neon_probe:
12 orr v15.16b, v15.16b, v15.16b
13 ret
14 .size _armv7_neon_probe,.-_armv7_neon_probe
15
16 .globl _armv7_tick
17 .type _armv7_tick,%function
18 _armv7_tick:
19 #ifdef __APPLE__
20 mrs x0, CNTPCT_EL0
21 #else
22 mrs x0, CNTVCT_EL0
23 #endif
24 ret
25 .size _armv7_tick,.-_armv7_tick
26
27 .globl _armv8_aes_probe
28 .type _armv8_aes_probe,%function
29 _armv8_aes_probe:
30 aese v0.16b, v0.16b
31 ret
32 .size _armv8_aes_probe,.-_armv8_aes_probe
33
34 .globl _armv8_sha1_probe
35 .type _armv8_sha1_probe,%function
36 _armv8_sha1_probe:
37 sha1h s0, s0
38 ret
39 .size _armv8_sha1_probe,.-_armv8_sha1_probe
40
41 .globl _armv8_sha256_probe
42 .type _armv8_sha256_probe,%function
43 _armv8_sha256_probe:
44 sha256su0 v0.4s, v0.4s
45 ret
46 .size _armv8_sha256_probe,.-_armv8_sha256_probe
47
48 .globl _armv8_pmull_probe
49 .type _armv8_pmull_probe,%function
50 _armv8_pmull_probe:
51 pmull v0.1q, v0.1d, v0.1d
52 ret
53 .size _armv8_pmull_probe,.-_armv8_pmull_probe
54
55 .globl _armv8_sha512_probe
56 .type _armv8_sha512_probe,%function
57 _armv8_sha512_probe:
58 .long 0xcec08000 // sha512su0 v0.2d,v0.2d
59 ret
60 .size _armv8_sha512_probe,.-_armv8_sha512_probe
61
62 .globl OPENSSL_cleanse
63 .type OPENSSL_cleanse,%function
64 .align 5
65 OPENSSL_cleanse:
66 cbz x1,.Lret // len==0?
67 cmp x1,#15
68 b.hi .Lot // len>15
69 nop
70 .Little:
71 strb wzr,[x0],#1 // store byte-by-byte
72 subs x1,x1,#1
73 b.ne .Little
74 .Lret: ret
75
76 .align 4
77 .Lot: tst x0,#7
78 b.eq .Laligned // inp is aligned
79 strb wzr,[x0],#1 // store byte-by-byte
80 sub x1,x1,#1
81 b .Lot
82
83 .align 4
84 .Laligned:
85 str xzr,[x0],#8 // store word-by-word
86 sub x1,x1,#8
87 tst x1,#-8
88 b.ne .Laligned // len>=8
89 cbnz x1,.Little // len!=0?
90 ret
91 .size OPENSSL_cleanse,.-OPENSSL_cleanse
92
93 .globl CRYPTO_memcmp
94 .type CRYPTO_memcmp,%function
95 .align 4
96 CRYPTO_memcmp:
97 eor w3,w3,w3
98 cbz x2,.Lno_data // len==0?
99 cmp x2,#16
100 b.ne .Loop_cmp
101 ldp x8,x9,[x0]
102 ldp x10,x11,[x1]
103 eor x8,x8,x10
104 eor x9,x9,x11
105 orr x8,x8,x9
106 mov x0,#1
107 cmp x8,#0
108 csel x0,xzr,x0,eq
109 ret
110
111 .align 4
112 .Loop_cmp:
113 ldrb w4,[x0],#1
114 ldrb w5,[x1],#1
115 eor w4,w4,w5
116 orr w3,w3,w4
117 subs x2,x2,#1
118 b.ne .Loop_cmp
119
120 .Lno_data:
121 neg w0,w3
122 lsr w0,w0,#31
123 ret
124 .size CRYPTO_memcmp,.-CRYPTO_memcmp
Cache object: 538b44e69ccd1908ec4c29f81f7bed0c
|