Unified - adapt the generation of cpuid, uplink and buildinf to use GENERATE
[openssl.git] / ms / uplink-x86.pl
1 #!/usr/bin/env perl
2
3 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
4 push(@INC, "${dir}.", "${dir}../crypto/perlasm");
5 require "x86asm.pl";
6
7 require "uplink-common.pl";
8
9 $output = pop;
10 open STDOUT,">$output";
11
12 &asm_init($ARGV[0],"uplink-x86");
13
14 &external_label("OPENSSL_Uplink");
15 &public_label("OPENSSL_UplinkTable");
16
17 for ($i=1;$i<=$N;$i++) {
18 &function_begin_B("_\$lazy${i}");
19         &lea    ("eax",&DWP(&label("OPENSSL_UplinkTable")));
20         &push   ($i);
21         &push   ("eax");
22         &call   (&label("OPENSSL_Uplink"));
23         &pop    ("eax");
24         &add    ("esp",4);
25         &jmp_ptr(&DWP(4*$i,"eax"));
26 &function_end_B("_\$lazy${i}");
27 }
28
29 &dataseg();
30 &align(4);
31 &set_label("OPENSSL_UplinkTable");
32 &data_word($N);
33 for ($i=1;$i<=$N;$i++) {
34 &data_word(&label("_\$lazy${i}"));
35 }
36 &asm_finish();
37
38 close OUTPUT;