f411be65957209258e410290c72abea7e6710f86
[oweals/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         .long   0xb2b0f010      # stfle 16(%r15)
9         lg      %r2,16(%r15)
10         br      %r14
11 .size   OPENSSL_s390x_facilities,.-OPENSSL_s390x_facilities
12
13 .globl  OPENSSL_rdtsc
14 .type   OPENSSL_rdtsc,@function
15 .align  16
16 OPENSSL_rdtsc:
17         stck    16(%r15)
18         lg      %r2,16(%r15)
19         br      %r14
20 .size   OPENSSL_rdtsc,.-OPENSSL_rdtsc
21
22 .globl  OPENSSL_atomic_add
23 .type   OPENSSL_atomic_add,@function
24 .align  16
25 OPENSSL_atomic_add:
26         l       %r1,0(%r2)
27 .Lspin: lr      %r0,%r1
28         ar      %r0,%r3
29         cs      %r1,%r0,0(%r2)
30         brc     4,.Lspin
31         lgfr    %r2,%r0         # OpenSSL expects the new value
32         br      %r14
33 .size   OPENSSL_atomic_add,.-OPENSSL_atomic_add
34
35 .globl  OPENSSL_wipe_cpu
36 .type   OPENSSL_wipe_cpu,@function
37 .align  16
38 OPENSSL_wipe_cpu:
39         xgr     %r0,%r0
40         xgr     %r1,%r1
41         lgr     %r2,%r15
42         xgr     %r3,%r3
43         xgr     %r4,%r4
44         lzdr    %f0
45         lzdr    %f1
46         lzdr    %f2
47         lzdr    %f3
48         lzdr    %f4
49         lzdr    %f5
50         lzdr    %f6
51         lzdr    %f7
52         br      %r14
53 .size   OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu
54
55 .globl  OPENSSL_cleanse
56 .type   OPENSSL_cleanse,@function
57 .align  16
58 OPENSSL_cleanse:
59         lghi    %r4,15
60         lghi    %r0,0
61         clgr    %r3,%r4
62         jh      .Lot
63 .Little:
64         stc     %r0,0(%r2)
65         la      %r2,1(%r2)
66         brctg   %r3,.Little
67         br      %r14
68 .align  4
69 .Lot:   tmll    %r2,7
70         jz      .Laligned
71         stc     %r0,0(%r2)
72         la      %r2,1(%r2)
73         brctg   %r3,.Lot
74 .Laligned:
75         srlg    %r4,%r3,3
76 .Loop:  stg     %r0,0(%r2)
77         la      %r2,8(%r2)
78         brctg   %r4,.Loop
79         lghi    %r4,7
80         ngr     %r3,%r4
81         jnz     .Little
82         br      %r14
83 .size   OPENSSL_cleanse,.-OPENSSL_cleanse