Merge pull request #4117 from lemondrops/deskpro386

Further Compaq Deskpro 386 adjustments
This commit is contained in:
Miran Grča
2024-02-05 02:10:21 +01:00
committed by GitHub
5 changed files with 48 additions and 34 deletions

View File

@@ -313,7 +313,12 @@ load_machine(void)
cpu_f = NULL; cpu_f = NULL;
p = ini_section_get_string(cat, "cpu_family", NULL); p = ini_section_get_string(cat, "cpu_family", NULL);
if (p) { if (p) {
cpu_f = cpu_get_family(p); /* Migrate CPU family changes. */
if ((!strcmp(machines[machine].internal_name, "deskpro386") ||
!strcmp(machines[machine].internal_name, "deskpro386_05_1988")))
cpu_f = cpu_get_family("i386dx_deskpro386");
else
cpu_f = cpu_get_family(p);
if (cpu_f && !cpu_family_is_eligible(cpu_f, machine)) /* only honor eligible families */ if (cpu_f && !cpu_family_is_eligible(cpu_f, machine)) /* only honor eligible families */
cpu_f = NULL; cpu_f = NULL;

View File

@@ -86,33 +86,31 @@ enum {
}; };
enum { enum {
CPU_PKG_8088 = (1 << 0), CPU_PKG_8088 = (1 << 0),
CPU_PKG_8088_EUROPC = (1 << 1), CPU_PKG_8088_EUROPC = (1 << 1),
CPU_PKG_8086 = (1 << 2), CPU_PKG_8086 = (1 << 2),
CPU_PKG_188 = (1 << 3), CPU_PKG_188 = (1 << 3),
CPU_PKG_186 = (1 << 4), CPU_PKG_186 = (1 << 4),
CPU_PKG_286 = (1 << 5), CPU_PKG_286 = (1 << 5),
CPU_PKG_386SX = (1 << 6), CPU_PKG_386SX = (1 << 6),
CPU_PKG_386DX = (1 << 7), CPU_PKG_386DX = (1 << 7),
CPU_PKG_M6117 = (1 << 8), CPU_PKG_386DX_DESKPRO386 = (1 << 8),
CPU_PKG_386SLC_IBM = (1 << 9), CPU_PKG_M6117 = (1 << 9),
CPU_PKG_486SLC = (1 << 10), CPU_PKG_386SLC_IBM = (1 << 10),
CPU_PKG_486SLC_IBM = (1 << 11), CPU_PKG_486SLC = (1 << 11),
CPU_PKG_486BL = (1 << 12), CPU_PKG_486SLC_IBM = (1 << 12),
CPU_PKG_486DLC = (1 << 13), CPU_PKG_486BL = (1 << 13),
CPU_PKG_SOCKET1 = (1 << 14), CPU_PKG_486DLC = (1 << 14),
CPU_PKG_SOCKET3 = (1 << 15), CPU_PKG_SOCKET1 = (1 << 15),
CPU_PKG_SOCKET3_PC330 = (1 << 16), CPU_PKG_SOCKET3 = (1 << 16),
CPU_PKG_STPC = (1 << 17), CPU_PKG_SOCKET3_PC330 = (1 << 17),
CPU_PKG_SOCKET4 = (1 << 18), CPU_PKG_STPC = (1 << 18),
CPU_PKG_SOCKET5_7 = (1 << 19), CPU_PKG_SOCKET4 = (1 << 19),
CPU_PKG_SOCKET8 = (1 << 20), CPU_PKG_SOCKET5_7 = (1 << 20),
CPU_PKG_SLOT1 = (1 << 21), CPU_PKG_SOCKET8 = (1 << 21),
CPU_PKG_SLOT2 = (1 << 22), CPU_PKG_SLOT1 = (1 << 22),
CPU_PKG_SLOTA = (1 << 23), CPU_PKG_SLOT2 = (1 << 23),
CPU_PKG_SOCKET370 = (1 << 24), CPU_PKG_SOCKET370 = (1 << 24)
CPU_PKG_SOCKETA = (1 << 25),
CPU_PKG_EBGA368 = (1 << 26)
}; };
#define CPU_SUPPORTS_DYNAREC 1 #define CPU_SUPPORTS_DYNAREC 1

View File

@@ -1043,6 +1043,17 @@ const cpu_family_t cpu_families[] = {
{"", 0} {"", 0}
} }
}, { }, {
.package = CPU_PKG_386DX_DESKPRO386,
.manufacturer = "Intel",
.name = "i386DX",
.internal_name = "i386dx_deskpro386",
.cpus = (const CPU[]) {
{"16", CPU_386DX, fpus_80286, 16000000, 1, 5000, 0x0308, 0, 0, 0, 3,3,3,3, 2},
{"20", CPU_386DX, fpus_80386, 20000000, 1, 5000, 0x0308, 0, 0, 0, 4,4,3,3, 3},
{"25", CPU_386DX, fpus_80386, 25000000, 1, 5000, 0x0308, 0, 0, 0, 4,4,3,3, 3},
{"", 0}
}
}, {
.package = CPU_PKG_386DX, .package = CPU_PKG_386DX,
.manufacturer = "Intel", .manufacturer = "Intel",
.name = "RapidCAD", .name = "RapidCAD",

View File

@@ -124,7 +124,7 @@ opMOV_CRx_r_a16(uint32_t fetchdat)
if ((cpu_state.regs[cpu_rm].l & 0x01) && !(cr0 & 0x01)) if ((cpu_state.regs[cpu_rm].l & 0x01) && !(cr0 & 0x01))
cpu_state.seg_cs.access &= 0x9f; cpu_state.seg_cs.access &= 0x9f;
cr0 = cpu_state.regs[cpu_rm].l; cr0 = cpu_state.regs[cpu_rm].l;
if (cpu_16bitbus) if ((cpu_s->cpu_type != CPU_386DX) || (fpu_type == FPU_387))
cr0 |= 0x10; cr0 |= 0x10;
if (!(cr0 & 0x80000000)) if (!(cr0 & 0x80000000))
mmu_perm = 4; mmu_perm = 4;
@@ -181,7 +181,7 @@ opMOV_CRx_r_a32(uint32_t fetchdat)
if ((cpu_state.regs[cpu_rm].l & 0x01) && !(cr0 & 0x01)) if ((cpu_state.regs[cpu_rm].l & 0x01) && !(cr0 & 0x01))
cpu_state.seg_cs.access &= 0x9f; cpu_state.seg_cs.access &= 0x9f;
cr0 = cpu_state.regs[cpu_rm].l; cr0 = cpu_state.regs[cpu_rm].l;
if (cpu_16bitbus) if ((cpu_s->cpu_type != CPU_386DX) || (fpu_type == FPU_387))
cr0 |= 0x10; cr0 |= 0x10;
if (!(cr0 & 0x80000000)) if (!(cr0 & 0x80000000))
mmu_perm = 4; mmu_perm = 4;

View File

@@ -4913,10 +4913,10 @@ const machine_t machines[] = {
.available_flag = MACHINE_AVAILABLE, .available_flag = MACHINE_AVAILABLE,
.gpio_acpi_handler = NULL, .gpio_acpi_handler = NULL,
.cpu = { .cpu = {
.package = CPU_PKG_386DX, .package = CPU_PKG_386DX_DESKPRO386,
.block = CPU_BLOCK(CPU_486DLC, CPU_RAPIDCAD), .block = CPU_BLOCK(CPU_486DLC, CPU_RAPIDCAD),
.min_bus = 16000000, .min_bus = 16000000,
.max_bus = 16000000, .max_bus = 25000000,
.min_voltage = 0, .min_voltage = 0,
.max_voltage = 0, .max_voltage = 0,
.min_multi = 0, .min_multi = 0,
@@ -4952,9 +4952,9 @@ const machine_t machines[] = {
.available_flag = MACHINE_AVAILABLE, .available_flag = MACHINE_AVAILABLE,
.gpio_acpi_handler = NULL, .gpio_acpi_handler = NULL,
.cpu = { .cpu = {
.package = CPU_PKG_386DX, .package = CPU_PKG_386DX_DESKPRO386,
.block = CPU_BLOCK(CPU_486DLC, CPU_RAPIDCAD), .block = CPU_BLOCK(CPU_486DLC, CPU_RAPIDCAD),
.min_bus = 25000000, .min_bus = 16000000,
.max_bus = 25000000, .max_bus = 25000000,
.min_voltage = 0, .min_voltage = 0,
.max_voltage = 0, .max_voltage = 0,