version 1.25, 2009/03/27 19:53:20 |
version 1.25.2.2, 2010/10/22 07:21:43 |
Line 69 tsc_tc_init(void) |
|
Line 69 tsc_tc_init(void) |
|
uint32_t descs[4]; |
uint32_t descs[4]; |
bool safe; |
bool safe; |
|
|
if ((cpu_feature & CPUID_TSC) == 0) { |
if (!cpu_hascounter()) { |
return; |
return; |
} |
} |
|
|
Line 128 tsc_tc_init(void) |
|
Line 128 tsc_tc_init(void) |
|
case 0x0f: |
case 0x0f: |
/* Check for "invariant TSC", bit 8 of %edx. */ |
/* Check for "invariant TSC", bit 8 of %edx. */ |
x86_cpuid(0x80000007, descs); |
x86_cpuid(0x80000007, descs); |
safe = (descs[3] & (1 << 8)) != 0; |
safe = (descs[3] & CPUID_APM_TSC) != 0; |
break; |
break; |
} |
} |
} |
} |
|
|
cpu_hascounter(void) |
cpu_hascounter(void) |
{ |
{ |
|
|
return cpu_feature & CPUID_TSC; |
return cpu_feature[0] & CPUID_TSC; |
} |
} |