Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/crypto/external/bsd/openssl/lib/libcrypto/arch/mips Handle m...



details:   https://anonhg.NetBSD.org/src/rev/fb429f03c1bb
branches:  trunk
changeset: 320943:fb429f03c1bb
user:      christos <christos%NetBSD.org@localhost>
date:      Mon Mar 05 16:43:50 2018 +0000

description:
Handle mips64 properly.

diffstat:

 crypto/external/bsd/openssl/lib/libcrypto/arch/mips/Makefile          |    14 +-
 crypto/external/bsd/openssl/lib/libcrypto/arch/mips/aes-mips.S        |    12 +-
 crypto/external/bsd/openssl/lib/libcrypto/arch/mips/aes-mips64.S      |  1835 ++++++
 crypto/external/bsd/openssl/lib/libcrypto/arch/mips/bn.inc            |     2 +-
 crypto/external/bsd/openssl/lib/libcrypto/arch/mips/crypto.inc        |     2 +-
 crypto/external/bsd/openssl/lib/libcrypto/arch/mips/mips-mont.S       |     2 +
 crypto/external/bsd/openssl/lib/libcrypto/arch/mips/mips-mont64.S     |   282 +
 crypto/external/bsd/openssl/lib/libcrypto/arch/mips/mips64.S          |  2158 +++++++
 crypto/external/bsd/openssl/lib/libcrypto/arch/mips/poly1305-mips64.S |   321 +
 crypto/external/bsd/openssl/lib/libcrypto/arch/mips/poly1305.inc      |    10 +
 crypto/external/bsd/openssl/lib/libcrypto/arch/mips/sha.inc           |     5 +-
 crypto/external/bsd/openssl/lib/libcrypto/arch/mips/sha1-mips64.S     |  2979 ++++++++++
 crypto/external/bsd/openssl/lib/libcrypto/arch/mips/sha512-mips.S     |     3 +-
 crypto/external/bsd/openssl/lib/libcrypto/arch/mips/sha512-mips64.S   |  2979 ++++++++++
 14 files changed, 10586 insertions(+), 18 deletions(-)

diffs (truncated from 10751 to 300 lines):

diff -r 1db5e23f4f0c -r fb429f03c1bb crypto/external/bsd/openssl/lib/libcrypto/arch/mips/Makefile
--- a/crypto/external/bsd/openssl/lib/libcrypto/arch/mips/Makefile      Mon Mar 05 12:42:28 2018 +0000
+++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/mips/Makefile      Mon Mar 05 16:43:50 2018 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: Makefile,v 1.1 2018/03/04 00:59:44 christos Exp $
+#      $NetBSD: Makefile,v 1.2 2018/03/05 16:43:50 christos Exp $
 
 .include "bsd.own.mk"
 
@@ -6,13 +6,17 @@
 .include "${NETBSDSRCDIR}/crypto/Makefile.openssl"
 
 regen:
-       # poly is mips64 only
        for i in $$(find ${OPENSSLSRC} -name \*mips\*.pl); \
        do \
                case $$i in \
-               (*poly*);; \
+               (*poly*) perl -I${OPENSSLSRC}/crypto/perlasm \
+                           -I${OPENSSLSRC}/crypto/bn/asm $$i 64 /dev/stdout \
+                           > $$(basename $$i .pl)64.S;; \
                (*) perl -I${OPENSSLSRC}/crypto/perlasm \
-               -I${OPENSSLSRC}/crypto/bn/asm $$i linux /dev/stdout \
-               > $$(basename $$i .pl).S;; \
+                       -I${OPENSSLSRC}/crypto/bn/asm $$i o32 /dev/stdout \
+                       > $$(basename $$i .pl).S; \
+                   perl -I${OPENSSLSRC}/crypto/perlasm \
+                       -I${OPENSSLSRC}/crypto/bn/asm $$i 64 /dev/stdout \
+                       > $$(basename $$i .pl)64.S;; \
                esac; \
        done
diff -r 1db5e23f4f0c -r fb429f03c1bb crypto/external/bsd/openssl/lib/libcrypto/arch/mips/aes-mips.S
--- a/crypto/external/bsd/openssl/lib/libcrypto/arch/mips/aes-mips.S    Mon Mar 05 12:42:28 2018 +0000
+++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/mips/aes-mips.S    Mon Mar 05 16:43:50 2018 +0000
@@ -507,6 +507,7 @@
        .frame  $29,64,$31
        .mask   0xc0ff0000,-4
        .set    noreorder
+       .cpload $25
        sub $29,64
        sw      $31,64-1*4($29)
        sw      $30,64-2*4($29)
@@ -518,8 +519,6 @@
        sw      $18,64-8*4($29)
        sw      $17,64-9*4($29)
        sw      $16,64-10*4($29)
