des-596.pl update: short-circuit reference to DES_SPtrans.
[openssl.git] / crypto / des / asm / des-586.pl
index de6013624fddf1acc1a9f71a1b69bc987022f531..5b5f39cebd13cacd626241867a0d1eccd1463865 100644 (file)
@@ -4,7 +4,8 @@
 # Svend Olaf Mikkelsen <svolaf@inet.uni-c.dk>
 #
 
-push(@INC,"perlasm","../../perlasm");
+$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
+push(@INC,"${dir}","${dir}../../perlasm");
 require "x86asm.pl";
 require "cbc.pl";
 require "desboth.pl";
@@ -23,6 +24,8 @@ $small_footprint=1 if (grep(/\-DOPENSSL_SMALL_FOOTPRINT/,@ARGV));
 # one can discuss setting this variable to 1 unconditionally, as
 # the folded loop is only 3% slower than unrolled, but >7 times smaller
 
+&public_label("DES_SPtrans");
+
 &DES_encrypt_internal();
 &DES_decrypt_internal();
 &DES_encrypt("DES_encrypt1",1);
@@ -152,7 +155,10 @@ sub DES_encrypt
                }
 
        # PIC-ification:-)
-       &picmeup($trans,"DES_SPtrans");
+       &call   (&label("pic_point"));
+       &set_label("pic_point");
+       &blindpop($trans);
+       &lea    ($trans,&DWP(&label("DES_SPtrans")."-".&label("pic_point"),$trans));
 
        &mov(   "ecx",  &wparam(1)      );
 
@@ -308,7 +314,6 @@ sub FP_new
 
 sub DES_SPtrans
        {
-       &public_label("DES_SPtrans");
        &set_label("DES_SPtrans",64);
        &data_word(0x02080800, 0x00080000, 0x02000002, 0x02080802);
        &data_word(0x02000000, 0x00080802, 0x00080002, 0x02000002);