diff options
author | Andy Polyakov <appro@openssl.org> | 2008-07-22 08:47:35 +0000 |
---|---|---|
committer | Andy Polyakov <appro@openssl.org> | 2008-07-22 08:47:35 +0000 |
commit | 4c048211f19d587133d4d688f5b1045a0bd4cb15 (patch) | |
tree | d2e84857f43090d8a05adf0fc092ca514e910ea6 /ms/uplink-x86.pl | |
parent | b94551e823599dee6c47dd8a60c1be416b404592 (diff) |
Split ms/uplink.pl to corresponding platform versions.
Diffstat (limited to 'ms/uplink-x86.pl')
-rwxr-xr-x | ms/uplink-x86.pl | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/ms/uplink-x86.pl b/ms/uplink-x86.pl new file mode 100755 index 0000000000..0dffc14fcd --- /dev/null +++ b/ms/uplink-x86.pl @@ -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(); |