1#! /usr/bin/env perl 2# Copyright 2008-2018 The OpenSSL Project Authors. All Rights Reserved. 3# 4# Licensed under the OpenSSL license (the "License"). You may not use 5# this file except in compliance with the License. You can obtain a copy 6# in the file LICENSE in the source distribution or at 7# https://www.openssl.org/source/license.html 8 9$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; 10push(@INC, "${dir}.", "${dir}../crypto/perlasm"); 11require "x86asm.pl"; 12 13require "uplink-common.pl"; 14 15$output = pop; 16open STDOUT,">$output"; 17 18&asm_init($ARGV[0]); 19 20&external_label("OPENSSL_Uplink"); 21&public_label("OPENSSL_UplinkTable"); 22 23for ($i=1;$i<=$N;$i++) { 24&function_begin_B("_\$lazy${i}"); 25 &lea ("eax",&DWP(&label("OPENSSL_UplinkTable"))); 26 &push ($i); 27 &push ("eax"); 28 &call (&label("OPENSSL_Uplink")); 29 &pop ("eax"); 30 &add ("esp",4); 31 &jmp_ptr(&DWP(4*$i,"eax")); 32&function_end_B("_\$lazy${i}"); 33} 34 35&dataseg(); 36&align(4); 37&set_label("OPENSSL_UplinkTable"); 38&data_word($N); 39for ($i=1;$i<=$N;$i++) { 40&data_word(&label("_\$lazy${i}")); 41} 42&asm_finish(); 43 44close STDOUT; 45