Better ACPI implementation (currently only on PIIX4/PIIX4E/SMSC southbridges), finished the SMSC southbridge (but the Atrend BIOS still hangs, need to figure out why), and fixed Tandy EEPROM saving.
This commit is contained in:
@@ -1077,6 +1077,9 @@ enter_smm(int in_hlt)
|
||||
smm_in_hlt = in_hlt;
|
||||
|
||||
CPU_BLOCK_END();
|
||||
|
||||
// if (smbase == 0x000a0000)
|
||||
// leave_smm();
|
||||
}
|
||||
|
||||
|
||||
@@ -1132,6 +1135,10 @@ leave_smm(void)
|
||||
else if (is_p6) /* Intel P6 (Pentium Pro, Pentium II, Celeron) */
|
||||
smram_restore_state_p6(saved_state);
|
||||
|
||||
/* Maybe we need this? */
|
||||
if (smbase == 0x00030000)
|
||||
smbase = 0x000a0000;
|
||||
|
||||
in_smm = 0;
|
||||
mem_mapping_recalc(0x00030000, 0x00020000);
|
||||
mem_mapping_recalc(0x000a0000, 0x00060000);
|
||||
|
||||
@@ -2202,9 +2202,15 @@ cpu_CPUID(void)
|
||||
EAX = CPUID;
|
||||
EBX = ECX = 0;
|
||||
EDX = CPUID_FPU | CPUID_VME | CPUID_PSE | CPUID_TSC | CPUID_MSR | CPUID_PAE | CPUID_CMPXCHG8B | CPUID_MTRR/* | CPUID_SEP*/ | CPUID_CMOV;
|
||||
#ifdef USE_SEP
|
||||
EDX |= CPUID_SEP;
|
||||
#endif
|
||||
}
|
||||
else if (EAX == 2)
|
||||
{
|
||||
EAX = 0x00000001;
|
||||
EBX = ECX = 0;
|
||||
EDX = 0x00000000;
|
||||
}
|
||||
else
|
||||
EAX = EBX = ECX = EDX = 0;
|
||||
@@ -2223,12 +2229,15 @@ cpu_CPUID(void)
|
||||
EAX = CPUID;
|
||||
EBX = ECX = 0;
|
||||
EDX = CPUID_FPU | CPUID_VME | CPUID_PSE | CPUID_TSC | CPUID_MSR | CPUID_PAE | CPUID_CMPXCHG8B | CPUID_MMX | CPUID_MTRR/* | CPUID_SEP*/ | CPUID_CMOV;
|
||||
#ifdef USE_SEP
|
||||
EDX |= CPUID_SEP;
|
||||
#endif
|
||||
}
|
||||
else if (EAX == 2)
|
||||
{
|
||||
EAX = 0x03020101;
|
||||
EAX = 0x00000001;
|
||||
EBX = ECX = 0;
|
||||
EDX = 0x0C040843;
|
||||
EDX = 0x00000000;
|
||||
}
|
||||
else
|
||||
EAX = EBX = ECX = EDX = 0;
|
||||
@@ -2247,12 +2256,15 @@ cpu_CPUID(void)
|
||||
EAX = CPUID;
|
||||
EBX = ECX = 0;
|
||||
EDX = CPUID_FPU | CPUID_VME | CPUID_PSE | CPUID_TSC | CPUID_MSR | CPUID_PAE | CPUID_CMPXCHG8B | CPUID_MMX | CPUID_MTRR/* | CPUID_SEP*/ | CPUID_FXSR | CPUID_CMOV;
|
||||
#ifdef USE_SEP
|
||||
EDX |= CPUID_SEP;
|
||||
#endif
|
||||
}
|
||||
else if (EAX == 2)
|
||||
{
|
||||
EAX = 0x03020101;
|
||||
EAX = 0x00000001;
|
||||
EBX = ECX = 0;
|
||||
EDX = 0x0C040844;
|
||||
EDX = 0x00000000;
|
||||
}
|
||||
else
|
||||
EAX = EBX = ECX = EDX = 0;
|
||||
|
||||
Reference in New Issue
Block a user