Changeset View
Changeset View
Standalone View
Standalone View
sys/i386/i386/initcpu.c
Show First 20 Lines • Show All 714 Lines • ▼ Show 20 Lines | case CPU_VENDOR_INTEL: | ||||
case 0x610: | case 0x610: | ||||
init_ppro(); | init_ppro(); | ||||
break; | break; | ||||
case 0x660: | case 0x660: | ||||
init_mendocino(); | init_mendocino(); | ||||
break; | break; | ||||
} | } | ||||
break; | break; | ||||
#ifdef CPU_ATHLON_SSE_HACK | |||||
case CPU_VENDOR_AMD: | case CPU_VENDOR_AMD: | ||||
#ifdef CPU_ATHLON_SSE_HACK | |||||
/* | /* | ||||
* Sometimes the BIOS doesn't enable SSE instructions. | * Sometimes the BIOS doesn't enable SSE instructions. | ||||
* According to AMD document 20734, the mobile | * According to AMD document 20734, the mobile | ||||
* Duron, the (mobile) Athlon 4 and the Athlon MP | * Duron, the (mobile) Athlon 4 and the Athlon MP | ||||
* support SSE. These correspond to cpu_id 0x66X | * support SSE. These correspond to cpu_id 0x66X | ||||
* or 0x67X. | * or 0x67X. | ||||
*/ | */ | ||||
if ((cpu_feature & CPUID_XMM) == 0 && | if ((cpu_feature & CPUID_XMM) == 0 && | ||||
((cpu_id & ~0xf) == 0x660 || | ((cpu_id & ~0xf) == 0x660 || | ||||
(cpu_id & ~0xf) == 0x670 || | (cpu_id & ~0xf) == 0x670 || | ||||
(cpu_id & ~0xf) == 0x680)) { | (cpu_id & ~0xf) == 0x680)) { | ||||
u_int regs[4]; | u_int regs[4]; | ||||
wrmsr(MSR_HWCR, rdmsr(MSR_HWCR) & ~0x08000); | wrmsr(MSR_HWCR, rdmsr(MSR_HWCR) & ~0x08000); | ||||
do_cpuid(1, regs); | do_cpuid(1, regs); | ||||
cpu_feature = regs[3]; | cpu_feature = regs[3]; | ||||
} | } | ||||
break; | |||||
#endif | #endif | ||||
/* | |||||
* Detect C1E that breaks APIC. See comment in | |||||
* amd64/initcpu.c. | |||||
*/ | |||||
if ((CPUID_TO_FAMILY(cpu_id) == 0xf || | |||||
CPUID_TO_FAMILY(cpu_id) == 0x10) && | |||||
(cpu_feature2 & CPUID2_HV) == 0) | |||||
cpu_amdc1e_bug = 1; | |||||
break; | |||||
case CPU_VENDOR_CENTAUR: | case CPU_VENDOR_CENTAUR: | ||||
init_via(); | init_via(); | ||||
break; | break; | ||||
case CPU_VENDOR_TRANSMETA: | case CPU_VENDOR_TRANSMETA: | ||||
init_transmeta(); | init_transmeta(); | ||||
break; | break; | ||||
} | } | ||||
break; | break; | ||||
▲ Show 20 Lines • Show All 243 Lines • Show Last 20 Lines |