The 86F handler now reads and writes .86F images correctly again;

Improved TeleDisk support;
Added support for ImageDisk (IMD) images;
Added MSR registers 186 and 570 for the Intel i686 CPU's;
Applied both mainline PCem commits.
This commit is contained in:
OBattler
2016-10-04 17:25:16 +02:00
parent 1371be8b45
commit 6ac2526dbb
17 changed files with 5218 additions and 4570 deletions

View File

@@ -105,7 +105,9 @@ uint64_t ecx8x_msr[4] = {0, 0, 0, 0};
uint64_t ecx116_msr = 0;
uint64_t ecx11x_msr[4] = {0, 0, 0, 0};
uint64_t ecx11e_msr = 0;
uint64_t ecx186_msr = 0;
uint64_t ecx1e0_msr = 0;
uint64_t ecx570_msr = 0;
/* AMD K5 and K6 MSR's. */
uint64_t ecx83_msr = 0;
@@ -2000,6 +2002,10 @@ void cpu_RDMSR()
if (models[model].cpu[cpu_manufacturer].cpus[cpu].cpu_type == CPU_PENTIUMPRO) goto i686_invalid_rdmsr;
EAX = eip_msr;
break;
case 0x186:
EAX = ecx186_msr & 0xffffffff;
EDX = ecx186_msr >> 32;
break;
case 0x1E0:
EAX = ecx1e0_msr & 0xffffffff;
EDX = ecx1e0_msr >> 32;
@@ -2041,6 +2047,10 @@ void cpu_RDMSR()
EAX = mtrr_deftype_msr & 0xffffffff;
EDX = mtrr_deftype_msr >> 32;
break;
case 0x570:
EAX = ecx570_msr & 0xffffffff;
EDX = ecx570_msr >> 32;
break;
default:
i686_invalid_rdmsr:
#ifndef RELEASE_BUILD
@@ -2181,6 +2191,9 @@ void cpu_WRMSR()
// pclog("WRMSR SYSENTER_EIP: old=%08X, new=%08X\n", eip_msr, EAX);
eip_msr = EAX;
break;
case 0x186:
ecx186_msr = EAX | ((uint64_t)EDX << 32);
break;
case 0x1E0:
ecx1e0_msr = EAX | ((uint64_t)EDX << 32);
break;
@@ -2209,6 +2222,9 @@ void cpu_WRMSR()
case 0x2FF:
mtrr_deftype_msr = EAX | ((uint64_t)EDX << 32);
break;
case 0x570:
ecx570_msr = EAX | ((uint64_t)EDX << 32);
break;
default:
i686_invalid_wrmsr:
#ifndef RELEASE_BUILD