diff options
author | djm <> | 2005-04-29 05:37:32 +0000 |
---|---|---|
committer | djm <> | 2005-04-29 05:37:32 +0000 |
commit | 588543a0946f1dbf0f1dd5135f8f6447486dc183 (patch) | |
tree | f74e14f98abfec33221f0f2e15cc88a34a3df7e5 /src/lib/libcrypto/perlasm | |
parent | 00b426069b0dfa8f0d9b87308646e9684f45c515 (diff) | |
download | openbsd-588543a0946f1dbf0f1dd5135f8f6447486dc183.tar.gz openbsd-588543a0946f1dbf0f1dd5135f8f6447486dc183.tar.bz2 openbsd-588543a0946f1dbf0f1dd5135f8f6447486dc183.zip |
import of openssl-0.9.7g; tested on platforms from alpha to zaurus, ok deraadt@
Diffstat (limited to 'src/lib/libcrypto/perlasm')
-rw-r--r-- | src/lib/libcrypto/perlasm/x86ms.pl | 1 | ||||
-rw-r--r-- | src/lib/libcrypto/perlasm/x86nasm.pl | 8 | ||||
-rw-r--r-- | src/lib/libcrypto/perlasm/x86unix.pl | 7 |
3 files changed, 12 insertions, 4 deletions
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",@_); } | |||
160 | sub main'call { &out1("call",($_[0]=~/^\$L/?'':'_').$_[0]); } | 160 | sub main'call { &out1("call",($_[0]=~/^\$L/?'':'_').$_[0]); } |
161 | sub main'ret { &out0("ret"); } | 161 | sub main'ret { &out0("ret"); } |
162 | sub main'nop { &out0("nop"); } | 162 | sub main'nop { &out0("nop"); } |
163 | sub main'movz { &out2("movzx",@_); } | ||
163 | 164 | ||
164 | sub out2 | 165 | sub 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",@_); } | |||
169 | sub main'call { &out1("call",($_[0]=~/^\$L/?'':'_').$_[0]); } | 169 | sub main'call { &out1("call",($_[0]=~/^\$L/?'':'_').$_[0]); } |
170 | sub main'ret { &out0("ret"); } | 170 | sub main'ret { &out0("ret"); } |
171 | sub main'nop { &out0("nop"); } | 171 | sub main'nop { &out0("nop"); } |
172 | sub main'movz { &out2("movzx",@_); } | ||
172 | 173 | ||
173 | sub out2 | 174 | sub 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 10b669bf04..a31a25c12b 100644 --- a/src/lib/libcrypto/perlasm/x86unix.pl +++ b/src/lib/libcrypto/perlasm/x86unix.pl | |||
@@ -137,12 +137,12 @@ sub main'shl { &out2("sall",@_); } | |||
137 | sub main'shr { &out2("shrl",@_); } | 137 | sub main'shr { &out2("shrl",@_); } |
138 | sub main'xor { &out2("xorl",@_); } | 138 | sub main'xor { &out2("xorl",@_); } |
139 | sub main'xorb { &out2("xorb",@_); } | 139 | sub main'xorb { &out2("xorb",@_); } |
140 | sub main'add { &out2("addl",@_); } | 140 | sub main'add { &out2($_[0]=~/%[a-d][lh]/?"addb":"addl",@_); } |
141 | sub main'adc { &out2("adcl",@_); } | 141 | sub main'adc { &out2("adcl",@_); } |
142 | sub main'sub { &out2("subl",@_); } | 142 | sub main'sub { &out2("subl",@_); } |
143 | sub main'rotl { &out2("roll",@_); } | 143 | sub main'rotl { &out2("roll",@_); } |
144 | sub main'rotr { &out2("rorl",@_); } | 144 | sub main'rotr { &out2("rorl",@_); } |
145 | sub main'exch { &out2("xchg",@_); } | 145 | sub main'exch { &out2($_[0]=~/%[a-d][lh]/?"xchgb":"xchgl",@_); } |
146 | sub main'cmp { &out2("cmpl",@_); } | 146 | sub main'cmp { &out2("cmpl",@_); } |
147 | sub main'lea { &out2("leal",@_); } | 147 | sub main'lea { &out2("leal",@_); } |
148 | sub main'mul { &out1("mull",@_); } | 148 | sub main'mul { &out1("mull",@_); } |
@@ -164,7 +164,7 @@ sub main'jc { &out1("jc",@_); } | |||
164 | sub main'jnc { &out1("jnc",@_); } | 164 | sub main'jnc { &out1("jnc",@_); } |
165 | sub main'jno { &out1("jno",@_); } | 165 | sub main'jno { &out1("jno",@_); } |
166 | sub main'dec { &out1("decl",@_); } | 166 | sub main'dec { &out1("decl",@_); } |
167 | sub main'inc { &out1("incl",@_); } | 167 | sub main'inc { &out1($_[0]=~/%[a-d][hl]/?"incb":"incl",@_); } |
168 | sub main'push { &out1("pushl",@_); $stack+=4; } | 168 | sub main'push { &out1("pushl",@_); $stack+=4; } |
169 | sub main'pop { &out1("popl",@_); $stack-=4; } | 169 | sub main'pop { &out1("popl",@_); $stack-=4; } |
170 | sub main'pushf { &out0("pushf"); $stack+=4; } | 170 | sub main'pushf { &out0("pushf"); $stack+=4; } |
@@ -173,6 +173,7 @@ sub main'not { &out1("notl",@_); } | |||
173 | sub main'call { &out1("call",($_[0]=~/^\.L/?'':$under).$_[0]); } | 173 | sub main'call { &out1("call",($_[0]=~/^\.L/?'':$under).$_[0]); } |
174 | sub main'ret { &out0("ret"); } | 174 | sub main'ret { &out0("ret"); } |
175 | sub main'nop { &out0("nop"); } | 175 | sub main'nop { &out0("nop"); } |
176 | sub main'movz { &out2("movzbl",@_); } | ||
176 | 177 | ||
177 | # The bswapl instruction is new for the 486. Emulate if i386. | 178 | # The bswapl instruction is new for the 486. Emulate if i386. |
178 | sub main'bswap | 179 | sub main'bswap |