Implemented CMPXCHG8B on Winchip. Patch from nerd73.

This commit is contained in:
SarahW 2018-03-03 21:32:56 +00:00
commit 919f2dd45d
5 changed files with 17 additions and 6 deletions

View file

@ -74,6 +74,7 @@ int cpu_busspeed;
int cpu_hasrdtsc;
int cpu_hasMMX, cpu_hasMSR;
int cpu_hasCR4;
int cpu_hasCX8;
int cpu_hasVME;
int cpu_use_dynarec;
int cpu_cyrix_alignment;
@ -500,6 +501,7 @@ void cpu_set()
cpu_hasMMX = 0;
cpu_hasMSR = 0;
cpu_hasCR4 = 0;
cpu_hasCX8 = 0;
ccr0 = ccr1 = ccr2 = ccr3 = ccr4 = ccr5 = ccr6 = 0;
has_vlb = (cpu_s->cpu_type >= CPU_i486SX) && (cpu_s->cpu_type <= CPU_Cx5x86);
@ -1299,6 +1301,8 @@ void cpu_CPUID()
EAX = 0x540;
EBX = ECX = 0;
EDX = CPUID_FPU | CPUID_TSC | CPUID_MSR;
if (cpu_hasCX8)
EDX |= CPUID_CMPXCHG8B;
if (msr.fcr & (1 << 9))
EDX |= CPUID_MMX;
}
@ -1504,6 +1508,10 @@ void cpu_WRMSR()
case 0x107:
msr.fcr = EAX;
cpu_hasMMX = EAX & (1 << 9);
if (EAX & (1 << 1))
cpu_hasCX8 = 1;
else
cpu_hasCX8 = 0;
if (EAX & (1 << 29))
CPUID = 0;
else