List Info

Thread: OpenSSL: openssl/crypto/perlasm/ x86unix.pl




OpenSSL: openssl/crypto/perlasm/ x86unix.pl
user name
2006-07-31 22:26:41
  OpenSSL CVS Repository
  http://cvs.openssl.org/
 
____________________________________________________________
________________

  Server: cvs.openssl.org                  Name:   Andy
Polyakov
  Root:   /v/openssl/cvs                   Email:  approopenssl.org
  Module: openssl                          Date:  
01-Aug-2006 00:26:41
  Branch: HEAD                             Handle:
2006073123264000

  Modified files:
    openssl/crypto/perlasm  x86unix.pl

  Log:
    perlasm/x86unix.pl update.

  Summary:
    Revision    Changes     Path
    1.45        +38 -6     
openssl/crypto/perlasm/x86unix.pl
 
____________________________________________________________
________________

  patch -p0 <<' .'
  Index: openssl/crypto/perlasm/x86unix.pl
 
============================================================
================
  $ cvs diff -u -r1.44 -r1.45 x86unix.pl
  --- openssl/crypto/perlasm/x86unix.pl	6 Dec 2005 18:43:59
-0000	1.44
  +++ openssl/crypto/perlasm/x86unix.pl	31 Jul 2006 22:26:40
-0000	1.45
   -234,6 +234,15 
   		{	push(out,"\tpshufw\t\$0xe4,%$p2,%$p1\n");	
}
   	else	{	&out2("movq",_);				}
   	}
  +sub main'pshufw	{
  +	local ($dst,$src,$magic)=_;
  +	push(out,"\tpshufw\t\$$magic,%$src,%$dst\n"
;);
  +	}
  +sub main'punpckldq	{
&out2("punpckldq",_); }
  +sub main'pcmpgtb	{ &out2("pcmpgtb",_);   }
  +sub main'paddb		{ &out2("paddb",_);     }
  +sub main'psrld		{ &out2("psrld",_);     }
  +sub main'pslld		{ &out2("pslld",_);     }
   
   # The bswapl instruction is new for the 486. Emulate if
i386.
   sub main'bswap
   -690,10 +699,14 
   
   sub main'picmeup
   	{
  -	local($dst,$sym)=_;
  +	local($dst,$sym,$base,$label)=_;
  +
   	if ($main'cpp)
   		{
  -		local($tmp)=<<___;
  +		local($tmp);
  +		if (!defined($base))
  +			{
  +			$tmp=<<___;
   #if (defined(ELF) || defined(SOL)) &&
defined(PIC)
   	call	1f
   1:	popl	$regs{$dst}
   -703,15 +716,34 
   	leal	$sym,$regs{$dst}
   #endif
   ___
  +			}
  +		else	{
  +			$tmp=<<___;
  +#if (defined(ELF) || defined(SOL)) &&
defined(PIC)
 
+	leal	_GLOBAL_OFFSET_TABLE_+[.-$label]($regs{$base}),$regs{
$dst}
  +	movl	$sym\GOT($regs{$dst}),$regs{$dst}
  +#else
  +	leal	$sym,$regs{$dst}
  +#endif
  +___
  +			}
   		push(out,$tmp);
   		}
   	elsif ($main'pic && ($main'elf ||
$main'aout))
   		{
 
-		&main'call(&main'label("PIC_me_up")
);
  -		&main'set_label("PIC_me_up");
  -		&main'blindpop($dst);
 
-		&main'add($dst,"\$$_GLOBAL_OFFSET_TABL
E_+[.-".
  +		if (!defined($base))
  +			{
 
+			&main'call(&main'label("PIC_me_up"
));
  +			&main'set_label("PIC_me_up");
  +			&main'blindpop($dst);
 
+			&main'add($dst,"\$$_GLOBAL_OFFSET_TAB
LE_+[.-".
   				&main'label("PIC_me_up") .
"]");
  +			}
  +		else	{
  +			&main'lea($dst,&main'DWP(
 
+				"$_GLOBAL_OFFSET_TABLE_+[.-$label]",
  +				$base));
  +			}
  
		&main'mov($dst,&main'DWP($under.$sym."\GOT",$dst));
   		}
   	else
   .
____________________________________________________________
__________
OpenSSL Project                                 http://www.openssl.org
CVS Repository Commit List                    
openssl-cvsopenssl.org
Automated List Manager                          
majordomoopenssl.org
[1]

about | contact  Other archives ( Real Estate discussion Medical topics )