e_padlock-x86.pl: previous C3-specific fix was incomplete.
This commit is contained in:
parent
3edc26a256
commit
04c3aa5c1a
@ -177,7 +177,7 @@ my ($mode,$opcode) = @_;
|
|||||||
&lea ($ctx,&DWP(16,$ctx)); # control word
|
&lea ($ctx,&DWP(16,$ctx)); # control word
|
||||||
&xor ("eax","eax");
|
&xor ("eax","eax");
|
||||||
if ($mode eq "ctr16") {
|
if ($mode eq "ctr16") {
|
||||||
&movq ("xmm0",&QWP(-16,$ctx));# load [upper part of] counter
|
&movq ("mm0",&QWP(-16,$ctx)); # load [upper part of] counter
|
||||||
} else {
|
} else {
|
||||||
&xor ("ebx","ebx");
|
&xor ("ebx","ebx");
|
||||||
&test (&DWP(0,$ctx),1<<5); # align bit in control word
|
&test (&DWP(0,$ctx),1<<5); # align bit in control word
|
||||||
@ -216,7 +216,7 @@ my ($mode,$opcode) = @_;
|
|||||||
&set_label("${mode}_prepare");
|
&set_label("${mode}_prepare");
|
||||||
&mov (&DWP(12,"esp",$out),"ecx");
|
&mov (&DWP(12,"esp",$out),"ecx");
|
||||||
&bswap ("ecx");
|
&bswap ("ecx");
|
||||||
&movq (&QWP(0,"esp",$out),"xmm0");
|
&movq (&QWP(0,"esp",$out),"mm0");
|
||||||
&inc ("ecx");
|
&inc ("ecx");
|
||||||
&mov (&DWP(8,"esp",$out),"eax");
|
&mov (&DWP(8,"esp",$out),"eax");
|
||||||
&bswap ("ecx");
|
&bswap ("ecx");
|
||||||
@ -304,6 +304,7 @@ my ($mode,$opcode) = @_;
|
|||||||
&set_label("${mode}_exit"); }
|
&set_label("${mode}_exit"); }
|
||||||
&mov ("eax",1);
|
&mov ("eax",1);
|
||||||
&lea ("esp",&DWP(4,"esp")); # popf
|
&lea ("esp",&DWP(4,"esp")); # popf
|
||||||
|
&emms () if ($mode eq "ctr16");
|
||||||
&set_label("${mode}_abort");
|
&set_label("${mode}_abort");
|
||||||
&function_end("padlock_${mode}_encrypt");
|
&function_end("padlock_${mode}_encrypt");
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user