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