In the revision 1.9 of file x86cpuid.pl there appeared block with
some &setne instructions:
------------------
&xor ("eax","eax");
&cpuid ();
&xor ("eax","eax");
&cmp ("ebx",0x756e6547); # "Genu"
&setne (&LB("eax"));
&mov ("ebp","eax");
&cmp ("edx",0x49656e69); # "ineI"
&setne (&LB("eax"));
&or ("ebp","eax");
&cmp ("ecx",0x6c65746e); # "ntel"
&setne (&LB("eax"));
&or ("ebp","eax");
----------------------
These instructions are translated under Solaris x86 into
setneb assembler instruction which causes "Illegal mnemonic" error with
/usr/ccs/bin/as
Problem is reproduced on Solaris 8, Solaris 9 and Solaris 10 using GCC
from www.sunfreeware.com which is configured to use Sun assembler and
linker. (of course, patch to fix shared library initialization code
applied for all our test machines)
Also, expression
&and ("edx", ~(1<<28)) is incorrectly translated into
andl $18446744073441116159,%edx
on 32-bit platform
(should be "andl $4026531839,%edx"
)
which causes as to complain about "Value out of range".
It looks like problem somewhere in the perlasm which incorrectly uses
64-bit operations.
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [email protected]
Automated List Manager [EMAIL PROTECTED]