uplink-x86.pl revision 1.1.1.1
1353944Sdim#!/usr/bin/env perl 2353944Sdim 3353944Sdim$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; 4353944Sdimpush(@INC, "${dir}.", "${dir}../crypto/perlasm"); 5353944Sdimrequire "x86asm.pl"; 6353944Sdim 7353944Sdimrequire "uplink-common.pl"; 8353944Sdim 9353944Sdim&asm_init($ARGV[0],"uplink-x86"); 10353944Sdim 11353944Sdim&external_label("OPENSSL_Uplink"); 12353944Sdim&public_label("OPENSSL_UplinkTable"); 13353944Sdim 14353944Sdimfor ($i=1;$i<=$N;$i++) { 15353944Sdim&function_begin_B("_\$lazy${i}"); 16353944Sdim &lea ("eax",&DWP(&label("OPENSSL_UplinkTable"))); 17353944Sdim &push ($i); 18353944Sdim &push ("eax"); 19353944Sdim &call (&label("OPENSSL_Uplink")); 20353944Sdim &pop ("eax"); 21353944Sdim &add ("esp",4); 22353944Sdim &jmp_ptr(&DWP(4*$i,"eax")); 23353944Sdim&function_end_B("_\$lazy${i}"); 24353944Sdim} 25353944Sdim 26353944Sdim&dataseg(); 27353944Sdim&align(4); 28353944Sdim&set_label("OPENSSL_UplinkTable"); 29353944Sdim&data_word($N); 30353944Sdimfor ($i=1;$i<=$N;$i++) { 31353944Sdim&data_word(&label("_\$lazy${i}")); 32353944Sdim} 33353944Sdim&asm_finish(); 34353944Sdim