summaryrefslogtreecommitdiffstats
path: root/engines
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2011-10-01 10:44:51 +0000
committerAndy Polyakov <appro@openssl.org>2011-10-01 10:44:51 +0000
commit04c3aa5c1ab4244293ca60f6aeabb431e8b44cbe (patch)
treeba984c0ef789d29b1f103ee5aef733cb023dc86a /engines
parent3edc26a2563c607273f36a253744ed41ba2ff116 (diff)
e_padlock-x86.pl: previous C3-specific fix was incomplete.
Diffstat (limited to 'engines')
-rw-r--r--engines/asm/e_padlock-x86.pl5
1 files changed, 3 insertions, 2 deletions
diff --git a/engines/asm/e_padlock-x86.pl b/engines/asm/e_padlock-x86.pl
index 47f05dc9f1..672d91257a 100644
--- a/engines/asm/e_padlock-x86.pl
+++ b/engines/asm/e_padlock-x86.pl
@@ -177,7 +177,7 @@ my ($mode,$opcode) = @_;
&lea ($ctx,&DWP(16,$ctx)); # control word
&xor ("eax","eax");
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 {
&xor ("ebx","ebx");
&test (&DWP(0,$ctx),1<<5); # align bit in control word
@@ -216,7 +216,7 @@ my ($mode,$opcode) = @_;
&set_label("${mode}_prepare");
&mov (&DWP(12,"esp",$out),"ecx");
&bswap ("ecx");
- &movq (&QWP(0,"esp",$out),"xmm0");
+ &movq (&QWP(0,"esp",$out),"mm0");
&inc ("ecx");
&mov (&DWP(8,"esp",$out),"eax");
&bswap ("ecx");
@@ -304,6 +304,7 @@ my ($mode,$opcode) = @_;
&set_label("${mode}_exit"); }
&mov ("eax",1);
&lea ("esp",&DWP(4,"esp")); # popf
+ &emms () if ($mode eq "ctr16");
&set_label("${mode}_abort");
&function_end("padlock_${mode}_encrypt");
}