Merge pull request #4117 from lemondrops/deskpro386
Further Compaq Deskpro 386 adjustments
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user