Loading crypto/x86_64cpuid.pl +2 −2 Original line number Original line Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading crypto/x86cpuid.pl +10 −7 Original line number Original line Diff line number Diff line Loading @@ -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"); Loading @@ -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 Loading
crypto/x86_64cpuid.pl +2 −2 Original line number Original line Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading
crypto/x86cpuid.pl +10 −7 Original line number Original line Diff line number Diff line Loading @@ -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"); Loading @@ -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