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:
OBattler
2020-04-13 20:01:47 +02:00
parent 0045874d71
commit 61f0ae7954
17 changed files with 472 additions and 331 deletions

View File

@@ -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);

View File

@@ -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;