~brian-sidebotham/openssl-cmake/1.0.1e

« back to all changes in this revision

Viewing changes to crypto/s390xcpuid.S

  • Committer: Brian Sidebotham
  • Date: 2013-10-19 21:50:27 UTC
  • Revision ID: brian.sidebotham@gmail.com-20131019215027-yzoyh4svqj87uepu
ImportĀ OpenSSLĀ 1.0.1e

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
.section        .init
 
97
        brasl   %r14,OPENSSL_cpuid_setup
 
98
 
 
99
.comm   OPENSSL_s390xcap_P,16,8