Make DRBG uninstantiate() and instantiate() methods inverse to each other
[openssl.git] / crypto / c64xpluscpuid.pl
index 3dcd691129ecbae5ee8847e902d4af6c979b5919..b7b11d50316b1cd497487d6e8d17e8e2e93f1a9b 100644 (file)
@@ -18,6 +18,7 @@ $code.=<<___;
        .if     __TI_EABI__
        .asg    OPENSSL_rdtsc,_OPENSSL_rdtsc
        .asg    OPENSSL_cleanse,_OPENSSL_cleanse
+       .asg    CRYPTO_memcmp,_CRYPTO_memcmp
        .asg    OPENSSL_atomic_add,_OPENSSL_atomic_add
        .asg    OPENSSL_wipe_cpu,_OPENSSL_wipe_cpu
        .asg    OPENSSL_instrument_bus,_OPENSSL_instrument_bus
@@ -87,6 +88,29 @@ _OPENSSL_cleanse:
    [A1]        STB     A2,*A4++[2]
        .endasmfunc
 
+       .global _CRYPTO_memcmp
+_CRYPTO_memcmp:
+       .asmfunc
+       MV      A6,B0
+  [!B0]        BNOP    RA
+||[!B0]        ZERO    A4
+   [B0]        MVC     B0,ILC
+|| [B0]        ZERO    A0
+       NOP     4
+
+       SPLOOP  1
+       LDBU    *A4++,A1
+||     LDBU    *B4++,B1
+       NOP     4
+       XOR.L   B1,A1,A2
+       SPKERNEL 1,0
+||     OR.S    A2,A0,A0
+
+       BNOP    RA,3
+       ZERO.L  A4
+  [A0] MVK     1,A4
+       .endasmfunc
+
        .global _OPENSSL_atomic_add
 _OPENSSL_atomic_add:
        .asmfunc
@@ -207,7 +231,7 @@ bus_loop1?:
 _OPENSSL_instrument_bus2:
        .asmfunc
        MV      A6,B0                   ; reassign max
-||     MV      B4,A6                   ; reassing sizeof(output)
+||     MV      B4,A6                   ; reassign sizeof(output)
 ||     MVK     0x00004030,A3
        MV      A4,B4                   ; reassign output
 ||     MVK     0,A4                    ; return value