diff options
author | simon <simon@FreeBSD.org> | 2009-06-07 19:56:18 +0000 |
---|---|---|
committer | simon <simon@FreeBSD.org> | 2009-06-07 19:56:18 +0000 |
commit | fc5b6d55de4ea73602809deec0b965745f83a804 (patch) | |
tree | 873f9f63931a5d069bbcb053ea49eec4a92802dc /crypto/s390xcpuid.S | |
parent | 212fba63d3a2fed2e6ca619035a42526db27a3b8 (diff) | |
download | FreeBSD-src-fc5b6d55de4ea73602809deec0b965745f83a804.zip FreeBSD-src-fc5b6d55de4ea73602809deec0b965745f83a804.tar.gz |
Import OpenSSL 0.9.8k.
Diffstat (limited to 'crypto/s390xcpuid.S')
-rw-r--r-- | crypto/s390xcpuid.S | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/crypto/s390xcpuid.S b/crypto/s390xcpuid.S new file mode 100644 index 0000000..8500133 --- /dev/null +++ b/crypto/s390xcpuid.S @@ -0,0 +1,90 @@ +.text + +.globl OPENSSL_cpuid_setup +.type OPENSSL_cpuid_setup,@function +.align 16 +OPENSSL_cpuid_setup: + br %r14 # reserved for future +.size OPENSSL_cpuid_setup,.-OPENSSL_cpuid_setup + +.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) + 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 +.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 |