Split ms/uplink.pl to corresponding platform versions.
[openssl.git] / ms / uplink-x86.pl
diff --git a/ms/uplink-x86.pl b/ms/uplink-x86.pl
new file mode 100755 (executable)
index 0000000..0dffc14
--- /dev/null
@@ -0,0 +1,33 @@
+#!/usr/bin/env perl
+
+$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
+push(@INC, "${dir}.", "${dir}../crypto/perlasm");
+require "x86asm.pl";
+
+require "uplink-common.pl";
+
+&asm_init($ARGV[0],"uplink-x86");
+
+&external_label("OPENSSL_Uplink");
+&public_label("OPENSSL_UplinkTable");
+
+for ($i=1;$i<=$N;$i++) {
+&function_begin_B("_\$lazy${i}");
+       &lea    ("eax",&DWP(&label("OPENSSL_UplinkTable")));
+       &push   ("eax");
+       &push   ($i);
+       &call   (&label("OPENSSL_Uplink"));
+       &add    ("esp",8);
+       &pop    ("eax");
+       &jmp_ptr(&DWP(4*$i,"eax"));
+&function_end_B("_\$lazy${i}");
+}
+
+&dataseg();
+&align(4);
+&set_label("OPENSSL_UplinkTable");
+&data_word($N);
+for ($i=1;$i<=$N;$i++) {
+&data_word(&label("_\$lazy${i}"));
+}
+&asm_finish();