x86*cpuid update.
This commit is contained in:
parent
a415ebd026
commit
3df2eff4bd
@ -134,8 +134,6 @@ OPENSSL_ia32_cpuid:
|
|||||||
|
|
||||||
mov \$1,%eax
|
mov \$1,%eax
|
||||||
cpuid
|
cpuid
|
||||||
bt \$28,%edx # test hyper-threading bit
|
|
||||||
jnc .Ldone
|
|
||||||
cmp \$0,%r9d
|
cmp \$0,%r9d
|
||||||
jne .Lnotintel
|
jne .Lnotintel
|
||||||
or \$1<<20,%edx # use reserved bit to engage RC4_CHAR
|
or \$1<<20,%edx # use reserved bit to engage RC4_CHAR
|
||||||
@ -144,6 +142,8 @@ OPENSSL_ia32_cpuid:
|
|||||||
je .Lnotintel
|
je .Lnotintel
|
||||||
or \$1<<30,%edx # use reserved bit to skip unrolled loop
|
or \$1<<30,%edx # use reserved bit to skip unrolled loop
|
||||||
.Lnotintel:
|
.Lnotintel:
|
||||||
|
bt \$28,%edx # test hyper-threading bit
|
||||||
|
jnc .Ldone
|
||||||
shr \$16,%ebx
|
shr \$16,%ebx
|
||||||
cmp \$1,%bl # see if cache is shared
|
cmp \$1,%bl # see if cache is shared
|
||||||
ja .Ldone
|
ja .Ldone
|
||||||
|
@ -19,7 +19,7 @@ for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); }
|
|||||||
&pop ("eax");
|
&pop ("eax");
|
||||||
&xor ("ecx","eax");
|
&xor ("ecx","eax");
|
||||||
&bt ("ecx",21);
|
&bt ("ecx",21);
|
||||||
&jnc (&label("nocpuid"));
|
&jnc (&label("done"));
|
||||||
&xor ("eax","eax");
|
&xor ("eax","eax");
|
||||||
&cpuid ();
|
&cpuid ();
|
||||||
&xor ("eax","eax");
|
&xor ("eax","eax");
|
||||||
@ -34,17 +34,20 @@ for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); }
|
|||||||
&or ("ebp","eax");
|
&or ("ebp","eax");
|
||||||
&mov ("eax",1);
|
&mov ("eax",1);
|
||||||
&cpuid ();
|
&cpuid ();
|
||||||
&bt ("edx",28); # test hyper-threading bit
|
|
||||||
&jnc (&label("nocpuid"));
|
|
||||||
&cmp ("ebp",0);
|
&cmp ("ebp",0);
|
||||||
&jne (&label("notintel"));
|
&jne (&label("notP4"));
|
||||||
|
&and (&HB("eax"),15); # familiy ID
|
||||||
|
&cmp (&HB("eax"),15); # P4?
|
||||||
|
&jne (&label("notP4"));
|
||||||
&or ("edx",1<<20); # use reserved bit to engage RC4_CHAR
|
&or ("edx",1<<20); # use reserved bit to engage RC4_CHAR
|
||||||
&set_label("notintel");
|
&set_label("notP4");
|
||||||
|
&bt ("edx",28); # test hyper-threading bit
|
||||||
|
&jnc (&label("done"));
|
||||||
&shr ("ebx",16);
|
&shr ("ebx",16);
|
||||||
&cmp (&LB("ebx"),1); # see if cache is shared(*)
|
&cmp (&LB("ebx"),1); # see if cache is shared(*)
|
||||||
&ja (&label("nocpuid"));
|
&ja (&label("done"));
|
||||||
&and ("edx",0xefffffff); # clear hyper-threading bit if not
|
&and ("edx",0xefffffff); # clear hyper-threading bit if not
|
||||||
&set_label("nocpuid");
|
&set_label("done");
|
||||||
&mov ("eax","edx");
|
&mov ("eax","edx");
|
||||||
&mov ("edx","ecx");
|
&mov ("edx","ecx");
|
||||||
&function_end("OPENSSL_ia32_cpuid");
|
&function_end("OPENSSL_ia32_cpuid");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user