X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=ms%2Fuplink.pl;h=cd9d37f56f74df5dd87f4de25cfa798e6eb4545b;hp=801f6e01faf75a59aca34d593e4371b09f49fc48;hb=ea1b02db6ab4864befde88ed03099f075cf7db76;hpb=2c4b354d32b1f34314f1a3ebeee0d0fcfb7505a0 diff --git a/ms/uplink.pl b/ms/uplink.pl index 801f6e01fa..cd9d37f56f 100755 --- a/ms/uplink.pl +++ b/ms/uplink.pl @@ -29,10 +29,37 @@ $arg = shift; if ($arg =~ /win32n/) { ia32nasm(); } elsif ($arg =~ /win32/) { ia32masm(); } -elsif ($arg =~ /ia64/) { ia64ias(); } -elsif ($arg =~ /amd64/) { amd64masm(); } +elsif ($arg =~ /coff/) { ia32gas(); } +elsif ($arg =~ /win64i/ or $arg =~ /ia64/) { ia64ias(); } +elsif ($arg =~ /win64a/ or $arg =~ /amd64/) { amd64masm(); } else { die "nonsense $arg"; } +sub ia32gas() { +print <<___; +.text +___ +for ($i=1;$i<=$N;$i++) { +print <<___; +.def .Lazy$i; .scl 3; .type 32; .endef +.align 4 +.Lazy$i: + pushl \$$i + pushl _OPENSSL_UplinkTable + call _OPENSSL_Uplink + addl \$8,%esp + jmp *(_OPENSSL_UplinkTable+4*$i) +___ +} +print <<___; +.data +.align 4 +.globl _OPENSSL_UplinkTable +_OPENSSL_UplinkTable: + .long $N +___ +for ($i=1;$i<=$N;$i++) { print " .long .Lazy$i\n"; } +} + sub ia32masm() { print <<___; .386P