x86cpuid.pl: fix processor capability detection on pre-586.
[openssl.git] / crypto / x86cpuid.pl
index 168e4fa0a9b3b02caa66f110f42aec0cd2de9eb7..a1285b9d002af77bd44337d7d9a0d2049d2318b5 100644 (file)
@@ -19,9 +19,9 @@ for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); }
        &pushf  ();
        &pop    ("eax");
        &xor    ("ecx","eax");
-       &bt     ("ecx",21);
-       &jnc    (&label("generic"));
        &xor    ("eax","eax");
+       &bt     ("ecx",21);
+       &jnc    (&label("nocpuid"));
        &cpuid  ();
        &mov    ("edi","eax");          # max value for standard query level
 
@@ -119,8 +119,6 @@ for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); }
        &mov    ("esi","edx");
        &or     ("ebp","ecx");          # merge AMD XOP flag
 
-       &bt     ("ecx",26);             # check XSAVE bit
-       &jnc    (&label("done"));
        &bt     ("ecx",27);             # check OSXSAVE bit
        &jnc    (&label("clear_avx"));
        &xor    ("ecx","ecx");
@@ -138,6 +136,7 @@ for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); }
 &set_label("done");
        &mov    ("eax","esi");
        &mov    ("edx","ebp");
+&set_label("nocpuid");
 &function_end("OPENSSL_ia32_cpuid");
 
 &external_label("OPENSSL_ia32cap_P");