-       .cplocal        $7
-       .cpsetup        $25,$0,AES_encrypt
        .set    reorder
        la      $7,AES_Te               # PIC-ified 'load address'
 
@@ -1050,6 +1049,7 @@
        .frame  $29,64,$31
        .mask   0xc0ff0000,-4
        .set    noreorder
+       .cpload $25
        sub $29,64
        sw      $31,64-1*4($29)
        sw      $30,64-2*4($29)
@@ -1061,8 +1061,6 @@
        sw      $18,64-8*4($29)
        sw      $17,64-9*4($29)
        sw      $16,64-10*4($29)
-       .cplocal        $7
-       .cpsetup        $25,$0,AES_decrypt
        .set    reorder
        la      $7,AES_Td               # PIC-ified 'load address'
 
@@ -1359,11 +1357,10 @@
        .frame  $29,32,$31
        .mask   0xc0000000,-4
        .set    noreorder
+       .cpload $25
        sub $29,32
        sw      $31,32-1*4($29)
        sw      $30,32-2*4($29)
-       .cplocal        $7
-       .cpsetup        $25,$0,AES_set_encrypt_key
        .set    reorder
        la      $7,AES_Te4              # PIC-ified 'load address'
 
@@ -1383,11 +1380,10 @@
        .frame  $29,32,$31
        .mask   0xc0000000,-4
        .set    noreorder
+       .cpload $25
        sub $29,32
        sw      $31,32-1*4($29)
        sw      $30,32-2*4($29)
-       .cplocal        $7
-       .cpsetup        $25,$0,AES_set_decrypt_key
        .set    reorder
        la      $7,AES_Te4              # PIC-ified 'load address'
 
