mirror of
https://github.com/openssl/openssl.git
synced 2025-01-18 13:44:20 +08:00
New switch "386" to generate 80386 code (emulate bswap).
This commit is contained in:
parent
bc37a6b81c
commit
0f247decd0
@ -18,6 +18,11 @@ sub main'asm_init
|
||||
($type,$fn)=@_;
|
||||
$filename=$fn;
|
||||
|
||||
if ($ARGV[$#ARGV] eq "386")
|
||||
{
|
||||
$i386=1;
|
||||
}
|
||||
|
||||
$cpp=$sol=$aout=$win32=0;
|
||||
if ( ($type eq "elf"))
|
||||
{ require "x86unix.pl"; }
|
||||
@ -32,6 +37,8 @@ sub main'asm_init
|
||||
else
|
||||
{
|
||||
print STDERR <<"EOF";
|
||||
Usage: $filename <target> [386]
|
||||
|
||||
Pick one target type from
|
||||
elf - linux, FreeBSD etc
|
||||
a.out - old linux
|
||||
|
@ -1,11 +1,5 @@
|
||||
#!/usr/local/bin/perl
|
||||
|
||||
# Because the bswapl instruction is not supported for old assembers
|
||||
# (it was a new instruction for the 486), I've added .byte xxxx code
|
||||
# to put it in.
|
||||
# eric 24-Apr-1998
|
||||
#
|
||||
|
||||
package x86unix;
|
||||
|
||||
$label="L000";
|
||||
@ -158,12 +152,27 @@ sub main'dec { &out1("decl",@_); }
|
||||
sub main'inc { &out1("incl",@_); }
|
||||
sub main'push { &out1("pushl",@_); $stack+=4; }
|
||||
sub main'pop { &out1("popl",@_); $stack-=4; }
|
||||
sub main'bswap { &out1("bswapl",@_); }
|
||||
sub main'not { &out1("notl",@_); }
|
||||
sub main'call { &out1("call",$under.$_[0]); }
|
||||
sub main'ret { &out0("ret"); }
|
||||
sub main'nop { &out0("nop"); }
|
||||
|
||||
# The bswapl instruction is new for the 486. Emulate if i386.
|
||||
sub main'bswap
|
||||
{
|
||||
if ($main'i386)
|
||||
{
|
||||
&main'comment("bswapl @_");
|
||||
&main'exch(main'HB(@_),main'LB(@_));
|
||||
&main'rotr(@_,16);
|
||||
&main'exch(main'HB(@_),main'LB(@_));
|
||||
}
|
||||
else
|
||||
{
|
||||
&out1("bswapl",@_);
|
||||
}
|
||||
}
|
||||
|
||||
sub out2
|
||||
{
|
||||
local($name,$p1,$p2)=@_;
|
||||
|
Loading…
Reference in New Issue
Block a user