Revisit RT#1801 and complete fix.

This commit is contained in:
Andy Polyakov 2008-12-27 13:32:21 +00:00
parent dde5b979d2
commit 3b0ee0d2bf
2 changed files with 6 additions and 1 deletions

View File

@ -2360,6 +2360,7 @@ my $mark=&DWP(76+240,"esp"); # copy of aes_key->rounds
#--------------------------- SLOW ENCRYPT ---------------------------#
&cmp ($s2,16);
&mov ($s3,$s1);
&jb (&label("slow_enc_tail"));
if (!$x86only) {
@ -2468,7 +2469,7 @@ my $mark=&DWP(76+240,"esp"); # copy of aes_key->rounds
&align (4);
&data_word(0xAAF3F689); # rep stosb # zero tail
&lea ($key,&DWP(-16,$s3)); # restore ivp
&mov ($key,$_ivp); # restore ivp
&mov ($acc,$s3); # output as input
&mov ($s0,&DWP(0,$key));
&mov ($s1,&DWP(4,$key));

View File

@ -1990,6 +1990,8 @@ AES_cbc_encrypt:
.align 4
.Lcbc_slow_enc_tail:
mov %rax,%r11
mov %rcx,%r12
mov %r10,%rcx
mov $inp,%rsi
mov $out,%rdi
@ -2000,6 +2002,8 @@ AES_cbc_encrypt:
.long 0x9066AAF3 # rep stosb
mov $out,$inp # this is not a mistake!
mov \$16,%r10 # len=16
mov %r11,%rax
mov %r12,%rcx
jmp .Lcbc_slow_enc_loop # one more spin...
#--------------------------- SLOW DECRYPT ---------------------------#
.align 16