diff options
Diffstat (limited to 'crypto/sparccpuid.S')
-rw-r--r-- | crypto/sparccpuid.S | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/crypto/sparccpuid.S b/crypto/sparccpuid.S index 6f1dded..f48d860 100644 --- a/crypto/sparccpuid.S +++ b/crypto/sparccpuid.S @@ -440,6 +440,40 @@ OPENSSL_cleanse: .type OPENSSL_cleanse,#function .size OPENSSL_cleanse,.-OPENSSL_cleanse +.global CRYPTO_memcmp +.align 16 +CRYPTO_memcmp: + cmp %o2,0 +#ifdef ABI64 + beq,pn %xcc,.Lno_data +#else + beq .Lno_data +#endif + xor %g1,%g1,%g1 + nop + +.Loop_cmp: + ldub [%o0],%o3 + add %o0,1,%o0 + ldub [%o1],%o4 + add %o1,1,%o1 + subcc %o2,1,%o2 + xor %o3,%o4,%o4 +#ifdef ABI64 + bnz %xcc,.Loop_cmp +#else + bnz .Loop_cmp +#endif + or %o4,%g1,%g1 + + sub %g0,%g1,%g1 + srl %g1,31,%g1 +.Lno_data: + retl + mov %g1,%o0 +.type CRYPTO_memcmp,#function +.size CRYPTO_memcmp,.-CRYPTO_memcmp + .global _sparcv9_vis1_instrument_bus .align 8 _sparcv9_vis1_instrument_bus: |