Premaster secret handling fixes
[openssl.git] / crypto / s390xcpuid.S
index aa704c0..3402a24 100644 (file)
@@ -5,10 +5,14 @@
 .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)
+       larl    %r2,OPENSSL_s390xcap_P
+       stg     %r0,8(%r2)
+       .long   0xb2b02000      # stfle 0(%r2)
+       brc     8,.Ldone
+       lghi    %r0,1
+       .long   0xb2b02000      # stfle 0(%r2)
+.Ldone:
+       lg      %r2,0(%r2)
        br      %r14
 .size  OPENSSL_s390x_facilities,.-OPENSSL_s390x_facilities
 
@@ -58,10 +62,15 @@ OPENSSL_wipe_cpu:
 .type  OPENSSL_cleanse,@function
 .align 16
 OPENSSL_cleanse:
+#if !defined(__s390x__) && !defined(__s390x)
+       llgfr   %r3,%r3
+#endif
        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)
@@ -84,7 +93,23 @@ OPENSSL_cleanse:
        br      %r14
 .size  OPENSSL_cleanse,.-OPENSSL_cleanse
 
+.globl OPENSSL_instrument_bus
+.type  OPENSSL_instrument_bus,@function
+.align 16
+OPENSSL_instrument_bus:
+       lghi    %r2,0
+       br      %r14
+.size  OPENSSL_instrument_bus,.-OPENSSL_instrument_bus
+
+.globl OPENSSL_instrument_bus2
+.type  OPENSSL_instrument_bus2,@function
+.align 16
+OPENSSL_instrument_bus2:
+       lghi    %r2,0
+       br      %r14
+.size  OPENSSL_instrument_bus2,.-OPENSSL_instrument_bus2
+
 .section       .init
        brasl   %r14,OPENSSL_cpuid_setup
 
-.comm  OPENSSL_s390xcap_P,8,8
+.comm  OPENSSL_s390xcap_P,16,8