| Index: openssl/crypto/s390xcpuid.S
|
| ===================================================================
|
| --- openssl/crypto/s390xcpuid.S (revision 0)
|
| +++ openssl/crypto/s390xcpuid.S (revision 0)
|
| @@ -0,0 +1,92 @@
|
| +.text
|
| +
|
| +.globl OPENSSL_s390x_facilities
|
| +.type OPENSSL_s390x_facilities,@function
|
| +.align 16
|
| +OPENSSL_s390x_facilities:
|
| + lghi %r0,0
|
| + .long 0xb2b0f010 # stfle 16(%r15)
|
| + lg %r2,16(%r15)
|
| + larl %r1,OPENSSL_s390xcap_P
|
| + stg %r2,0(%r1)
|
| + br %r14
|
| +.size OPENSSL_s390x_facilities,.-OPENSSL_s390x_facilities
|
| +
|
| +.globl OPENSSL_rdtsc
|
| +.type OPENSSL_rdtsc,@function
|
| +.align 16
|
| +OPENSSL_rdtsc:
|
| + stck 16(%r15)
|
| + lg %r2,16(%r15)
|
| + br %r14
|
| +.size OPENSSL_rdtsc,.-OPENSSL_rdtsc
|
| +
|
| +.globl OPENSSL_atomic_add
|
| +.type OPENSSL_atomic_add,@function
|
| +.align 16
|
| +OPENSSL_atomic_add:
|
| + l %r1,0(%r2)
|
| +.Lspin: lr %r0,%r1
|
| + ar %r0,%r3
|
| + cs %r1,%r0,0(%r2)
|
| + brc 4,.Lspin
|
| + lgfr %r2,%r0 # OpenSSL expects the new value
|
| + br %r14
|
| +.size OPENSSL_atomic_add,.-OPENSSL_atomic_add
|
| +
|
| +.globl OPENSSL_wipe_cpu
|
| +.type OPENSSL_wipe_cpu,@function
|
| +.align 16
|
| +OPENSSL_wipe_cpu:
|
| + xgr %r0,%r0
|
| + xgr %r1,%r1
|
| + lgr %r2,%r15
|
| + xgr %r3,%r3
|
| + xgr %r4,%r4
|
| + lzdr %f0
|
| + lzdr %f1
|
| + lzdr %f2
|
| + lzdr %f3
|
| + lzdr %f4
|
| + lzdr %f5
|
| + lzdr %f6
|
| + lzdr %f7
|
| + br %r14
|
| +.size OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu
|
| +
|
| +.globl OPENSSL_cleanse
|
| +.type OPENSSL_cleanse,@function
|
| +.align 16
|
| +OPENSSL_cleanse:
|
| + lghi %r4,15
|
| + lghi %r0,0
|
| + clgr %r3,%r4
|
| + jh .Lot
|
| + clgr %r3,%r0
|
| + bcr 8,%r14
|
| +.Little:
|
| + stc %r0,0(%r2)
|
| + la %r2,1(%r2)
|
| + brctg %r3,.Little
|
| + br %r14
|
| +.align 4
|
| +.Lot: tmll %r2,7
|
| + jz .Laligned
|
| + stc %r0,0(%r2)
|
| + la %r2,1(%r2)
|
| + brctg %r3,.Lot
|
| +.Laligned:
|
| + srlg %r4,%r3,3
|
| +.Loop: stg %r0,0(%r2)
|
| + la %r2,8(%r2)
|
| + brctg %r4,.Loop
|
| + lghi %r4,7
|
| + ngr %r3,%r4
|
| + jnz .Little
|
| + br %r14
|
| +.size OPENSSL_cleanse,.-OPENSSL_cleanse
|
| +
|
| +.section .init
|
| + brasl %r14,OPENSSL_cpuid_setup
|
| +
|
| +.comm OPENSSL_s390xcap_P,8,8
|
|
|