summaryrefslogtreecommitdiffstats
path: root/engines/asm
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2011-09-18 15:40:11 +0000
committerAndy Polyakov <appro@openssl.org>2011-09-18 15:40:11 +0000
commit2b1f17f83fb82607c178123c63237171a9b771cb (patch)
tree505b96ae530e632c47c29dda999e878557ae9609 /engines/asm
parent7470276a25c1fb09ef37a323f3795061fa9b5f40 (diff)
Make latest assembler additions (vpaes and e_padlock) work in Windows build.
Diffstat (limited to 'engines/asm')
-rw-r--r--engines/asm/e_padlock-x86.pl12
1 files changed, 7 insertions, 5 deletions
diff --git a/engines/asm/e_padlock-x86.pl b/engines/asm/e_padlock-x86.pl
index 4a00d9d687..1ee622ff88 100644
--- a/engines/asm/e_padlock-x86.pl
+++ b/engines/asm/e_padlock-x86.pl
@@ -110,7 +110,8 @@ $chunk="ebx";
&function_begin_B("padlock_verify_context");
&mov ($ctx,&wparam(0));
- &lea ("eax",&DWP("padlock_saved_context-".&label("verify_pic_point")));
+ &lea ("eax",($::win32 or $::coff) ? &DWP(&label("padlock_saved_context")) :
+ &DWP(&label("padlock_saved_context")."-".&label("verify_pic_point")));
&pushf ();
&call ("_padlock_verify_ctx");
&set_label("verify_pic_point");
@@ -119,7 +120,7 @@ $chunk="ebx";
&function_end_B("padlock_verify_context");
&function_begin_B("_padlock_verify_ctx");
- &add ("eax",&DWP(0,"esp")); # &padlock_saved_context
+ &add ("eax",&DWP(0,"esp")) if(!($::win32 or $::coff));# &padlock_saved_context
&bt (&DWP(4,"esp"),30); # eflags
&jnc (&label("verified"));
&cmp ($ctx,&DWP(0,"eax"));
@@ -167,7 +168,8 @@ my ($mode,$opcode) = @_;
&jnz (&label("${mode}_abort"));
&test ($len,15);
&jnz (&label("${mode}_abort"));
- &lea ("eax",&DWP("padlock_saved_context-".&label("${mode}_pic_point")));
+ &lea ("eax",($::win32 or $::coff) ? &DWP(&label("padlock_saved_context")) :
+ &DWP(&label("padlock_saved_context")."-".&label("${mode}_pic_point")));
&pushf ();
&cld ();
&call ("_padlock_verify_ctx");
@@ -243,7 +245,7 @@ my ($mode,$opcode) = @_;
&data_byte(0xf3,0x0f,0xa7,$opcode); # rep xcrypt*
if ($mode !~ /ecb|ctr/) {
&movdqa ("xmm0",&QWP(0,"eax"));
- &movdqa (&DWP(-16,$ctx),"xmm0"); # copy [or refresh] iv
+ &movdqa (&QWP(-16,$ctx),"xmm0"); # copy [or refresh] iv
}
&mov ($out,&DWP(0,"ebp")); # restore parameters
&mov ($chunk,&DWP(12,"ebp"));
@@ -300,7 +302,7 @@ my ($mode,$opcode) = @_;
&data_byte(0xf3,0x0f,0xa7,$opcode); # rep xcrypt*
if ($mode ne "ecb") {
&movdqa ("xmm0",&QWP(0,"eax"));
- &movdqa (&DWP(-16,$ctx),"xmm0"); # copy [or refresh] iv
+ &movdqa (&QWP(-16,$ctx),"xmm0"); # copy [or refresh] iv
}
&set_label("${mode}_exit"); }
&mov ("eax",1);