]>
Commit | Line | Data |
---|---|---|
8626230a AP |
1 | .text |
2 | ||
3 | .globl OPENSSL_s390x_facilities | |
4 | .type OPENSSL_s390x_facilities,@function | |
5 | .align 16 | |
6 | OPENSSL_s390x_facilities: | |
7 | lghi %r0,0 | |
0b48a24c AP |
8 | larl %r4,OPENSSL_s390xcap_P |
9 | stg %r0,8(%r4) # wipe capability vectors | |
10 | stg %r0,16(%r4) | |
11 | stg %r0,24(%r4) | |
12 | stg %r0,32(%r4) | |
13 | stg %r0,40(%r4) | |
14 | stg %r0,48(%r4) | |
15 | stg %r0,56(%r4) | |
16 | stg %r0,64(%r4) | |
17 | stg %r0,72(%r4) | |
18 | ||
19 | .long 0xb2b04000 # stfle 0(%r4) | |
9833757b AP |
20 | brc 8,.Ldone |
21 | lghi %r0,1 | |
0b48a24c | 22 | .long 0xb2b04000 # stfle 0(%r4) |
9833757b | 23 | .Ldone: |
0b48a24c AP |
24 | lmg %r2,%r3,0(%r4) |
25 | tmhl %r2,0x4000 # check for message-security-assist | |
26 | jz .Lret | |
27 | ||
28 | lghi %r0,0 # query kimd capabilities | |
29 | la %r1,16(%r4) | |
30 | .long 0xb93e0002 # kimd %r0,%r2 | |
31 | ||
32 | lghi %r0,0 # query km capability vector | |
33 | la %r1,32(%r4) | |
34 | .long 0xb92e0042 # km %r4,%r2 | |
35 | ||
36 | lghi %r0,0 # query kmc capability vector | |
37 | la %r1,48(%r4) | |
38 | .long 0xb92f0042 # kmc %r4,%r2 | |
39 | ||
40 | tmhh %r3,0x0004 # check for message-security-assist-4 | |
41 | jz .Lret | |
42 | ||
43 | lghi %r0,0 # query kmctr capability vector | |
44 | la %r1,64(%r4) | |
45 | .long 0xb92d2042 # kmctr %r4,%r2,%r2 | |
46 | ||
47 | .Lret: | |
8626230a AP |
48 | br %r14 |
49 | .size OPENSSL_s390x_facilities,.-OPENSSL_s390x_facilities | |
50 | ||
51 | .globl OPENSSL_rdtsc | |
52 | .type OPENSSL_rdtsc,@function | |
53 | .align 16 | |
54 | OPENSSL_rdtsc: | |
55 | stck 16(%r15) | |
56 | lg %r2,16(%r15) | |
57 | br %r14 | |
58 | .size OPENSSL_rdtsc,.-OPENSSL_rdtsc | |
59 | ||
60 | .globl OPENSSL_atomic_add | |
61 | .type OPENSSL_atomic_add,@function | |
62 | .align 16 | |
63 | OPENSSL_atomic_add: | |
64 | l %r1,0(%r2) | |
65 | .Lspin: lr %r0,%r1 | |
66 | ar %r0,%r3 | |
67 | cs %r1,%r0,0(%r2) | |
68 | brc 4,.Lspin | |
69 | lgfr %r2,%r0 # OpenSSL expects the new value | |
70 | br %r14 | |
71 | .size OPENSSL_atomic_add,.-OPENSSL_atomic_add | |
72 | ||
73 | .globl OPENSSL_wipe_cpu | |
74 | .type OPENSSL_wipe_cpu,@function | |
75 | .align 16 | |
76 | OPENSSL_wipe_cpu: | |
77 | xgr %r0,%r0 | |
78 | xgr %r1,%r1 | |
79 | lgr %r2,%r15 | |
80 | xgr %r3,%r3 | |
81 | xgr %r4,%r4 | |
82 | lzdr %f0 | |
83 | lzdr %f1 | |
84 | lzdr %f2 | |
85 | lzdr %f3 | |
86 | lzdr %f4 | |
87 | lzdr %f5 | |
88 | lzdr %f6 | |
89 | lzdr %f7 | |
90 | br %r14 | |
91 | .size OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu | |
92 | ||
93 | .globl OPENSSL_cleanse | |
94 | .type OPENSSL_cleanse,@function | |
95 | .align 16 | |
96 | OPENSSL_cleanse: | |
9833757b AP |
97 | #if !defined(__s390x__) && !defined(__s390x) |
98 | llgfr %r3,%r3 | |
99 | #endif | |
8626230a AP |
100 | lghi %r4,15 |
101 | lghi %r0,0 | |
102 | clgr %r3,%r4 | |
103 | jh .Lot | |
1d8fa09c DSH |
104 | clgr %r3,%r0 |
105 | bcr 8,%r14 | |
8626230a AP |
106 | .Little: |
107 | stc %r0,0(%r2) | |
108 | la %r2,1(%r2) | |
109 | brctg %r3,.Little | |
110 | br %r14 | |
111 | .align 4 | |
112 | .Lot: tmll %r2,7 | |
113 | jz .Laligned | |
114 | stc %r0,0(%r2) | |
115 | la %r2,1(%r2) | |
116 | brctg %r3,.Lot | |
117 | .Laligned: | |
118 | srlg %r4,%r3,3 | |
119 | .Loop: stg %r0,0(%r2) | |
120 | la %r2,8(%r2) | |
121 | brctg %r4,.Loop | |
122 | lghi %r4,7 | |
123 | ngr %r3,%r4 | |
124 | jnz .Little | |
125 | br %r14 | |
126 | .size OPENSSL_cleanse,.-OPENSSL_cleanse | |
3e719c99 AP |
127 | |
128 | .section .init | |
129 | brasl %r14,OPENSSL_cpuid_setup | |
130 | ||
0b48a24c | 131 | .comm OPENSSL_s390xcap_P,80,8 |