1221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.text 2221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 3221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.globl OPENSSL_s390x_facilities 4221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.type OPENSSL_s390x_facilities,@function 5221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.align 16 6221304ee937bc0910948a8be1320cb8cc4eb6d36Brian CarlstromOPENSSL_s390x_facilities: 7221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom lghi %r0,0 8392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom larl %r2,OPENSSL_s390xcap_P 9392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom stg %r0,8(%r2) 10392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .long 0xb2b02000 # stfle 0(%r2) 11392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom brc 8,.Ldone 12392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom lghi %r0,1 13392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom .long 0xb2b02000 # stfle 0(%r2) 14392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom.Ldone: 15392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom lg %r2,0(%r2) 16221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom br %r14 17221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.size OPENSSL_s390x_facilities,.-OPENSSL_s390x_facilities 18221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 19221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.globl OPENSSL_rdtsc 20221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.type OPENSSL_rdtsc,@function 21221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.align 16 22221304ee937bc0910948a8be1320cb8cc4eb6d36Brian CarlstromOPENSSL_rdtsc: 23221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom stck 16(%r15) 24221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom lg %r2,16(%r15) 25221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom br %r14 26221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.size OPENSSL_rdtsc,.-OPENSSL_rdtsc 27221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 28221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.globl OPENSSL_atomic_add 29221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.type OPENSSL_atomic_add,@function 30221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.align 16 31221304ee937bc0910948a8be1320cb8cc4eb6d36Brian CarlstromOPENSSL_atomic_add: 32221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom l %r1,0(%r2) 33221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.Lspin: lr %r0,%r1 34221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom ar %r0,%r3 35221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom cs %r1,%r0,0(%r2) 36221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom brc 4,.Lspin 37221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom lgfr %r2,%r0 # OpenSSL expects the new value 38221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom br %r14 39221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.size OPENSSL_atomic_add,.-OPENSSL_atomic_add 40221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 41221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.globl OPENSSL_wipe_cpu 42221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.type OPENSSL_wipe_cpu,@function 43221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.align 16 44221304ee937bc0910948a8be1320cb8cc4eb6d36Brian CarlstromOPENSSL_wipe_cpu: 45221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom xgr %r0,%r0 46221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom xgr %r1,%r1 47221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom lgr %r2,%r15 48221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom xgr %r3,%r3 49221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom xgr %r4,%r4 50221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom lzdr %f0 51221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom lzdr %f1 52221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom lzdr %f2 53221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom lzdr %f3 54221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom lzdr %f4 55221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom lzdr %f5 56221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom lzdr %f6 57221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom lzdr %f7 58221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom br %r14 59221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.size OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu 60221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 61221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.globl OPENSSL_cleanse 62221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.type OPENSSL_cleanse,@function 63221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.align 16 64221304ee937bc0910948a8be1320cb8cc4eb6d36Brian CarlstromOPENSSL_cleanse: 65392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if !defined(__s390x__) && !defined(__s390x) 66392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom llgfr %r3,%r3 67392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 68221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom lghi %r4,15 69221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom lghi %r0,0 70221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom clgr %r3,%r4 71221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom jh .Lot 72221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom clgr %r3,%r0 73221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom bcr 8,%r14 74221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.Little: 75221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom stc %r0,0(%r2) 76221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom la %r2,1(%r2) 77221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom brctg %r3,.Little 78221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom br %r14 79221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.align 4 80221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.Lot: tmll %r2,7 81221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom jz .Laligned 82221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom stc %r0,0(%r2) 83221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom la %r2,1(%r2) 84221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom brctg %r3,.Lot 85221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.Laligned: 86221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom srlg %r4,%r3,3 87221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.Loop: stg %r0,0(%r2) 88221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom la %r2,8(%r2) 89221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom brctg %r4,.Loop 90221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom lghi %r4,7 91221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom ngr %r3,%r4 92221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom jnz .Little 93221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom br %r14 94221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.size OPENSSL_cleanse,.-OPENSSL_cleanse 95221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 96221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.section .init 97221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom brasl %r14,OPENSSL_cpuid_setup 98221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom 99392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom.comm OPENSSL_s390xcap_P,16,8 100