]> git.ipfire.org Git - thirdparty/openssl.git/blame - crypto/s390xcpuid.S
Don't auto-instantiate a DRBG when trying to use it and it's not
[thirdparty/openssl.git] / crypto / s390xcpuid.S
CommitLineData
8626230a 1.text
44c8a5e2
RS
2// Copyright 2009-2016 The OpenSSL Project Authors. All Rights Reserved.
3//
4// Licensed under the OpenSSL license (the "License"). You may not use
5// this file except in compliance with the License. You can obtain a copy
6// in the file LICENSE in the source distribution or at
7// https://www.openssl.org/source/license.html
8626230a
AP
8
9.globl OPENSSL_s390x_facilities
10.type OPENSSL_s390x_facilities,@function
11.align 16
12OPENSSL_s390x_facilities:
13 lghi %r0,0
670ad0fb
AP
14 larl %r4,OPENSSL_s390xcap_P
15 stg %r0,8(%r4) # wipe capability vectors
16 stg %r0,16(%r4)
17 stg %r0,24(%r4)
18 stg %r0,32(%r4)
19 stg %r0,40(%r4)
20 stg %r0,48(%r4)
21 stg %r0,56(%r4)
22 stg %r0,64(%r4)
23 stg %r0,72(%r4)
24
25 .long 0xb2b04000 # stfle 0(%r4)
90ba3a28
AP
26 brc 8,.Ldone
27 lghi %r0,1
670ad0fb 28 .long 0xb2b04000 # stfle 0(%r4)
90ba3a28 29.Ldone:
670ad0fb
AP
30 lmg %r2,%r3,0(%r4)
31 tmhl %r2,0x4000 # check for message-security-assist
32 jz .Lret
33
34 lghi %r0,0 # query kimd capabilities
35 la %r1,16(%r4)
36 .long 0xb93e0002 # kimd %r0,%r2
37
38 lghi %r0,0 # query km capability vector
39 la %r1,32(%r4)
40 .long 0xb92e0042 # km %r4,%r2
41
42 lghi %r0,0 # query kmc capability vector
43 la %r1,48(%r4)
44 .long 0xb92f0042 # kmc %r4,%r2
45
46 tmhh %r3,0x0004 # check for message-security-assist-4
47 jz .Lret
48
49 lghi %r0,0 # query kmctr capability vector
50 la %r1,64(%r4)
51 .long 0xb92d2042 # kmctr %r4,%r2,%r2
52
53.Lret:
8626230a
AP
54 br %r14
55.size OPENSSL_s390x_facilities,.-OPENSSL_s390x_facilities
56
57.globl OPENSSL_rdtsc
58.type OPENSSL_rdtsc,@function
59.align 16
60OPENSSL_rdtsc:
61 stck 16(%r15)
62 lg %r2,16(%r15)
63 br %r14
64.size OPENSSL_rdtsc,.-OPENSSL_rdtsc
65
66.globl OPENSSL_atomic_add
67.type OPENSSL_atomic_add,@function
68.align 16
69OPENSSL_atomic_add:
70 l %r1,0(%r2)
71.Lspin: lr %r0,%r1
72 ar %r0,%r3
73 cs %r1,%r0,0(%r2)
74 brc 4,.Lspin
75 lgfr %r2,%r0 # OpenSSL expects the new value
76 br %r14
77.size OPENSSL_atomic_add,.-OPENSSL_atomic_add
78
79.globl OPENSSL_wipe_cpu
80.type OPENSSL_wipe_cpu,@function
81.align 16
82OPENSSL_wipe_cpu:
83 xgr %r0,%r0
84 xgr %r1,%r1
85 lgr %r2,%r15
86 xgr %r3,%r3
87 xgr %r4,%r4
88 lzdr %f0
89 lzdr %f1
90 lzdr %f2
91 lzdr %f3
92 lzdr %f4
93 lzdr %f5
94 lzdr %f6
95 lzdr %f7
96 br %r14
97.size OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu
98
99.globl OPENSSL_cleanse
100.type OPENSSL_cleanse,@function
101.align 16
102OPENSSL_cleanse:
e822c756
AP
103#if !defined(__s390x__) && !defined(__s390x)
104 llgfr %r3,%r3
105#endif
8626230a
AP
106 lghi %r4,15
107 lghi %r0,0
108 clgr %r3,%r4
109 jh .Lot
7676eebf
AP
110 clgr %r3,%r0
111 bcr 8,%r14
8626230a
AP
112.Little:
113 stc %r0,0(%r2)
114 la %r2,1(%r2)
115 brctg %r3,.Little
116 br %r14
117.align 4
118.Lot: tmll %r2,7
119 jz .Laligned
120 stc %r0,0(%r2)
121 la %r2,1(%r2)
122 brctg %r3,.Lot
123.Laligned:
124 srlg %r4,%r3,3
125.Loop: stg %r0,0(%r2)
126 la %r2,8(%r2)
127 brctg %r4,.Loop
128 lghi %r4,7
129 ngr %r3,%r4
130 jnz .Little
131 br %r14
132.size OPENSSL_cleanse,.-OPENSSL_cleanse
91fdacb2 133
e33826f0
AP
134.globl CRYPTO_memcmp
135.type CRYPTO_memcmp,@function
136.align 16
137CRYPTO_memcmp:
138#if !defined(__s390x__) && !defined(__s390x)
139 llgfr %r4,%r4
140#endif
141 lghi %r5,0
142 clgr %r4,%r5
143 je .Lno_data
144
145.Loop_cmp:
0a4c87a9 146 llgc %r0,0(%r2)
e33826f0 147 la %r2,1(%r2)
0a4c87a9 148 llgc %r1,0(%r3)
e33826f0
AP
149 la %r3,1(%r3)
150 xr %r1,%r0
151 or %r5,%r1
152 brctg %r4,.Loop_cmp
153
154 lnr %r5,%r5
155 srl %r5,31
156.Lno_data:
157 lgr %r2,%r5
158 br %r14
159.size CRYPTO_memcmp,.-CRYPTO_memcmp
160
5fabb88a
AP
161.globl OPENSSL_instrument_bus
162.type OPENSSL_instrument_bus,@function
163.align 16
164OPENSSL_instrument_bus:
165 lghi %r2,0
166 br %r14
167.size OPENSSL_instrument_bus,.-OPENSSL_instrument_bus
168
169.globl OPENSSL_instrument_bus2
170.type OPENSSL_instrument_bus2,@function
171.align 16
172OPENSSL_instrument_bus2:
173 lghi %r2,0
174 br %r14
175.size OPENSSL_instrument_bus2,.-OPENSSL_instrument_bus2
176
91fdacb2
AP
177.section .init
178 brasl %r14,OPENSSL_cpuid_setup
179
670ad0fb 180.comm OPENSSL_s390xcap_P,80,8