]> git.ipfire.org Git - thirdparty/openssl.git/blob - crypto/s390xcpuid.S
GH886: CONNECT should use HTTP/1.1
[thirdparty/openssl.git] / crypto / s390xcpuid.S
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
8 larl %r2,OPENSSL_s390xcap_P
9 stg %r0,8(%r2)
10 .long 0xb2b02000 # stfle 0(%r2)
11 brc 8,.Ldone
12 lghi %r0,1
13 .long 0xb2b02000 # stfle 0(%r2)
14 .Ldone:
15 lg %r2,0(%r2)
16 br %r14
17 .size OPENSSL_s390x_facilities,.-OPENSSL_s390x_facilities
18
19 .globl OPENSSL_rdtsc
20 .type OPENSSL_rdtsc,@function
21 .align 16
22 OPENSSL_rdtsc:
23 stck 16(%r15)
24 lg %r2,16(%r15)
25 br %r14
26 .size OPENSSL_rdtsc,.-OPENSSL_rdtsc
27
28 .globl OPENSSL_atomic_add
29 .type OPENSSL_atomic_add,@function
30 .align 16
31 OPENSSL_atomic_add:
32 l %r1,0(%r2)
33 .Lspin: lr %r0,%r1
34 ar %r0,%r3
35 cs %r1,%r0,0(%r2)
36 brc 4,.Lspin
37 lgfr %r2,%r0 # OpenSSL expects the new value
38 br %r14
39 .size OPENSSL_atomic_add,.-OPENSSL_atomic_add
40
41 .globl OPENSSL_wipe_cpu
42 .type OPENSSL_wipe_cpu,@function
43 .align 16
44 OPENSSL_wipe_cpu:
45 xgr %r0,%r0
46 xgr %r1,%r1
47 lgr %r2,%r15
48 xgr %r3,%r3
49 xgr %r4,%r4
50 lzdr %f0
51 lzdr %f1
52 lzdr %f2
53 lzdr %f3
54 lzdr %f4
55 lzdr %f5
56 lzdr %f6
57 lzdr %f7
58 br %r14
59 .size OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu
60
61 .globl OPENSSL_cleanse
62 .type OPENSSL_cleanse,@function
63 .align 16
64 OPENSSL_cleanse:
65 #if !defined(__s390x__) && !defined(__s390x)
66 llgfr %r3,%r3
67 #endif
68 lghi %r4,15
69 lghi %r0,0
70 clgr %r3,%r4
71 jh .Lot
72 clgr %r3,%r0
73 bcr 8,%r14
74 .Little:
75 stc %r0,0(%r2)
76 la %r2,1(%r2)
77 brctg %r3,.Little
78 br %r14
79 .align 4
80 .Lot: tmll %r2,7
81 jz .Laligned
82 stc %r0,0(%r2)
83 la %r2,1(%r2)
84 brctg %r3,.Lot
85 .Laligned:
86 srlg %r4,%r3,3
87 .Loop: stg %r0,0(%r2)
88 la %r2,8(%r2)
89 brctg %r4,.Loop
90 lghi %r4,7
91 ngr %r3,%r4
92 jnz .Little
93 br %r14
94 .size OPENSSL_cleanse,.-OPENSSL_cleanse
95
96 .globl OPENSSL_instrument_bus
97 .type OPENSSL_instrument_bus,@function
98 .align 16
99 OPENSSL_instrument_bus:
100 lghi %r2,0
101 br %r14
102 .size OPENSSL_instrument_bus,.-OPENSSL_instrument_bus
103
104 .globl OPENSSL_instrument_bus2
105 .type OPENSSL_instrument_bus2,@function
106 .align 16
107 OPENSSL_instrument_bus2:
108 lghi %r2,0
109 br %r14
110 .size OPENSSL_instrument_bus2,.-OPENSSL_instrument_bus2
111
112 .section .init
113 brasl %r14,OPENSSL_cpuid_setup
114
115 .comm OPENSSL_s390xcap_P,16,8