Yet more style updates to the curve448 code
[openssl.git] / crypto / s390xcpuid.pl
index ea95dd286dd20303f35f83d71654a610883b57c1..b0ed9e06238e899ee4fe509011fcacb0a0adc6ee 100755 (executable)
@@ -129,6 +129,14 @@ OPENSSL_s390x_facilities:
 .type  OPENSSL_rdtsc,\@function
 .align 16
 OPENSSL_rdtsc:
+       larl    %r4,OPENSSL_s390xcap_P
+       tm      S390X_STFLE+3(%r4),0x40 # check for store-clock-fast facility
+       jz      .Lstck
+
+       .long   0xb27cf010      # stckf 16($sp)
+       lg      %r2,16($sp)
+       br      $ra
+.Lstck:
        stck    16($sp)
        lg      %r2,16($sp)
        br      $ra
@@ -275,6 +283,27 @@ s390x_km:
 ___
 }
 
+################
+# void s390x_kmac(const unsigned char *in, size_t len, unsigned int fc,
+#                 void *param)
+{
+my ($in,$len,$fc,$param) = map("%r$_",(2..5));
+$code.=<<___;
+.globl s390x_kmac
+.type  s390x_kmac,\@function
+.align 16
+s390x_kmac:
+       lr      %r0,$fc
+       l${g}r  %r1,$param
+
+       .long   0xb91e0002      # kmac %r0,$in
+       brc     1,.-4           # pay attention to "partial completion"
+
+       br      $ra
+.size  s390x_kmac,.-s390x_kmac
+___
+}
+
 ################
 # void s390x_kma(const unsigned char *aad, size_t alen,
 #                const unsigned char *in, size_t len,