OpenSSL CVS Repository
http://cvs.openssl.org/
____________________________________________________________
________________
Server: cvs.openssl.org Name: Andy
Polyakov
Root: /v/openssl/cvs Email: appro openssl.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-cvs openssl.org
Automated List Manager
majordomo openssl.org
|