aboutsummaryrefslogtreecommitdiff
path: root/openssl-1.1.0h/ms/uplink-x86.pl
diff options
context:
space:
mode:
Diffstat (limited to 'openssl-1.1.0h/ms/uplink-x86.pl')
-rwxr-xr-xopenssl-1.1.0h/ms/uplink-x86.pl44
1 files changed, 44 insertions, 0 deletions
diff --git a/openssl-1.1.0h/ms/uplink-x86.pl b/openssl-1.1.0h/ms/uplink-x86.pl
new file mode 100755
index 0000000..e25668e
--- /dev/null
+++ b/openssl-1.1.0h/ms/uplink-x86.pl
@@ -0,0 +1,44 @@
+#! /usr/bin/env perl
+# Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
+#
+# Licensed under the OpenSSL license (the "License"). You may not use
+# this file except in compliance with the License. You can obtain a copy
+# in the file LICENSE in the source distribution or at
+# https://www.openssl.org/source/license.html
+
+$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
+push(@INC, "${dir}.", "${dir}../crypto/perlasm");
+require "x86asm.pl";
+
+require "uplink-common.pl";
+
+$output = pop;
+open STDOUT,">$output";
+
+&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 ($i);
+ &push ("eax");
+ &call (&label("OPENSSL_Uplink"));
+ &pop ("eax");
+ &add ("esp",4);
+ &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();
+
+close OUTPUT;