Implement IDT/VIA FCR2 CPUID family/model spoofing

This commit is contained in:
Alexander Babikov
2024-01-26 16:58:45 +05:00
parent 2da7b196ac
commit 032a161c4a

View File

@@ -1961,7 +1961,7 @@ cpu_CPUID(void)
EDX = 0x48727561; EDX = 0x48727561;
} }
} else if (EAX == 1) { } else if (EAX == 1) {
EAX = 0x540; EAX = ((msr.fcr2 & 0x0ff0) ? ((msr.fcr2 & 0x0ff0) | (CPUID & 0xf00f)) : CPUID);
EBX = ECX = 0; EBX = ECX = 0;
EDX = CPUID_FPU | CPUID_TSC | CPUID_MSR; EDX = CPUID_FPU | CPUID_TSC | CPUID_MSR;
if (cpu_has_feature(CPU_FEATURE_CX8)) if (cpu_has_feature(CPU_FEATURE_CX8))
@@ -1987,7 +1987,7 @@ cpu_CPUID(void)
} }
break; break;
case 1: case 1:
EAX = CPUID; EAX = ((msr.fcr2 & 0x0ff0) ? ((msr.fcr2 & 0x0ff0) | (CPUID & 0xf00f)) : CPUID);
EBX = ECX = 0; EBX = ECX = 0;
EDX = CPUID_FPU | CPUID_TSC | CPUID_MSR; EDX = CPUID_FPU | CPUID_TSC | CPUID_MSR;
if (cpu_has_feature(CPU_FEATURE_CX8)) if (cpu_has_feature(CPU_FEATURE_CX8))
@@ -2464,7 +2464,7 @@ cpu_CPUID(void)
} }
break; break;
case 1: case 1:
EAX = CPUID; EAX = ((msr.fcr2 & 0x0ff0) ? ((msr.fcr2 & 0x0ff0) | (CPUID & 0xf00f)) : CPUID);
EBX = ECX = 0; EBX = ECX = 0;
EDX = CPUID_FPU | CPUID_TSC | CPUID_MSR | CPUID_MCE | CPUID_MMX | CPUID_MTRR; EDX = CPUID_FPU | CPUID_TSC | CPUID_MSR | CPUID_MCE | CPUID_MMX | CPUID_MTRR;
if (cpu_has_feature(CPU_FEATURE_CX8)) if (cpu_has_feature(CPU_FEATURE_CX8))