summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/perlasm
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/perlasm')
-rw-r--r--src/lib/libcrypto/perlasm/x86asm.pl2
-rw-r--r--src/lib/libcrypto/perlasm/x86ms.pl1
-rw-r--r--src/lib/libcrypto/perlasm/x86nasm.pl8
-rw-r--r--src/lib/libcrypto/perlasm/x86unix.pl7
4 files changed, 14 insertions, 4 deletions
diff --git a/src/lib/libcrypto/perlasm/x86asm.pl b/src/lib/libcrypto/perlasm/x86asm.pl
index 7c675e3ced..60233f80e8 100644
--- a/src/lib/libcrypto/perlasm/x86asm.pl
+++ b/src/lib/libcrypto/perlasm/x86asm.pl
@@ -130,4 +130,6 @@ BSDI - a.out with a very primative version of as.
130EOF 130EOF
131 } 131 }
132 132
133sub main'align() {} # swallow align statements in 0.9.7 context
134
1331; 1351;
diff --git a/src/lib/libcrypto/perlasm/x86ms.pl b/src/lib/libcrypto/perlasm/x86ms.pl
index fbb4afb9bd..b6bd744057 100644
--- a/src/lib/libcrypto/perlasm/x86ms.pl
+++ b/src/lib/libcrypto/perlasm/x86ms.pl
@@ -160,6 +160,7 @@ sub main'not { &out1("not",@_); }
160sub main'call { &out1("call",($_[0]=~/^\$L/?'':'_').$_[0]); } 160sub main'call { &out1("call",($_[0]=~/^\$L/?'':'_').$_[0]); }
161sub main'ret { &out0("ret"); } 161sub main'ret { &out0("ret"); }
162sub main'nop { &out0("nop"); } 162sub main'nop { &out0("nop"); }
163sub main'movz { &out2("movzx",@_); }
163 164
164sub out2 165sub out2
165 { 166 {
diff --git a/src/lib/libcrypto/perlasm/x86nasm.pl b/src/lib/libcrypto/perlasm/x86nasm.pl
index 30346af4ea..5009acb4b3 100644
--- a/src/lib/libcrypto/perlasm/x86nasm.pl
+++ b/src/lib/libcrypto/perlasm/x86nasm.pl
@@ -86,7 +86,7 @@ sub get_mem
86 { 86 {
87 my($size,$addr,$reg1,$reg2,$idx)=@_; 87 my($size,$addr,$reg1,$reg2,$idx)=@_;
88 my($t,$post); 88 my($t,$post);
89 my($ret)="["; 89 my($ret)="$size [";
90 $addr =~ s/^\s+//; 90 $addr =~ s/^\s+//;
91 if ($addr =~ /^(.+)\+(.+)$/) 91 if ($addr =~ /^(.+)\+(.+)$/)
92 { 92 {
@@ -169,6 +169,7 @@ sub main'not { &out1("not",@_); }
169sub main'call { &out1("call",($_[0]=~/^\$L/?'':'_').$_[0]); } 169sub main'call { &out1("call",($_[0]=~/^\$L/?'':'_').$_[0]); }
170sub main'ret { &out0("ret"); } 170sub main'ret { &out0("ret"); }
171sub main'nop { &out0("nop"); } 171sub main'nop { &out0("nop"); }
172sub main'movz { &out2("movzx",@_); }
172 173
173sub out2 174sub out2
174 { 175 {
@@ -176,6 +177,11 @@ sub out2
176 my($l,$t); 177 my($l,$t);
177 178
178 push(@out,"\t$name\t"); 179 push(@out,"\t$name\t");
180 if ($name eq "lea")
181 {
182 $p1 =~ s/^[^\[]*\[/\[/;
183 $p2 =~ s/^[^\[]*\[/\[/;
184 }
179 $t=&conv($p1).","; 185 $t=&conv($p1).",";
180 $l=length($t); 186 $l=length($t);
181 push(@out,$t); 187 push(@out,$t);
diff --git a/src/lib/libcrypto/perlasm/x86unix.pl b/src/lib/libcrypto/perlasm/x86unix.pl
index 53ad5f4927..9717d18557 100644
--- a/src/lib/libcrypto/perlasm/x86unix.pl
+++ b/src/lib/libcrypto/perlasm/x86unix.pl
@@ -143,12 +143,12 @@ sub main'shl { &out2("sall",@_); }
143sub main'shr { &out2("shrl",@_); } 143sub main'shr { &out2("shrl",@_); }
144sub main'xor { &out2("xorl",@_); } 144sub main'xor { &out2("xorl",@_); }
145sub main'xorb { &out2("xorb",@_); } 145sub main'xorb { &out2("xorb",@_); }
146sub main'add { &out2("addl",@_); } 146sub main'add { &out2($_[0]=~/%[a-d][lh]/?"addb":"addl",@_); }
147sub main'adc { &out2("adcl",@_); } 147sub main'adc { &out2("adcl",@_); }
148sub main'sub { &out2("subl",@_); } 148sub main'sub { &out2("subl",@_); }
149sub main'rotl { &out2("roll",@_); } 149sub main'rotl { &out2("roll",@_); }
150sub main'rotr { &out2("rorl",@_); } 150sub main'rotr { &out2("rorl",@_); }
151sub main'exch { &out2("xchg",@_); } 151sub main'exch { &out2($_[0]=~/%[a-d][lh]/?"xchgb":"xchgl",@_); }
152sub main'cmp { &out2("cmpl",@_); } 152sub main'cmp { &out2("cmpl",@_); }
153sub main'lea { &out2("leal",@_); } 153sub main'lea { &out2("leal",@_); }
154sub main'mul { &out1("mull",@_); } 154sub main'mul { &out1("mull",@_); }
@@ -170,7 +170,7 @@ sub main'jc { &out1("jc",@_); }
170sub main'jnc { &out1("jnc",@_); } 170sub main'jnc { &out1("jnc",@_); }
171sub main'jno { &out1("jno",@_); } 171sub main'jno { &out1("jno",@_); }
172sub main'dec { &out1("decl",@_); } 172sub main'dec { &out1("decl",@_); }
173sub main'inc { &out1("incl",@_); } 173sub main'inc { &out1($_[0]=~/%[a-d][hl]/?"incb":"incl",@_); }
174sub main'push { &out1("pushl",@_); $stack+=4; } 174sub main'push { &out1("pushl",@_); $stack+=4; }
175sub main'pop { &out1("popl",@_); $stack-=4; } 175sub main'pop { &out1("popl",@_); $stack-=4; }
176sub main'pushf { &out0("pushf"); $stack+=4; } 176sub main'pushf { &out0("pushf"); $stack+=4; }
@@ -179,6 +179,7 @@ sub main'not { &out1("notl",@_); }
179sub main'call { &out1("call",($_[0]=~/^\.L/?'':$under).$_[0]); } 179sub main'call { &out1("call",($_[0]=~/^\.L/?'':$under).$_[0]); }
180sub main'ret { &out0("ret"); } 180sub main'ret { &out0("ret"); }
181sub main'nop { &out0("nop"); } 181sub main'nop { &out0("nop"); }
182sub main'movz { &out2("movzbl",@_); }
182 183
183# The bswapl instruction is new for the 486. Emulate if i386. 184# The bswapl instruction is new for the 486. Emulate if i386.
184sub main'bswap 185sub main'bswap