diff -r 1db5e23f4f0c -r fb429f03c1bb crypto/external/bsd/openssl/lib/libcrypto/arch/mips/aes-mips64.S
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/mips/aes-mips64.S  Mon Mar 05 16:43:50 2018 +0000
@@ -0,0 +1,1835 @@
+.text
+#ifdef OPENSSL_FIPSCANISTER
+# include <openssl/fipssyms.h>
+#endif
+
+#if defined(__mips_smartmips) && !defined(_MIPS_ARCH_MIPS32R2)
+#define _MIPS_ARCH_MIPS32R2
+#endif
+
+#if !defined(__mips_eabi) && (!defined(__vxworks) || defined(__pic__))
+.option        pic2
+#endif
+.set   noat
+.align 5
+.ent   _mips_AES_encrypt
+_mips_AES_encrypt:
+       .frame  $29,0,$31
+       .set    reorder
+       lw      $12,0($6)
+       lw      $13,4($6)
+       lw      $14,8($6)
+       lw      $15,12($6)
+       lw      $30,240($6)
+       dadd $3,$6,16
+
+       xor     $8,$12
+       xor     $9,$13
+       xor     $10,$14
+       xor     $11,$15
+
+       sub     $30,1
+#if defined(__mips_smartmips)
+       ext     $1,$9,8,8
+.Loop_enc:
+       ext     $2,$10,8,8
+       ext     $24,$11,8,8
+       ext     $25,$8,8,8
+       lwxs    $12,$1($7)              # Te1[s1>>16]
+       ext     $1,$10,16,8
+       lwxs    $13,$2($7)              # Te1[s2>>16]
+       ext     $2,$11,16,8
+       lwxs    $14,$24($7)             # Te1[s3>>16]
+       ext     $24,$8,16,8
+       lwxs    $15,$25($7)             # Te1[s0>>16]
+       ext     $25,$9,16,8
+
+       lwxs    $16,$1($7)              # Te2[s2>>8]
+       ext     $1,$11,24,8
+       lwxs    $17,$2($7)              # Te2[s3>>8]
+       ext     $2,$8,24,8
+       lwxs    $18,$24($7)             # Te2[s0>>8]
+       ext     $24,$9,24,8
+       lwxs    $19,$25($7)             # Te2[s1>>8]
+       ext     $25,$10,24,8
+
+       lwxs    $20,$1($7)              # Te3[s3]
+       ext     $1,$8,0,8
+       lwxs    $21,$2($7)              # Te3[s0]
+       ext     $2,$9,0,8
+       lwxs    $22,$24($7)             # Te3[s1]
+       ext     $24,$10,0,8
+       lwxs    $23,$25($7)             # Te3[s2]
+       ext     $25,$11,0,8
+
+       rotr    $12,$12,24
+       rotr    $13,$13,24
+       rotr    $14,$14,24
+       rotr    $15,$15,24
+
+       rotr    $16,$16,16
+       rotr    $17,$17,16
+       rotr    $18,$18,16
+       rotr    $19,$19,16
+
+       xor     $12,$16
+       lwxs    $16,$1($7)              # Te0[s0>>24]
+       xor     $13,$17
+       lwxs    $17,$2($7)              # Te0[s1>>24]
+       xor     $14,$18
+       lwxs    $18,$24($7)             # Te0[s2>>24]
+       xor     $15,$19
+       lwxs    $19,$25($7)             # Te0[s3>>24]
+
+       rotr    $20,$20,8
+       lw      $8,0($3)
+       rotr    $21,$21,8
+       lw      $9,4($3)
+       rotr    $22,$22,8
+       lw      $10,8($3)
+       rotr    $23,$23,8
+       lw      $11,12($3)
+
+       xor     $12,$20
+       xor     $13,$21
+       xor     $14,$22
+       xor     $15,$23
+
+       xor     $12,$16
+       xor     $13,$17
+       xor     $14,$18
+       xor     $15,$19
+
+       sub     $30,1
+       dadd $3,16
+       xor     $8,$12
+       xor     $9,$13
+       xor     $10,$14
+       xor     $11,$15
+       .set    noreorder
+       bnez    $30,.Loop_enc
+       ext     $1,$9,8,8
+
+       srl     $1,$9,6
+#else
+       srl     $1,$9,6
+.Loop_enc:
+       srl     $2,$10,6
+       srl     $24,$11,6
+       srl     $25,$8,6
+       and     $1,0x3fc
+       and     $2,0x3fc
+       and     $24,0x3fc
+       and     $25,0x3fc
+       dadd $1,$7
+       dadd $2,$7
+       dadd $24,$7
+       dadd $25,$7
+#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
+       lw      $12,0($1)               # Te1[s1>>16]
+       srl     $1,$10,14
+       lw      $13,0($2)               # Te1[s2>>16]
+       srl     $2,$11,14
+       lw      $14,0($24)              # Te1[s3>>16]
+       srl     $24,$8,14
+       lw      $15,0($25)              # Te1[s0>>16]
+       srl     $25,$9,14
+#else
+       lwl     $12,2($1)               # Te1[s1>>16]
+       lwl     $13,2($2)               # Te1[s2>>16]
+       lwl     $14,2($24)              # Te1[s3>>16]
+       lwl     $15,2($25)              # Te1[s0>>16]
+       lwr     $12,3($1)               # Te1[s1>>16]
+       srl     $1,$10,14
+       lwr     $13,3($2)               # Te1[s2>>16]
+       srl     $2,$11,14
+       lwr     $14,3($24)              # Te1[s3>>16]
+       srl     $24,$8,14
+       lwr     $15,3($25)              # Te1[s0>>16]
+       srl     $25,$9,14
+#endif
+       and     $1,0x3fc
+       and     $2,0x3fc
+       and     $24,0x3fc
+       and     $25,0x3fc
+       dadd $1,$7
+       dadd $2,$7
+       dadd $24,$7
+       dadd $25,$7
+#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
+       rotr    $12,$12,24
+       rotr    $13,$13,24
+       rotr    $14,$14,24
+       rotr    $15,$15,24
+# if defined(_MIPSEL)
+       lw      $16,0($1)               # Te2[s2>>8]
+       srl     $1,$11,22
+       lw      $17,0($2)               # Te2[s3>>8]
+       srl     $2,$8,22
+       lw      $18,0($24)              # Te2[s0>>8]
+       srl     $24,$9,22
+       lw      $19,0($25)              # Te2[s1>>8]
+       srl     $25,$10,22
+
+       and     $1,0x3fc
+       and     $2,0x3fc
+       and     $24,0x3fc
+       and     $25,0x3fc
+       dadd $1,$7
+       dadd $2,$7
+       dadd $24,$7
+       dadd $25,$7
+       lw      $20,0($1)               # Te3[s3]
+       dins $1,$8,2,8
+       lw      $21,0($2)               # Te3[s0]
+       dins $2,$9,2,8
+       lw      $22,0($24)              # Te3[s1]
+       dins $24,$10,2,8
+       lw      $23,0($25)              # Te3[s2]
+       dins $25,$11,2,8
+# else
+       lw      $16,0($1)               # Te2[s2>>8]
+       dins $1,$11,2,8
+       lw      $17,0($2)               # Te2[s3>>8]
+       dins $2,$8,2,8
+       lw      $18,0($24)              # Te2[s0>>8]
+       dins $24,$9,2,8
+       lw      $19,0($25)              # Te2[s1>>8]
+       dins $25,$10,2,8
+
+       lw      $20,0($1)               # Te3[s3]
+       sll     $1,$8,2
+       lw      $21,0($2)               # Te3[s0]



Home | Main Index | Thread Index | Old Index