Add alphacpuid.s
authorAndy Polyakov <appro@openssl.org>
Tue, 15 May 2007 06:36:17 +0000 (06:36 +0000)
committerAndy Polyakov <appro@openssl.org>
Tue, 15 May 2007 06:36:17 +0000 (06:36 +0000)
Configure
TABLE
crypto/alphacpuid.s [new file with mode: 0644]

index b072bfbc7d6851d87d1c246ca488eda11ac0fbd6..af466548c5fb31e402e90ffdf8d74c0b78fa5d27 100755 (executable)
--- 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 (file)
--- 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 (file)
index 0000000..53f6a1a
--- /dev/null
@@ -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