Implemented CMPXCHG8B on Winchip. Patch from nerd73.
This commit is contained in:
parent
c07b76dc8e
commit
919f2dd45d
5 changed files with 17 additions and 6 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue