summaryrefslogtreecommitdiffstats
path: root/crypto/s390xcpuid.S
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2016-05-03 18:00:27 +0000
committerjkim <jkim@FreeBSD.org>2016-05-03 18:00:27 +0000
commitacb827e3083196de4c00b67ac9ae3bf860ffd4a9 (patch)
tree2dd85c58056a364765d9ae59d6a1774d41f88523 /crypto/s390xcpuid.S
parent72d32bf80dfdcfe0e69da200b66f195e919653f7 (diff)
downloadFreeBSD-src-acb827e3083196de4c00b67ac9ae3bf860ffd4a9.zip
FreeBSD-src-acb827e3083196de4c00b67ac9ae3bf860ffd4a9.tar.gz
Import OpenSSL 1.0.2h.
Diffstat (limited to 'crypto/s390xcpuid.S')
-rw-r--r--crypto/s390xcpuid.S44
1 files changed, 38 insertions, 6 deletions
diff --git a/crypto/s390xcpuid.S b/crypto/s390xcpuid.S
index 0681534..d91d5bc 100644
--- a/crypto/s390xcpuid.S
+++ b/crypto/s390xcpuid.S
@@ -5,14 +5,46 @@
.align 16
OPENSSL_s390x_facilities:
lghi %r0,0
- larl %r2,OPENSSL_s390xcap_P
- stg %r0,8(%r2)
- .long 0xb2b02000 # stfle 0(%r2)
+ larl %r4,OPENSSL_s390xcap_P
+ stg %r0,8(%r4) # wipe capability vectors
+ stg %r0,16(%r4)
+ stg %r0,24(%r4)
+ stg %r0,32(%r4)
+ stg %r0,40(%r4)
+ stg %r0,48(%r4)
+ stg %r0,56(%r4)
+ stg %r0,64(%r4)
+ stg %r0,72(%r4)
+
+ .long 0xb2b04000 # stfle 0(%r4)
brc 8,.Ldone
lghi %r0,1
- .long 0xb2b02000 # stfle 0(%r2)
+ .long 0xb2b04000 # stfle 0(%r4)
.Ldone:
- lg %r2,0(%r2)
+ lmg %r2,%r3,0(%r4)
+ tmhl %r2,0x4000 # check for message-security-assist
+ jz .Lret
+
+ lghi %r0,0 # query kimd capabilities
+ la %r1,16(%r4)
+ .long 0xb93e0002 # kimd %r0,%r2
+
+ lghi %r0,0 # query km capability vector
+ la %r1,32(%r4)
+ .long 0xb92e0042 # km %r4,%r2
+
+ lghi %r0,0 # query kmc capability vector
+ la %r1,48(%r4)
+ .long 0xb92f0042 # kmc %r4,%r2
+
+ tmhh %r3,0x0004 # check for message-security-assist-4
+ jz .Lret
+
+ lghi %r0,0 # query kmctr capability vector
+ la %r1,64(%r4)
+ .long 0xb92d2042 # kmctr %r4,%r2,%r2
+
+.Lret:
br %r14
.size OPENSSL_s390x_facilities,.-OPENSSL_s390x_facilities
@@ -96,4 +128,4 @@ OPENSSL_cleanse:
.section .init
brasl %r14,OPENSSL_cpuid_setup
-.comm OPENSSL_s390xcap_P,16,8
+.comm OPENSSL_s390xcap_P,80,8
OpenPOWER on IntegriCloud