eng_devcrypto: make sure digest can do copy
[openssl.git] / crypto / alphacpuid.pl
index 11f2e30ce014d22d388618f5c622e5532f8c0b1b..6c7fd4c9dd3dd1dbd19a9c93141f44e6e6295716 100644 (file)
@@ -1,4 +1,15 @@
-#!/usr/bin/env perl
+#! /usr/bin/env perl
+# Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved.
+#
+# Licensed under the OpenSSL license (the "License").  You may not use
+# this file except in compliance with the License.  You can obtain a copy
+# in the file LICENSE in the source distribution or at
+# https://www.openssl.org/source/license.html
+
+
+$output = pop;
+open STDOUT,">$output";
+
 print <<'___';
 .text
 
@@ -99,19 +110,19 @@ OPENSSL_cleanse:
        beq     $0,.Laligned
 
 .Little:
+       subq    $0,8,$0
        ldq_u   $1,0($16)
        mov     $16,$2
 .Lalign:
        mskbl   $1,$16,$1
        lda     $16,1($16)
        subq    $17,1,$17
-       subq    $0,1,$0
+       addq    $0,1,$0
        beq     $17,.Lout
        bne     $0,.Lalign
 .Lout: stq_u   $1,0($2)
        beq     $17,.Ldone
        bic     $17,7,$at
-       mov     $17,$0
        beq     $at,.Little
 
 .Laligned:
@@ -120,11 +131,37 @@ OPENSSL_cleanse:
        lda     $16,8($16)
        bic     $17,7,$at
        bne     $at,.Laligned
-       beq     $17,.Ldone
-       mov     $17,$0
-       br      .Little
+       bne     $17,.Little
 .Ldone: ret    ($26)
 .end   OPENSSL_cleanse
+
+.globl CRYPTO_memcmp
+.ent   CRYPTO_memcmp
+CRYPTO_memcmp:
+       .frame  $30,0,$26
+       .prologue 0
+       xor     $0,$0,$0
+       beq     $18,.Lno_data
+
+       xor     $1,$1,$1
+       nop
+.Loop_cmp:
+       ldq_u   $2,0($16)
+       subq    $18,1,$18
+       ldq_u   $3,0($17)
+       extbl   $2,$16,$2
+       lda     $16,1($16)
+       extbl   $3,$17,$3
+       lda     $17,1($17)
+       xor     $3,$2,$2
+       or      $2,$0,$0
+       bne     $18,.Loop_cmp
+
+       subq    $31,$0,$0
+       srl     $0,63,$0
+.Lno_data:
+       ret     ($26)
+.end   CRYPTO_memcmp
 ___
 {
 my ($out,$cnt,$max)=("\$16","\$17","\$18");
@@ -216,3 +253,5 @@ OPENSSL_instrument_bus2:
 .end   OPENSSL_instrument_bus2
 ___
 }
+
+close STDOUT;