X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=crypto%2Falphacpuid.pl;h=5abb82d133f0c4b1d11b30e828188df9609d8392;hp=5b0e21bc909abe9a12469c437430039ed2a82cde;hb=70c35fd1f6467da5563c6cab3ea373e6359cf080;hpb=20735f4c813c394f64a205572ba5edf5efe3b56a diff --git a/crypto/alphacpuid.pl b/crypto/alphacpuid.pl index 5b0e21bc90..5abb82d133 100644 --- a/crypto/alphacpuid.pl +++ b/crypto/alphacpuid.pl @@ -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 Apache License 2.0 (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 @@ -123,6 +134,34 @@ OPENSSL_cleanse: 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"); @@ -214,3 +253,5 @@ OPENSSL_instrument_bus2: .end OPENSSL_instrument_bus2 ___ } + +close STDOUT;