24,6 → 24,8 |
#include <ll/i386/hw-data.h> |
#include <ll/i386/hw-arch.h> |
#include <ll/i386/mem.h> |
#include <ll/i386/advtimer.h> |
#include <ll/i386/apic.h> |
|
FILE(Cpu-C); |
|
58,11 → 60,29 |
&(p->X86_vendor_3), |
&(p->X86_vendor_2)); |
if (tmp >= 1) { |
|
cpuid(1, &(p->X86_signature), |
&(p->X86_IntelFeature_1), |
&(p->X86_IntelFeature_2), |
&(p->X86_StandardFeature)); |
|
if ((p->X86_StandardFeature >> 5) & 1) { |
|
unsigned long msr_original_low, msr_original_high; |
|
rdmsr(APIC_BASE_MSR, msr_original_low, msr_original_high); |
wrmsr(APIC_BASE_MSR, msr_original_low|(1<<11), 0); |
|
cpuid(1, &(p->X86_signature), |
&(p->X86_IntelFeature_1), |
&(p->X86_IntelFeature_2), |
&(p->X86_StandardFeature)); |
|
wrmsr(APIC_BASE_MSR, msr_original_low, msr_original_high); |
|
} |
|
} |
} else { |
p->X86_cpu = 4; |
if (X86_isCyrix()) { |