[Issue 3798] core.cpuid locks systems with Xeon E5530 CPU
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri Feb 12 12:26:29 PST 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3798
--- Comment #1 from David Simcha <dsimcha at yahoo.com> 2010-02-12 12:24:55 PST ---
ASsa temporary workaround, I'm using:
if (0) { //max_cpuid >=0x0B) {
// For Intel i7 and later, use function 0x0B to determine
// cores and hyperthreads.
getCpuInfo0B();
} else {
if (hyperThreadingBit) maxThreads = (apic>>>16) & 0xFF;
else maxThreads = maxCores;
}
The problem appears to be that the termination condition for the following loop
never becomes true:
do {
asm {
mov EAX, 0x0B;
mov ECX, level;
cpuid;
mov a, EAX;
mov b, EAX;
mov c, ECX;
mov d, EDX;
}
if (b!=0) {
// I'm not sure about this. The docs state that there
// are 2 hyperthreads per core if HT is factory enabled.
if (level==0) maxThreads = b & 0xFFFF;
else if (level==1) maxCores = b & 0xFFFF;
}
} while (a!=0 || b!=0);
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list