Configire: take multi-block modules into build loop.
[openssl.git] / crypto / x86cpuid.pl
index 3b6c469d082613eec9e2078c859cc87277035156..ef1216a8b2ed4cc8ee5fc35667114ce36017b1aa 100644 (file)
@@ -69,6 +69,7 @@ for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); }
        &inc    ("esi");                # number of cores
 
        &mov    ("eax",1);
+       &xor    ("ecx","ecx");
        &cpuid  ();
        &bt     ("edx",28);
        &jnc    (&label("generic"));
@@ -80,6 +81,16 @@ for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); }
        &jmp    (&label("generic"));
        
 &set_label("intel");
+       &cmp    ("edi",7);
+       &jb     (&label("cacheinfo"));
+
+       &mov    ("esi",&wparam(0));
+       &mov    ("eax",7);
+       &xor    ("ecx","ecx");
+       &cpuid  ();
+       &mov    (&DWP(8,"esi"),"ebx");
+
+&set_label("cacheinfo");
        &cmp    ("edi",4);
        &mov    ("edi",-1);
        &jb     (&label("nocacheinfo"));
@@ -91,17 +102,9 @@ for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); }
        &shr    ("edi",14);
        &and    ("edi",0xfff);          # number of cores -1 per L1D
 
-       &cmp    ("edi",7);
-       &jb     (&label("nocacheinfo"));
-
-       &mov    ("esi",&wparam(0));
-       &mov    ("eax",7);
-       &xor    ("ecx","ecx");
-       &cpuid  ();
-       &mov    (&DWP(8,"esi"),"ebx");
-
 &set_label("nocacheinfo");
        &mov    ("eax",1);
+       &xor    ("ecx","ecx");
        &cpuid  ();
        &and    ("edx",0xbfefffff);     # force reserved bits #20, #30 to 0
        &cmp    ("ebp",0);