diff --git a/Configure b/Configure index b072bfbc7d6851d87d1c246ca488eda11ac0fbd6..af466548c5fb31e402e90ffdf8d74c0b78fa5d27 100755 --- a/Configure +++ b/Configure @@ -123,7 +123,7 @@ my $x86_out_asm="x86cpuid-out.o:bn86-out.o co86-out.o mo86-out.o:dx86-out.o yx86 my $x86_64_asm="x86_64cpuid.o:x86_64-gcc.o x86_64-mont.o::aes-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o::rc4-x86_64.o:::wp-x86_64.o"; my $ia64_asm="ia64cpuid.o:bn-ia64.o::aes_core.o aes_cbc.o aes-ia64.o::md5-ia64.o:sha1-ia64.o sha256-ia64.o sha512-ia64.o::rc4-ia64.o rc4_skey.o:::"; my $sparcv9_asm="sparcv9cap.o sparccpuid.o:bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o:des_enc-sparc.o fcrypt_b.o:aes_core.o aes_cbc.o aes-sparcv9.o:::sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o:::::"; -my $alpha_asm=":bn_asm.o alpha-mont.o::::::::::"; +my $alpha_asm="alphacpuid.o:bn_asm.o alpha-mont.o::::::::::"; my $s390x_asm=":bn_asm.o s390x-mont.o::aes_core.o aes_cbc.o aes-s390x.o:::sha1-s390x.o sha256-s390x.o sha512-s390x.o:::::"; my $no_asm=":::::::::::"; diff --git a/TABLE b/TABLE index 00fb25bf4f394e57d7877d4ad03398d73af2186b..7361b99cea662ea591c72d070bd2ef0925e0a4fb 100644 --- a/TABLE +++ b/TABLE @@ -2696,7 +2696,7 @@ $thread_cflag = -D_REENTRANT $sys_id = $lflags = $bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL -$cpuid_obj = +$cpuid_obj = alphacpuid.o $bn_obj = bn_asm.o alpha-mont.o $des_obj = $aes_obj = @@ -2724,7 +2724,7 @@ $thread_cflag = -D_REENTRANT $sys_id = $lflags = -ldl $bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL -$cpuid_obj = +$cpuid_obj = alphacpuid.o $bn_obj = bn_asm.o alpha-mont.o $des_obj = $aes_obj = @@ -2752,7 +2752,7 @@ $thread_cflag = -D_REENTRANT $sys_id = $lflags = $bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL -$cpuid_obj = +$cpuid_obj = alphacpuid.o $bn_obj = bn_asm.o alpha-mont.o $des_obj = $aes_obj = @@ -2780,7 +2780,7 @@ $thread_cflag = -D_REENTRANT $sys_id = $lflags = -ldl $bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL -$cpuid_obj = +$cpuid_obj = alphacpuid.o $bn_obj = bn_asm.o alpha-mont.o $des_obj = $aes_obj = @@ -3480,7 +3480,7 @@ $thread_cflag = (unknown) $sys_id = $lflags = $bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHUNK -$cpuid_obj = +$cpuid_obj = alphacpuid.o $bn_obj = bn_asm.o alpha-mont.o $des_obj = $aes_obj = @@ -3508,7 +3508,7 @@ $thread_cflag = (unknown) $sys_id = $lflags = $bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1 -$cpuid_obj = +$cpuid_obj = alphacpuid.o $bn_obj = bn_asm.o alpha-mont.o $des_obj = $aes_obj = @@ -4096,7 +4096,7 @@ $thread_cflag = -pthread $sys_id = $lflags = $bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHUNK -$cpuid_obj = +$cpuid_obj = alphacpuid.o $bn_obj = bn_asm.o alpha-mont.o $des_obj = $aes_obj = diff --git a/crypto/alphacpuid.s b/crypto/alphacpuid.s new file mode 100644 index 0000000000000000000000000000000000000000..53f6a1a1e528d9e69a68d2ecdcf81afb47a8652e --- /dev/null +++ b/crypto/alphacpuid.s @@ -0,0 +1,116 @@ +.text + +.set noat + +.globl OPENSSL_wipe_cpu +.ent OPENSSL_wipe_cpu +OPENSSL_wipe_cpu: + .frame $30,0,$26 + .prologue 0 + clr $1 + clr $2 + clr $3 + clr $4 + clr $5 + clr $6 + clr $7 + clr $8 + clr $16 + clr $17 + clr $18 + clr $19 + clr $20 + clr $21 + clr $22 + clr $23 + clr $24 + clr $25 + clr $27 + clr $at + clr $29 + fclr $f0 + fclr $f1 + fclr $f10 + fclr $f11 + fclr $f12 + fclr $f13 + fclr $f14 + fclr $f15 + fclr $f16 + fclr $f17 + fclr $f18 + fclr $f19 + fclr $f20 + fclr $f21 + fclr $f22 + fclr $f23 + fclr $f24 + fclr $f25 + fclr $f26 + fclr $f27 + fclr $f28 + fclr $f29 + fclr $f30 + mov $sp,$0 + ret ($26) +.end OPENSSL_wipe_cpu + +.globl OPENSSL_atomic_add +.ent OPENSSL_atomic_add +OPENSSL_atomic_add: + .frame $30,0,$26 + .prologue 0 +1: ldl_l $0,($16) + addl $0,$17,$1 + stl_c $1,($16) + beq $1,1b + addl $0,$17,$0 + ret ($26) +.end OPENSSL_atomic_add + +.globl OPENSSL_rdtsc +.ent OPENSSL_rdtsc +OPENSSL_rdtsc: + .frame $30,0,$26 + .prologue 0 + rpcc $0 + ret ($26) +.end OPENSSL_rdtsc + +.globl OPENSSL_cleanse +.ent OPENSSL_cleanse +OPENSSL_cleanse: + .frame $30,0,$26 + .prologue 0 + and $16,7,$0 + bic $17,7,$at + beq $at,.Little + beq $0,.Laligned + +.Little: + 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 + 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: + stq $31,0($16) + subq $17,8,$17 + lda $16,8($16) + bic $17,7,$at + bne $at,.Laligned + beq $17,.Ldone + mov $17,$0 + br .Little +.Ldone: ret ($26) +.end OPENSSL_cleanse