From 55124ec59ef647fd1b5a5eef3b3e8e34f4b344a0 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 18 Nov 2020 13:49:10 -0300 Subject: [PATCH 01/28] Don't fatal if a CPU family is missing during conversion (for configs accidentally migrated from dev to non-dev builds) --- src/config.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/config.c b/src/config.c index f20e30c68..5ebb8afb5 100644 --- a/src/config.c +++ b/src/config.c @@ -558,10 +558,8 @@ load_machine(void) legacy_table_entry = (cpu_legacy_table_t *) &cpu_legacy_table[c].tables[legacy_mfg][i]; if (legacy_cpu >= legacy_table_entry->old_offset) { /* Found CPU entry. */ - if (!(legacy_family = cpu_get_family((char *) legacy_table_entry->family))) { - fatal("CPU family %s not found during legacy conversion\n", (char *) legacy_table_entry->family); - return; - } + if (!(legacy_family = cpu_get_family((char *) legacy_table_entry->family))) /* check if the family exists */ + break; config_set_string(cat, "cpu_family", (char *) legacy_family->internal_name); legacy_cpu -= legacy_table_entry->old_offset; From 10732f6f026a3f7e8e71cfbe5172fecb6cd76f4a Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 18 Nov 2020 13:49:55 -0300 Subject: [PATCH 02/28] Restore special i486DX2 CPUs for the IBM PC 330 --- src/cpu/cpu.h | 15 ++++++++------- src/cpu/cpu_table.c | 18 ++++++++++++++---- src/machine/machine_table.c | 3 ++- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h index 2b8395be0..35850debb 100644 --- a/src/cpu/cpu.h +++ b/src/cpu/cpu.h @@ -101,13 +101,14 @@ enum { CPU_PKG_486DLC = (1 << 11), CPU_PKG_SOCKET1 = (1 << 12), CPU_PKG_SOCKET3 = (1 << 13), - CPU_PKG_STPC = (1 << 14), - CPU_PKG_SOCKET4 = (1 << 15), - CPU_PKG_SOCKET5_7 = (1 << 16), - CPU_PKG_SOCKET8 = (1 << 17), - CPU_PKG_SLOT1 = (1 << 18), - CPU_PKG_SLOT2 = (1 << 19), - CPU_PKG_SOCKET370 = (1 << 20) + CPU_PKG_SOCKET3_PC330 = (1 << 14), + CPU_PKG_STPC = (1 << 15), + CPU_PKG_SOCKET4 = (1 << 16), + CPU_PKG_SOCKET5_7 = (1 << 17), + CPU_PKG_SOCKET8 = (1 << 18), + CPU_PKG_SLOT1 = (1 << 19), + CPU_PKG_SLOT2 = (1 << 20), + CPU_PKG_SOCKET370 = (1 << 21) }; diff --git a/src/cpu/cpu_table.c b/src/cpu/cpu_table.c index cf0e4cd20..fc047d2a2 100644 --- a/src/cpu/cpu_table.c +++ b/src/cpu/cpu_table.c @@ -349,7 +349,17 @@ cpu_family_t cpu_families[] = { {"", 0} } }, { - .package = CPU_PKG_SOCKET3, + .package = CPU_PKG_SOCKET3_PC330, + .manufacturer = "Intel", + .name = "i486DX2", + .internal_name = "i486dx2_pc330", + .cpus = { + {"50", CPU_i486DX2, fpus_internal, 50000000, 2, 5000, 0x470, 0x470, 0, CPU_SUPPORTS_DYNAREC, 8, 8,6,6, 6}, + {"66", CPU_i486DX2, fpus_internal, 66666666, 2, 5000, 0x470, 0x470, 0, CPU_SUPPORTS_DYNAREC, 12,12,6,6, 8}, + {"", 0} + } + }, { + .package = CPU_PKG_SOCKET3 | CPU_PKG_SOCKET3_PC330, .manufacturer = "Intel", .name = "iDX4", .internal_name = "idx4", @@ -369,7 +379,7 @@ cpu_family_t cpu_families[] = { {"", 0} } }, { - .package = CPU_PKG_SOCKET3, /* PC330 = only DX2/50, DX2/66, DX4/75, DX4/100, POD63 and POD83 */ + .package = CPU_PKG_SOCKET3 | CPU_PKG_SOCKET3_PC330, .manufacturer = "Intel", .name = "Pentium OverDrive", .internal_name = "pentium_od_s3", @@ -971,7 +981,7 @@ static cpu_legacy_table_t cpus_i486S1[] = {{"idx4_od", 12, 0}, {"i486dx2", 9, 0} static cpu_legacy_table_t cpus_Am486S1[] = {{"am486dx2", 6, 0}, {"am486dx", 4, 0}, {"am486sx2", 2, 0}, {"am486sx", 0, 0}}; static cpu_legacy_table_t cpus_Cx486S1[] = {{"cx486dx2", 5, 0}, {"cx486dx", 3, 0}, {"cx486s", 0, 0}}; static cpu_legacy_table_t cpus_i486[] = {{"pentium_od_s3", 16, 0}, {"idx4_od", 14, 0}, {"idx4", 12, 0}, {"i486dx2", 9, 0}, {"i486dx", 6, 0}, {"i486sx2", 4, 0}, {"i486sx", 0, 0}}; -static cpu_legacy_table_t cpus_i486_PC330[] = {{"pentium_od_s3", 4, 0}, {"idx4", 2, 0}, {"i486dx2", 0, 1}}; +static cpu_legacy_table_t cpus_i486_PC330[] = {{"pentium_od_s3", 4, 0}, {"idx4", 2, 0}, {"i486dx2_pc330", 0, 0}}; static cpu_legacy_table_t cpus_Am486[] = {{"am5x86", 13, 0}, {"am486dx4", 9, 0}, {"am486dx2", 6, 0}, {"am486dx", 4, 0}, {"am486sx2", 2, 0}, {"am486sx", 0, 0}}; static cpu_legacy_table_t cpus_Cx486[] = {{"cx5x86", 10, 0}, {"cx486dx4", 8, 0}, {"cx486dx2", 5, 0}, {"cx486dx", 3, 0}, {"cx486s", 0, 0}}; static cpu_legacy_table_t cpus_STPCDX[] = {{"stpc_dx", 0, 0}}; @@ -1215,5 +1225,5 @@ cpu_legacy_machine_t cpu_legacy_table[] = { {"p6bap", {cpus_Celeron, cpus_Cyrix3}}, {"603tcf", {cpus_Celeron, cpus_Cyrix3}}, {"vpc2007", {cpus_PentiumIID, cpus_Celeron}}, - {NULL, NULL} + {NULL, {NULL}} }; diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index 92bf58822..d7ea6d401 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -181,7 +181,8 @@ const machine_t machines[] = { { "[OPTi 495] Award 486 clone", "award486", MACHINE_TYPE_486, CPU_PKG_SOCKET1, 0, 0, 0, 0, 0, 0, 0, MACHINE_VLB | MACHINE_IDE, 1, 32, 1, 127, machine_at_opti495_init, NULL }, { "[OPTi 495] Dataexpert SX495 (486)", "ami486", MACHINE_TYPE_486, CPU_PKG_SOCKET1, 0, 0, 0, 0, 0, 0, 0, MACHINE_VLB | MACHINE_IDE, 1, 32, 1, 127, machine_at_opti495_ami_init, NULL }, { "[OPTi 495] MR 486 clone", "mr486", MACHINE_TYPE_486, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_VLB | MACHINE_IDE, 1, 32, 1, 127, machine_at_opti495_mr_init, NULL }, - { "[OPTi 802G] IBM PC 330 (type 6571)", "pc330_6571", MACHINE_TYPE_486, CPU_PKG_SOCKET3, CPU_i486SX2|CPU_Am486SX2|CPU_Am486DX2|CPU_Cx486DX2|CPU_Am486DX4|CPU_Am5x86|CPU_Cx486DX4|CPU_Cx5x86, 25000000, 0, 0, 0, 2.0, 0, MACHINE_VLB | MACHINE_BUS_PS2 | MACHINE_IDE, 1, 64, 1, 127, machine_at_pc330_6571_init, NULL }, { "[OPTi 895] Jetway J-403TG", "403tg", MACHINE_TYPE_486, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_VLB, 1, 64, 1, 127, machine_at_403tg_init, NULL }, + { "[OPTi 802G] IBM PC 330 (type 6571)", "pc330_6571", MACHINE_TYPE_486, CPU_PKG_SOCKET3_PC330, 0, 25000000, 33333333, 0, 0, 2.0, 3.0, MACHINE_VLB | MACHINE_BUS_PS2 | MACHINE_IDE, 1, 64, 1, 127, machine_at_pc330_6571_init, NULL }, + { "[OPTi 895] Jetway J-403TG", "403tg", MACHINE_TYPE_486, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_VLB, 1, 64, 1, 127, machine_at_403tg_init, NULL }, { "[SiS 401] AMI 486 Clone", "sis401", MACHINE_TYPE_486, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_IDE, 1, 64, 1, 127, machine_at_sis401_init, NULL }, { "[SiS 461] IBM PS/ValuePoint 433DX/Si", "valuepoint433", MACHINE_TYPE_486, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE, 1, 64, 1, 127, machine_at_valuepoint433_init, NULL }, { "[SiS 471] AMI 486 Clone", "ami471", MACHINE_TYPE_486, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_VLB | MACHINE_IDE, 1, 64, 1, 127, machine_at_ami471_init, NULL }, From 6527f14d76e3d30f0653e82dd168656c7bfab491 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 18 Nov 2020 14:44:05 -0300 Subject: [PATCH 03/28] Remove parentheses from CPU family in the title bar --- src/pc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/pc.c b/src/pc.c index 5c8695b39..9276ad255 100644 --- a/src/pc.c +++ b/src/pc.c @@ -928,7 +928,7 @@ void pc_thread(void *param) { wchar_t temp[200], wcpufamily[2048], wcpu[2048]; - wchar_t wmachine[2048]; + wchar_t wmachine[2048], *wcp; uint64_t start_time, end_time; uint32_t old_time, new_time; int done, drawits, frames; @@ -992,6 +992,9 @@ pc_thread(void *param) mbstowcs(wmachine, machine_getname(), strlen(machine_getname())+1); mbstowcs(wcpufamily, cpu_f->name, strlen(cpu_f->name)+1); + wcp = wcschr(wcpufamily, L'('); + if (wcp) /* remove parentheses */ + *(wcp - 1) = L'\0'; mbstowcs(wcpu, cpu_s->name, strlen(cpu_s->name)+1); swprintf(temp, sizeof_w(temp), From 1ce9241242a577357f7aec784d1403c938beb96d Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 18 Nov 2020 14:44:27 -0300 Subject: [PATCH 04/28] Add more CPU eligibility checks to config.c --- src/config.c | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/config.c b/src/config.c index 5ebb8afb5..047ac7c38 100644 --- a/src/config.c +++ b/src/config.c @@ -537,7 +537,7 @@ load_machine(void) if (machine >= machine_count()) machine = machine_count() - 1; - /* Backwards compatibility the previous CPU model system. */ + /* Backwards compatibility for the previous CPU model system. */ legacy_mfg = config_get_int(cat, "cpu_manufacturer", 0); legacy_cpu = config_get_int(cat, "cpu", 0); if (legacy_mfg || legacy_cpu) { @@ -564,8 +564,12 @@ load_machine(void) legacy_cpu -= legacy_table_entry->old_offset; legacy_cpu += legacy_table_entry->new_offset; - config_set_int(cat, "cpu_speed", legacy_family->cpus[legacy_cpu].rspeed); - config_set_double(cat, "cpu_multi", legacy_family->cpus[legacy_cpu].multi); + while (!cpu_is_eligible(legacy_family, legacy_cpu, machine) && (legacy_family->cpus[legacy_cpu].cpu_type != 0)) /* if the legacy CPU is no longer eligible, bump it up until one is eligible or we're out of CPUs */ + legacy_cpu++; + if (legacy_family->cpus[legacy_cpu].cpu_type != 0) { /* store only if an eligible CPU was found; if none are, reset to the first one */ + config_set_int(cat, "cpu_speed", legacy_family->cpus[legacy_cpu].rspeed); + config_set_double(cat, "cpu_multi", legacy_family->cpus[legacy_cpu].multi); + } break; } @@ -581,17 +585,25 @@ load_machine(void) if (cpu_f) { speed = config_get_int(cat, "cpu_speed", 0); multi = config_get_double(cat, "cpu_multi", 0); + + /* Find the configured CPU. */ c = 0; + i = -1; while (cpu_f->cpus[c].cpu_type != -1) { - if ((cpu_f->cpus[c].rspeed == speed) && (cpu_f->cpus[c].multi == multi)) - break; + if (cpu_is_eligible(cpu_f, c, machine)) { /* skip ineligible CPUs */ + if (i == -1) /* store the first eligible CPU */ + i = c; + if ((cpu_f->cpus[c].rspeed == speed) && (cpu_f->cpus[c].multi == multi)) /* check if clock speed and multiplier match */ + break; + } c++; } - if (cpu_f->cpus[c].cpu_type == -1) - c = 0; + if (cpu_f->cpus[c].cpu_type == -1) /* use first eligible CPU if no match was found */ + c = MAX(i, 0); cpu = c; cpu_s = (CPU *) &cpu_f->cpus[cpu]; - } else { + } else { /* default */ + /* Find first eligible family. */ c = 0; while (!cpu_family_is_eligible(&cpu_families[c], machine)) { if (cpu_families[c++].package == 0) { @@ -601,6 +613,7 @@ load_machine(void) } cpu_f = &cpu_families[c]; + /* Find first eligible CPU in that family. */ c = 0; while (!cpu_is_eligible(cpu_f, c, machine)) { if (cpu_f->cpus[c++].cpu_type == 0) { From c6f469884f43ea79637f965052a32d6639a029af Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 18 Nov 2020 14:52:09 -0300 Subject: [PATCH 05/28] Migrate the removed President Award 430FX to the MB500N --- src/config.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/config.c b/src/config.c index 047ac7c38..245d260e8 100644 --- a/src/config.c +++ b/src/config.c @@ -515,8 +515,10 @@ load_machine(void) p = config_get_string(cat, "machine", NULL); if (p != NULL) { - if (! strcmp(p, "8500ttc")) + if (! strcmp(p, "8500ttc")) /* correct typo */ machine = machine_get_machine_from_internal_name("8600ttc"); + else if (! strcmp(p, "president")) /* migrate from removed machine */ + machine = machine_get_machine_from_internal_name("mb500n"); else machine = machine_get_machine_from_internal_name(p); } else @@ -527,8 +529,7 @@ load_machine(void) /* This is for backwards compatibility. */ p = config_get_string(cat, "model", NULL); if (p != NULL) { - /* Detect the old model typos and fix them. */ - if (! strcmp(p, "p55r2p4")) + if (! strcmp(p, "p55r2p4")) /* correct typo */ machine = machine_get_machine_from_internal_name("p55t2p4"); else machine = machine_get_machine_from_internal_name(p); From 9038dba73448c09d0c6c025291d82af829bb7fab Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 18 Nov 2020 15:18:20 -0300 Subject: [PATCH 06/28] Improve legacy CPU eligibility check --- src/config.c | 129 ++++++++++++++++++++++++++++----------------------- 1 file changed, 70 insertions(+), 59 deletions(-) diff --git a/src/config.c b/src/config.c index 245d260e8..f92c16ef0 100644 --- a/src/config.c +++ b/src/config.c @@ -509,7 +509,7 @@ load_machine(void) { char *cat = "Machine"; char *p; - int c, i, speed, legacy_mfg, legacy_cpu; + int c, i, speed, legacy_mfg, legacy_cpu, new_cpu; double multi; cpu_family_t *legacy_family; @@ -538,76 +538,88 @@ load_machine(void) if (machine >= machine_count()) machine = machine_count() - 1; - /* Backwards compatibility for the previous CPU model system. */ - legacy_mfg = config_get_int(cat, "cpu_manufacturer", 0); - legacy_cpu = config_get_int(cat, "cpu", 0); - if (legacy_mfg || legacy_cpu) { - /* Look for a machine entry on the legacy table. */ - p = machine_get_internal_name(); - c = 0; - while (cpu_legacy_table[c].machine) { - if (!strcmp(p, cpu_legacy_table[c].machine)) - break; - c++; - } - if (cpu_legacy_table[c].machine) { - /* Look for a corresponding CPU entry. */ - i = -1; - cpu_legacy_table_t *legacy_table_entry; - do { - i++; - legacy_table_entry = (cpu_legacy_table_t *) &cpu_legacy_table[c].tables[legacy_mfg][i]; - if (legacy_cpu >= legacy_table_entry->old_offset) { - /* Found CPU entry. */ - if (!(legacy_family = cpu_get_family((char *) legacy_table_entry->family))) /* check if the family exists */ - break; - config_set_string(cat, "cpu_family", (char *) legacy_family->internal_name); - - legacy_cpu -= legacy_table_entry->old_offset; - legacy_cpu += legacy_table_entry->new_offset; - while (!cpu_is_eligible(legacy_family, legacy_cpu, machine) && (legacy_family->cpus[legacy_cpu].cpu_type != 0)) /* if the legacy CPU is no longer eligible, bump it up until one is eligible or we're out of CPUs */ - legacy_cpu++; - if (legacy_family->cpus[legacy_cpu].cpu_type != 0) { /* store only if an eligible CPU was found; if none are, reset to the first one */ - config_set_int(cat, "cpu_speed", legacy_family->cpus[legacy_cpu].rspeed); - config_set_double(cat, "cpu_multi", legacy_family->cpus[legacy_cpu].multi); - } + cpu_f = NULL; + p = config_get_string(cat, "cpu_family", NULL); + if (p) { + cpu_f = cpu_get_family(p); + if (cpu_f && !cpu_family_is_eligible(cpu_f, machine)) /* only honor eligible families */ + cpu_f = NULL; + } else { + /* Backwards compatibility for the previous CPU model system. */ + legacy_mfg = config_get_int(cat, "cpu_manufacturer", 0); + legacy_cpu = config_get_int(cat, "cpu", 0); + if (legacy_mfg || legacy_cpu) { + /* Look for a machine entry on the legacy table. */ + p = machine_get_internal_name(); + c = 0; + while (cpu_legacy_table[c].machine) { + if (!strcmp(p, cpu_legacy_table[c].machine)) break; - } - } while (cpu_legacy_table[c].tables[legacy_mfg][i].old_offset); + c++; + } + if (cpu_legacy_table[c].machine) { + /* Look for a corresponding CPU entry. */ + i = -1; + cpu_legacy_table_t *legacy_table_entry; + do { + i++; + legacy_table_entry = (cpu_legacy_table_t *) &cpu_legacy_table[c].tables[legacy_mfg][i]; + if (legacy_cpu >= legacy_table_entry->old_offset) { + /* Found CPU entry. */ + legacy_family = cpu_get_family((char *) legacy_table_entry->family); + if (!legacy_family || !cpu_family_is_eligible(legacy_family, machine)) /* check if the family exists and is eligible */ + break; + config_set_string(cat, "cpu_family", (char *) legacy_family->internal_name); + cpu_f = legacy_family; + + legacy_cpu -= legacy_table_entry->old_offset; + legacy_cpu += legacy_table_entry->new_offset; + new_cpu = legacy_cpu; + while (!cpu_is_eligible(legacy_family, new_cpu, machine)) { /* if the legacy CPU is no longer eligible, find the next eligible one */ + new_cpu++; + if (legacy_family->cpus[new_cpu].cpu_type == 0) /* end of list, wrap around */ + new_cpu = 0; + if (new_cpu == legacy_cpu) { /* back at legacy CPU = no eligible ones found (shouldn't really happen due to the cpu_family_is_eligible check above) */ + new_cpu = -1; + break; + } + } + if (new_cpu != -1) { /* store only if an eligible CPU was found */ + config_set_int(cat, "cpu_speed", legacy_family->cpus[new_cpu].rspeed); + config_set_double(cat, "cpu_multi", legacy_family->cpus[new_cpu].multi); + } + + break; + } + } while (cpu_legacy_table[c].tables[legacy_mfg][i].old_offset); + } } } - /* Current CPU model system. */ - cpu_f = NULL; - p = config_get_string(cat, "cpu_family", NULL); - if (p) - cpu_f = cpu_get_family(p); if (cpu_f) { speed = config_get_int(cat, "cpu_speed", 0); multi = config_get_double(cat, "cpu_multi", 0); /* Find the configured CPU. */ - c = 0; + cpu = 0; i = -1; - while (cpu_f->cpus[c].cpu_type != -1) { - if (cpu_is_eligible(cpu_f, c, machine)) { /* skip ineligible CPUs */ + while (cpu_f->cpus[cpu].cpu_type != -1) { + if (cpu_is_eligible(cpu_f, cpu, machine)) { /* skip ineligible CPUs */ if (i == -1) /* store the first eligible CPU */ - i = c; - if ((cpu_f->cpus[c].rspeed == speed) && (cpu_f->cpus[c].multi == multi)) /* check if clock speed and multiplier match */ + i = cpu; + if ((cpu_f->cpus[cpu].rspeed == speed) && (cpu_f->cpus[cpu].multi == multi)) /* check if clock speed and multiplier match */ break; } - c++; + cpu++; } - if (cpu_f->cpus[c].cpu_type == -1) /* use first eligible CPU if no match was found */ - c = MAX(i, 0); - cpu = c; - cpu_s = (CPU *) &cpu_f->cpus[cpu]; + if (cpu_f->cpus[cpu].cpu_type == -1) /* use first eligible CPU if no match was found */ + cpu = MAX(i, 0); } else { /* default */ /* Find first eligible family. */ c = 0; while (!cpu_family_is_eligible(&cpu_families[c], machine)) { - if (cpu_families[c++].package == 0) { + if (cpu_families[c++].package == 0) { /* end of list */ fatal("No eligible CPU families for the selected machine\n"); return; } @@ -615,16 +627,15 @@ load_machine(void) cpu_f = &cpu_families[c]; /* Find first eligible CPU in that family. */ - c = 0; - while (!cpu_is_eligible(cpu_f, c, machine)) { - if (cpu_f->cpus[c++].cpu_type == 0) { - fatal("No eligible CPUs for the default CPU family for the selected machine\n"); - return; + cpu = 0; + while (!cpu_is_eligible(cpu_f, cpu, machine)) { + if (cpu_f->cpus[cpu++].cpu_type == 0) { /* end of list */ + cpu = 0; + break; } } - cpu = c; - cpu_s = (CPU *) &cpu_f->cpus[cpu]; } + cpu_s = (CPU *) &cpu_f->cpus[cpu]; cpu_waitstates = config_get_int(cat, "cpu_waitstates", 0); From b7aad64633c67bab0f91b26e797ea64879daa781 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 18 Nov 2020 16:00:34 -0300 Subject: [PATCH 07/28] Fix 83 MHz roundness --- src/machine/machine_table.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index d7ea6d401..7a81e0198 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -324,8 +324,8 @@ const machine_t machines[] = { /* Slot 1 machines */ /* 440FX */ - { "[i440FX] ASUS P/I-P65UP5 (C-PKND)", "p65up5_cpknd", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 60000000, 83600001, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 127, machine_at_p65up5_cpknd_init, NULL }, - { "[i440FX] ASUS KN97", "kn97", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 60000000, 83600001, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 127, machine_at_kn97_init, NULL }, + { "[i440FX] ASUS P/I-P65UP5 (C-PKND)", "p65up5_cpknd", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 60000000, 83600000, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 127, machine_at_p65up5_cpknd_init, NULL }, + { "[i440FX] ASUS KN97", "kn97", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 60000000, 83600000, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 127, machine_at_kn97_init, NULL }, /* 440LX */ { "[i440LX] ABIT LX6", "lx6", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 100000000, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_lx6_init, NULL }, From 96407328f46c867f09708d06ae44cb9fb0bffe3e Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 18 Nov 2020 16:08:22 -0300 Subject: [PATCH 08/28] Add limited forwards compatibility with old builds to the new CPU config code --- src/config.c | 50 +++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 7 deletions(-) diff --git a/src/config.c b/src/config.c index f92c16ef0..574513e49 100644 --- a/src/config.c +++ b/src/config.c @@ -541,12 +541,12 @@ load_machine(void) cpu_f = NULL; p = config_get_string(cat, "cpu_family", NULL); if (p) { - cpu_f = cpu_get_family(p); + cpu_f = cpu_get_family(p); - if (cpu_f && !cpu_family_is_eligible(cpu_f, machine)) /* only honor eligible families */ - cpu_f = NULL; + if (cpu_f && !cpu_family_is_eligible(cpu_f, machine)) /* only honor eligible families */ + cpu_f = NULL; } else { - /* Backwards compatibility for the previous CPU model system. */ + /* Backwards compatibility for the previous CPU model system. */ legacy_mfg = config_get_int(cat, "cpu_manufacturer", 0); legacy_cpu = config_get_int(cat, "cpu", 0); if (legacy_mfg || legacy_cpu) { @@ -566,7 +566,7 @@ load_machine(void) i++; legacy_table_entry = (cpu_legacy_table_t *) &cpu_legacy_table[c].tables[legacy_mfg][i]; if (legacy_cpu >= legacy_table_entry->old_offset) { - /* Found CPU entry. */ + /* Found CPU entry, set new values. */ legacy_family = cpu_get_family((char *) legacy_table_entry->family); if (!legacy_family || !cpu_family_is_eligible(legacy_family, machine)) /* check if the family exists and is eligible */ break; @@ -616,7 +616,7 @@ load_machine(void) if (cpu_f->cpus[cpu].cpu_type == -1) /* use first eligible CPU if no match was found */ cpu = MAX(i, 0); } else { /* default */ - /* Find first eligible family. */ + /* Find first eligible family. */ c = 0; while (!cpu_family_is_eligible(&cpu_families[c], machine)) { if (cpu_families[c++].package == 0) { /* end of list */ @@ -1789,16 +1789,52 @@ static void save_machine(void) { char *cat = "Machine"; + char *p; + int c, i, j, legacy_cpu = -1; - config_set_string(cat, "machine", machine_get_internal_name()); + p = machine_get_internal_name(); + config_set_string(cat, "machine", p); config_set_string(cat, "cpu_family", (char *) cpu_f->internal_name); config_set_int(cat, "cpu_speed", cpu_f->cpus[cpu].rspeed); config_set_double(cat, "cpu_multi", cpu_f->cpus[cpu].multi); + /* Limited forwards compatibility for the previous CPU model system. */ config_delete_var(cat, "cpu_manufacturer"); config_delete_var(cat, "cpu"); + /* Look for a machine entry on the legacy table. */ + c = 0; + while (cpu_legacy_table[c].machine) { + if (!strcmp(p, cpu_legacy_table[c].machine)) + break; + c++; + } + if (cpu_legacy_table[c].machine) { + /* Look for a corresponding CPU entry. */ + cpu_legacy_table_t *legacy_table_entry; + for (j = 0; (j < 5) && (legacy_cpu == -1); j++) { + if (!cpu_legacy_table[c].tables[j]) + continue; + + i = -1; + do { + i++; + legacy_table_entry = (cpu_legacy_table_t *) &cpu_legacy_table[c].tables[j][i]; + if (!strcmp(legacy_table_entry->family, cpu_f->internal_name) && (cpu >= legacy_table_entry->new_offset)) { + /* Found CPU entry, set legacy values. */ + if (j) + config_set_int(cat, "cpu_manufacturer", j); + legacy_cpu = cpu - legacy_table_entry->new_offset + legacy_table_entry->old_offset; + if (legacy_cpu) + config_set_int(cat, "cpu", legacy_cpu); + + break; + } + } while (cpu_legacy_table[c].tables[j][i].old_offset); + } + } + if (cpu_waitstates == 0) config_delete_var(cat, "cpu_waitstates"); else From 56ae551ba25cad37f7942169cf6375c76bb7e108 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 18 Nov 2020 16:10:54 -0300 Subject: [PATCH 09/28] Remove K5 from K6 backwards compatibility tables due to offset mismatches --- src/cpu/cpu_table.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/cpu/cpu_table.c b/src/cpu/cpu_table.c index fc047d2a2..8c17e5b72 100644 --- a/src/cpu/cpu_table.c +++ b/src/cpu/cpu_table.c @@ -995,11 +995,10 @@ static cpu_legacy_table_t cpus_Pentium5V[] = {{"pentium_od_s4", 2, 1}, {"pentium static cpu_legacy_table_t cpus_PentiumS5[] = {{"pentium_od_p55c", 10, 1}, {"pentium_od_s5", 7, 0}, {"pentium_p54c", 2, 1}, {"pentium_od_p55c", 1, 0}, {"pentium_p54c", 0, 0}}; static cpu_legacy_table_t cpus_Pentium3V[] = {{"pentium_od_p55c", 13, 1}, {"pentium_od_s5", 10, 0}, {"pentium_p54c", 2, 1}, {"pentium_od_p55c", 1, 0}, {"pentium_p54c", 0, 0}}; static cpu_legacy_table_t cpus_Pentium[] = {{"pentium_od_p55c", 24, 1}, {"pentium_od_s5", 21, 0}, {"pentium_tillamook", 13, 0}, {"pentium_p55c", 10, 0}, {"pentium_p54c", 2, 1}, {"pentium_od_p55c", 1, 0}, {"pentium_p54c", 0, 0}}; -#define K5_ENTRIES {"k5_5k86", 6, 3}, {"k5_ssa5", 5, 2}, {"k5_5k86", 4, 2}, {"k5_ssa5", 3, 1}, {"k5_5k86", 2, 1}, {"k5_ssa5", 1, 0}, {"k5_5k86", 0, 0} -static cpu_legacy_table_t cpus_K5[] = {K5_ENTRIES}; -#define K56_ENTRIES {"k6_2", 18, 0}, {"k6_m7", 14, 0}, {"k6_m6", 11, 0}, K5_ENTRIES -static cpu_legacy_table_t cpus_K56[] = {K56_ENTRIES}; -static cpu_legacy_table_t cpus_K56_SS7[] = {{"k6_3p", 38, 0}, {"k6_3", 36, 0}, {"k6_2p", 31, 0}, K56_ENTRIES}; +static cpu_legacy_table_t cpus_K5[] = {{"k5_5k86", 6, 3}, {"k5_ssa5", 5, 2}, {"k5_5k86", 4, 2}, {"k5_ssa5", 3, 1}, {"k5_5k86", 2, 1}, {"k5_ssa5", 1, 0}, {"k5_5k86", 0, 0}}; +#define K6_ENTRIES {"k6_2", 18, 0}, {"k6_m7", 14, 0}, {"k6_m6", 11, 0} +static cpu_legacy_table_t cpus_K56[] = {K6_ENTRIES}; +static cpu_legacy_table_t cpus_K56_SS7[] = {{"k6_3p", 38, 0}, {"k6_3", 36, 0}, {"k6_2p", 31, 0}, K6_ENTRIES}; static cpu_legacy_table_t cpus_PentiumPro[] = {{"pentium2_od", 8, 0}, {"pentiumpro", 0, 0}}; static cpu_legacy_table_t cpus_PentiumII66[] = {{"pentium2_deschutes", 7, 0}, {"pentium2_klamath", 0, 0}}; #define cpus_PentiumII cpus_PentiumII66 From e8c83a6c09e61b1eba100a9a80a170dfb180539a Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 18 Nov 2020 17:32:49 -0300 Subject: [PATCH 10/28] Add limited forwards compatibility between the old and new CPU systems, and improve speed tier clamping --- src/config.c | 33 ++++++++++------ src/cpu/cpu_table.c | 96 ++++++++++++++++++++++----------------------- 2 files changed, 69 insertions(+), 60 deletions(-) diff --git a/src/config.c b/src/config.c index 574513e49..4ee5aeab2 100644 --- a/src/config.c +++ b/src/config.c @@ -546,7 +546,7 @@ load_machine(void) if (cpu_f && !cpu_family_is_eligible(cpu_f, machine)) /* only honor eligible families */ cpu_f = NULL; } else { - /* Backwards compatibility for the previous CPU model system. */ + /* Backwards compatibility with the previous CPU model system. */ legacy_mfg = config_get_int(cat, "cpu_manufacturer", 0); legacy_cpu = config_get_int(cat, "cpu", 0); if (legacy_mfg || legacy_cpu) { @@ -567,8 +567,12 @@ load_machine(void) legacy_table_entry = (cpu_legacy_table_t *) &cpu_legacy_table[c].tables[legacy_mfg][i]; if (legacy_cpu >= legacy_table_entry->old_offset) { /* Found CPU entry, set new values. */ + + if (!legacy_table_entry->family) /* reset to defaults if the CPU ID is beyond what is supported by the legacy table */ + break; + legacy_family = cpu_get_family((char *) legacy_table_entry->family); - if (!legacy_family || !cpu_family_is_eligible(legacy_family, machine)) /* check if the family exists and is eligible */ + if (!legacy_family || !cpu_family_is_eligible(legacy_family, machine)) /* check if the family exists and is eligible; if not, reset to defaults */ break; config_set_string(cat, "cpu_family", (char *) legacy_family->internal_name); cpu_f = legacy_family; @@ -585,7 +589,7 @@ load_machine(void) break; } } - if (new_cpu != -1) { /* store only if an eligible CPU was found */ + if (new_cpu != -1) { /* store only if an eligible CPU was found; if not, reset CPU (but not family) to defaults */ config_set_int(cat, "cpu_speed", legacy_family->cpus[new_cpu].rspeed); config_set_double(cat, "cpu_multi", legacy_family->cpus[new_cpu].multi); } @@ -603,18 +607,20 @@ load_machine(void) /* Find the configured CPU. */ cpu = 0; - i = -1; + c = 0; + i = 256; while (cpu_f->cpus[cpu].cpu_type != -1) { if (cpu_is_eligible(cpu_f, cpu, machine)) { /* skip ineligible CPUs */ - if (i == -1) /* store the first eligible CPU */ - i = cpu; if ((cpu_f->cpus[cpu].rspeed == speed) && (cpu_f->cpus[cpu].multi == multi)) /* check if clock speed and multiplier match */ break; + else if ((cpu_f->cpus[cpu].rspeed > speed) && (i == 256)) /* store closest matching faster CPU */ + i = cpu; + c = cpu; /* store fastest eligible CPU */ } cpu++; } - if (cpu_f->cpus[cpu].cpu_type == -1) /* use first eligible CPU if no match was found */ - cpu = MAX(i, 0); + if (cpu_f->cpus[cpu].cpu_type == -1) /* if no exact match was found, use closest matching faster CPU, or fastest eligible CPU */ + cpu = MIN(i, c); } else { /* default */ /* Find first eligible family. */ c = 0; @@ -1790,7 +1796,7 @@ save_machine(void) { char *cat = "Machine"; char *p; - int c, i, j, legacy_cpu = -1; + int c, i, j, old_offset_max, legacy_cpu = -1; p = machine_get_internal_name(); config_set_string(cat, "machine", p); @@ -1799,7 +1805,7 @@ save_machine(void) config_set_int(cat, "cpu_speed", cpu_f->cpus[cpu].rspeed); config_set_double(cat, "cpu_multi", cpu_f->cpus[cpu].multi); - /* Limited forwards compatibility for the previous CPU model system. */ + /* Limited forwards compatibility with the previous CPU model system. */ config_delete_var(cat, "cpu_manufacturer"); config_delete_var(cat, "cpu"); @@ -1817,20 +1823,23 @@ save_machine(void) if (!cpu_legacy_table[c].tables[j]) continue; + old_offset_max = 256; i = -1; do { i++; legacy_table_entry = (cpu_legacy_table_t *) &cpu_legacy_table[c].tables[j][i]; - if (!strcmp(legacy_table_entry->family, cpu_f->internal_name) && (cpu >= legacy_table_entry->new_offset)) { + if (legacy_table_entry->family && (cpu >= legacy_table_entry->new_offset) && !strcmp(legacy_table_entry->family, cpu_f->internal_name)) { /* Found CPU entry, set legacy values. */ if (j) config_set_int(cat, "cpu_manufacturer", j); legacy_cpu = cpu - legacy_table_entry->new_offset + legacy_table_entry->old_offset; + if (legacy_cpu >= old_offset_max) /* if the CPU ID is beyond what is supported by the legacy table, reset to the last supported ID */ + legacy_cpu = old_offset_max - 1; if (legacy_cpu) config_set_int(cat, "cpu", legacy_cpu); - break; } + old_offset_max = legacy_table_entry->old_offset; } while (cpu_legacy_table[c].tables[j][i].old_offset); } } diff --git a/src/cpu/cpu_table.c b/src/cpu/cpu_table.c index 8c17e5b72..a463302fb 100644 --- a/src/cpu/cpu_table.c +++ b/src/cpu/cpu_table.c @@ -958,54 +958,54 @@ cpu_family_t cpu_families[] = { } }; -static cpu_legacy_table_t cpus_8088[] = {{"8088", 0, 0}}; -#define cpus_pcjr cpus_8088 -static cpu_legacy_table_t cpus_europc[] = {{"8088_europc", 0, 0}}; -static cpu_legacy_table_t cpus_8086[] = {{"8086", 0, 0}}; -static cpu_legacy_table_t cpus_pc1512[] = {{"8086", 0, 1}}; -static cpu_legacy_table_t cpus_286[] = {{"286", 0, 0}}; -#define cpus_ibmat cpus_286 -#define cpus_ibmxt286 cpus_286 -static cpu_legacy_table_t cpus_ps1_m2011[] = {{"286", 0, 2}}; -#define cpus_ps2_m30_286 cpus_ps1_m2011 -static cpu_legacy_table_t cpus_i386SX[] = {{"i386sx", 0, 0}}; -static cpu_legacy_table_t cpus_i386DX[] = {{"rapidcad", 5, 0}, {"i386dx", 0, 0}}; -static cpu_legacy_table_t cpus_Am386SX[] = {{"am386sx", 0, 0}}; -static cpu_legacy_table_t cpus_Am386DX[] = {{"am386dx", 0, 0}}; -static cpu_legacy_table_t cpus_ALiM6117[] = {{"m6117", 0, 0}}; -static cpu_legacy_table_t cpus_486SLC[] = {{"cx486srx2", 3, 0}, {"cx486slc", 0, 0}}; -static cpu_legacy_table_t cpus_IBM486SLC[] = {{"ibm486slc3", 4, 0}, {"ibm486slc2", 1, 0}, {"ibm386slc", 0, 0}}; -static cpu_legacy_table_t cpus_IBM486BL[] = {{"ibm486bl3", 2, 0}, {"ibm486bl2", 0, 0}}; -static cpu_legacy_table_t cpus_486DLC[] = {{"cx486drx2", 3, 0}, {"cx486dlc", 0, 0}}; -static cpu_legacy_table_t cpus_i486S1[] = {{"idx4_od", 12, 0}, {"i486dx2", 9, 0}, {"i486dx", 6, 0}, {"i486sx2", 4, 0}, {"i486sx", 0, 0}}; -static cpu_legacy_table_t cpus_Am486S1[] = {{"am486dx2", 6, 0}, {"am486dx", 4, 0}, {"am486sx2", 2, 0}, {"am486sx", 0, 0}}; -static cpu_legacy_table_t cpus_Cx486S1[] = {{"cx486dx2", 5, 0}, {"cx486dx", 3, 0}, {"cx486s", 0, 0}}; -static cpu_legacy_table_t cpus_i486[] = {{"pentium_od_s3", 16, 0}, {"idx4_od", 14, 0}, {"idx4", 12, 0}, {"i486dx2", 9, 0}, {"i486dx", 6, 0}, {"i486sx2", 4, 0}, {"i486sx", 0, 0}}; -static cpu_legacy_table_t cpus_i486_PC330[] = {{"pentium_od_s3", 4, 0}, {"idx4", 2, 0}, {"i486dx2_pc330", 0, 0}}; -static cpu_legacy_table_t cpus_Am486[] = {{"am5x86", 13, 0}, {"am486dx4", 9, 0}, {"am486dx2", 6, 0}, {"am486dx", 4, 0}, {"am486sx2", 2, 0}, {"am486sx", 0, 0}}; -static cpu_legacy_table_t cpus_Cx486[] = {{"cx5x86", 10, 0}, {"cx486dx4", 8, 0}, {"cx486dx2", 5, 0}, {"cx486dx", 3, 0}, {"cx486s", 0, 0}}; -static cpu_legacy_table_t cpus_STPCDX[] = {{"stpc_dx", 0, 0}}; -static cpu_legacy_table_t cpus_STPCDX2[] = {{"stpc_dx2", 0, 0}}; -static cpu_legacy_table_t cpus_6x863V[] = {{"cx6x86", 0, 0}}; -static cpu_legacy_table_t cpus_6x86[] = {{"mii", 14, 0}, {"cx6x86mx", 10, 0}, {"cx6x86l", 6, 0}, {"cx6x86", 0, 0}}; -#define cpus_6x86SS7 cpus_6x86 -static cpu_legacy_table_t cpus_WinChip[] = {{"winchip2a", 15, 0}, {"winchip2", 11, 0}, {"winchip", 0, 0}}; -#define cpus_WinChip_SS7 cpus_WinChip -static cpu_legacy_table_t cpus_Pentium5V[] = {{"pentium_od_s4", 2, 1}, {"pentium_p5", 0, 1}}; -static cpu_legacy_table_t cpus_PentiumS5[] = {{"pentium_od_p55c", 10, 1}, {"pentium_od_s5", 7, 0}, {"pentium_p54c", 2, 1}, {"pentium_od_p55c", 1, 0}, {"pentium_p54c", 0, 0}}; -static cpu_legacy_table_t cpus_Pentium3V[] = {{"pentium_od_p55c", 13, 1}, {"pentium_od_s5", 10, 0}, {"pentium_p54c", 2, 1}, {"pentium_od_p55c", 1, 0}, {"pentium_p54c", 0, 0}}; -static cpu_legacy_table_t cpus_Pentium[] = {{"pentium_od_p55c", 24, 1}, {"pentium_od_s5", 21, 0}, {"pentium_tillamook", 13, 0}, {"pentium_p55c", 10, 0}, {"pentium_p54c", 2, 1}, {"pentium_od_p55c", 1, 0}, {"pentium_p54c", 0, 0}}; -static cpu_legacy_table_t cpus_K5[] = {{"k5_5k86", 6, 3}, {"k5_ssa5", 5, 2}, {"k5_5k86", 4, 2}, {"k5_ssa5", 3, 1}, {"k5_5k86", 2, 1}, {"k5_ssa5", 1, 0}, {"k5_5k86", 0, 0}}; -#define K6_ENTRIES {"k6_2", 18, 0}, {"k6_m7", 14, 0}, {"k6_m6", 11, 0} -static cpu_legacy_table_t cpus_K56[] = {K6_ENTRIES}; -static cpu_legacy_table_t cpus_K56_SS7[] = {{"k6_3p", 38, 0}, {"k6_3", 36, 0}, {"k6_2p", 31, 0}, K6_ENTRIES}; -static cpu_legacy_table_t cpus_PentiumPro[] = {{"pentium2_od", 8, 0}, {"pentiumpro", 0, 0}}; -static cpu_legacy_table_t cpus_PentiumII66[] = {{"pentium2_deschutes", 7, 0}, {"pentium2_klamath", 0, 0}}; -#define cpus_PentiumII cpus_PentiumII66 -static cpu_legacy_table_t cpus_Xeon[] = {{"pentium2_xeon", 0, 0}}; -static cpu_legacy_table_t cpus_Celeron[] = {{"celeron_mendocino", 0, 0}}; -static cpu_legacy_table_t cpus_PentiumIID[] = {{"pentium2_deschutes", 0, 0}}; -static cpu_legacy_table_t cpus_Cyrix3[] = {{"c3_samuel", 0, 0}}; +static cpu_legacy_table_t cpus_8088[] = {{NULL, 6}, {"8088", 0, 0}}; +static cpu_legacy_table_t cpus_pcjr[] = {{NULL, 1}, {"8088", 0, 0}}; +static cpu_legacy_table_t cpus_europc[] = {{NULL, 3}, {"8088_europc", 0, 0}}; +static cpu_legacy_table_t cpus_8086[] = {{NULL, 6}, {"8086", 0, 0}}; +static cpu_legacy_table_t cpus_pc1512[] = {{NULL, 1}, {"8086", 0, 1}}; +static cpu_legacy_table_t cpus_286[] = {{NULL, 7}, {"286", 0, 0}}; +static cpu_legacy_table_t cpus_ibmat[] = {{NULL, 2}, {"286", 0, 0}}; +static cpu_legacy_table_t cpus_ibmxt286[] = {{NULL, 1}, {"286", 0, 0}}; +static cpu_legacy_table_t cpus_ps1_m2011[] = {{NULL, 1}, {"286", 0, 2}}; +static cpu_legacy_table_t cpus_ps2_m30_286[] = {{NULL, 5}, {"286", 0, 2}}; +static cpu_legacy_table_t cpus_i386SX[] = {{NULL, 5}, {"i386sx", 0, 0}}; +static cpu_legacy_table_t cpus_i386DX[] = {{NULL, 8}, {"rapidcad", 5, 0}, {"i386dx", 0, 0}}; +static cpu_legacy_table_t cpus_Am386SX[] = {{NULL, 5}, {"am386sx", 0, 0}}; +static cpu_legacy_table_t cpus_Am386DX[] = {{NULL, 3}, {"am386dx", 0, 0}}; +static cpu_legacy_table_t cpus_ALiM6117[] = {{NULL, 2}, {"m6117", 0, 0}}; +static cpu_legacy_table_t cpus_486SLC[] = {{NULL, 6}, {"cx486srx2", 3, 0}, {"cx486slc", 0, 0}}; +static cpu_legacy_table_t cpus_IBM486SLC[] = {{NULL, 7}, {"ibm486slc3", 4, 0}, {"ibm486slc2", 1, 0}, {"ibm386slc", 0, 0}}; +static cpu_legacy_table_t cpus_IBM486BL[] = {{NULL, 4}, {"ibm486bl3", 2, 0}, {"ibm486bl2", 0, 0}}; +static cpu_legacy_table_t cpus_486DLC[] = {{NULL, 7}, {"cx486drx2", 3, 0}, {"cx486dlc", 0, 0}}; +static cpu_legacy_table_t cpus_i486S1[] = {{NULL, 14}, {"idx4_od", 12, 0}, {"i486dx2", 9, 0}, {"i486dx", 6, 0}, {"i486sx2", 4, 0}, {"i486sx", 0, 0}}; +static cpu_legacy_table_t cpus_Am486S1[] = {{NULL, 9}, {"am486dx2", 6, 0}, {"am486dx", 4, 0}, {"am486sx2", 2, 0}, {"am486sx", 0, 0}}; +static cpu_legacy_table_t cpus_Cx486S1[] = {{NULL, 8}, {"cx486dx2", 5, 0}, {"cx486dx", 3, 0}, {"cx486s", 0, 0}}; +static cpu_legacy_table_t cpus_i486[] = {{NULL, 18}, {"pentium_od_s3", 16, 0}, {"idx4_od", 14, 0}, {"idx4", 12, 0}, {"i486dx2", 9, 0}, {"i486dx", 6, 0}, {"i486sx2", 4, 0}, {"i486sx", 0, 0}}; +static cpu_legacy_table_t cpus_i486_PC330[] = {{NULL, 6}, {"pentium_od_s3", 4, 0}, {"idx4", 2, 0}, {"i486dx2_pc330", 0, 0}}; +static cpu_legacy_table_t cpus_Am486[] = {{NULL, 16}, {"am5x86", 13, 0}, {"am486dx4", 9, 0}, {"am486dx2", 6, 0}, {"am486dx", 4, 0}, {"am486sx2", 2, 0}, {"am486sx", 0, 0}}; +static cpu_legacy_table_t cpus_Cx486[] = {{NULL, 14}, {"cx5x86", 10, 0}, {"cx486dx4", 8, 0}, {"cx486dx2", 5, 0}, {"cx486dx", 3, 0}, {"cx486s", 0, 0}}; +static cpu_legacy_table_t cpus_STPCDX[] = {{NULL, 2}, {"stpc_dx", 0, 0}}; +static cpu_legacy_table_t cpus_STPCDX2[] = {{NULL, 1}, {"stpc_dx2", 0, 0}}; +static cpu_legacy_table_t cpus_6x863V[] = {{NULL, 6}, {"cx6x86", 0, 0}}; +static cpu_legacy_table_t cpus_6x86[] = {{NULL, 16}, {"mii", 14, 0}, {"cx6x86mx", 10, 0}, {"cx6x86l", 6, 0}, {"cx6x86", 0, 0}}; +static cpu_legacy_table_t cpus_6x86SS7[] = {{NULL, 19}, {"mii", 14, 0}, {"cx6x86mx", 10, 0}, {"cx6x86l", 6, 0}, {"cx6x86", 0, 0}}; +static cpu_legacy_table_t cpus_WinChip[] = {{NULL, 17}, {"winchip2a", 15, 0}, {"winchip2", 11, 0}, {"winchip", 0, 0}}; +static cpu_legacy_table_t cpus_WinChip_SS7[] = {{NULL, 19}, {"winchip2a", 15, 0}, {"winchip2", 11, 0}, {"winchip", 0, 0}}; +static cpu_legacy_table_t cpus_Pentium5V[] = {{NULL, 4}, {"pentium_od_s4", 2, 1}, {"pentium_p5", 0, 1}}; +static cpu_legacy_table_t cpus_PentiumS5[] = {{NULL, 15}, {"pentium_od_p55c", 10, 1}, {"pentium_od_s5", 7, 0}, {"pentium_p54c", 2, 1}, {"pentium_od_p55c", 1, 0}, {"pentium_p54c", 0, 0}}; +static cpu_legacy_table_t cpus_Pentium3V[] = {{NULL, 18}, {"pentium_od_p55c", 13, 1}, {"pentium_od_s5", 10, 0}, {"pentium_p54c", 2, 1}, {"pentium_od_p55c", 1, 0}, {"pentium_p54c", 0, 0}}; +static cpu_legacy_table_t cpus_Pentium[] = {{NULL, 29}, {"pentium_od_p55c", 24, 1}, {"pentium_od_s5", 21, 0}, {"pentium_tillamook", 13, 0}, {"pentium_p55c", 10, 0}, {"pentium_p54c", 2, 1}, {"pentium_od_p55c", 1, 0}, {"pentium_p54c", 0, 0}}; +static cpu_legacy_table_t cpus_K5[] = {{NULL, 11}, {"k5_5k86", 6, 3}, {"k5_ssa5", 5, 2}, {"k5_5k86", 4, 2}, {"k5_ssa5", 3, 1}, {"k5_5k86", 2, 1}, {"k5_ssa5", 1, 0}, {"k5_5k86", 0, 0}}; +#define K6_ENTRIES {"k6_2", 7, 0}, {"k6_m7", 3, 0}, {"k6_m6", 0, 0} +static cpu_legacy_table_t cpus_K56[] = {{NULL, 11}, K6_ENTRIES}; +static cpu_legacy_table_t cpus_K56_SS7[] = {{NULL, 43}, {"k6_3p", 38, 0}, {"k6_3", 36, 0}, {"k6_2p", 31, 0}, K6_ENTRIES}; +static cpu_legacy_table_t cpus_PentiumPro[] = {{NULL, 20}, {"pentium2_od", 8, 0}, {"pentiumpro", 0, 0}}; +static cpu_legacy_table_t cpus_PentiumII66[] = {{NULL, 14}, {"pentium2_deschutes", 7, 0}, {"pentium2_klamath", 0, 0}}; +static cpu_legacy_table_t cpus_PentiumII[] = {{NULL, 17}, {"pentium2_deschutes", 7, 0}, {"pentium2_klamath", 0, 0}}; +static cpu_legacy_table_t cpus_Xeon[] = {{NULL, 6}, {"pentium2_xeon", 0, 0}}; +static cpu_legacy_table_t cpus_Celeron[] = {{NULL, 12}, {"celeron_mendocino", 0, 0}}; +static cpu_legacy_table_t cpus_PentiumIID[] = {{NULL, 10}, {"pentium2_deschutes", 0, 0}}; +static cpu_legacy_table_t cpus_Cyrix3[] = {{NULL, 13}, {"c3_samuel", 0, 0}}; cpu_legacy_machine_t cpu_legacy_table[] = { {"ibmpc", {cpus_8088}}, From 149322a06ac2951a15e31d6d28f5506109531139 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 18 Nov 2020 19:56:22 -0300 Subject: [PATCH 11/28] Rewrite CPU table backwards compatibility system, and fix a crash in the speed clamping code --- src/config.c | 120 +++-- src/cpu/cpu.c | 14 +- src/cpu/cpu.h | 24 +- src/cpu/cpu_table.c | 1186 +++++++++++++++++++++++++++++++++---------- 4 files changed, 986 insertions(+), 358 deletions(-) diff --git a/src/config.c b/src/config.c index 4ee5aeab2..ba5ad8f44 100644 --- a/src/config.c +++ b/src/config.c @@ -509,9 +509,8 @@ load_machine(void) { char *cat = "Machine"; char *p; - int c, i, speed, legacy_mfg, legacy_cpu, new_cpu; + int c, i, speed, legacy_mfg, legacy_cpu; double multi; - cpu_family_t *legacy_family; p = config_get_string(cat, "machine", NULL); if (p != NULL) { @@ -549,7 +548,9 @@ load_machine(void) /* Backwards compatibility with the previous CPU model system. */ legacy_mfg = config_get_int(cat, "cpu_manufacturer", 0); legacy_cpu = config_get_int(cat, "cpu", 0); - if (legacy_mfg || legacy_cpu) { + + /* Check if either legacy ID is present, and if they are within bounds. */ + if (((legacy_mfg > 0) || (legacy_cpu > 0)) && (legacy_mfg >= 0) && (legacy_mfg < 4) && (legacy_cpu >= 0)) { /* Look for a machine entry on the legacy table. */ p = machine_get_internal_name(); c = 0; @@ -559,44 +560,24 @@ load_machine(void) c++; } if (cpu_legacy_table[c].machine) { - /* Look for a corresponding CPU entry. */ + /* Determine the amount of CPU entries on the table. */ i = -1; - cpu_legacy_table_t *legacy_table_entry; - do { - i++; - legacy_table_entry = (cpu_legacy_table_t *) &cpu_legacy_table[c].tables[legacy_mfg][i]; - if (legacy_cpu >= legacy_table_entry->old_offset) { - /* Found CPU entry, set new values. */ + while (cpu_legacy_table[c].tables[legacy_mfg][++i].family); - if (!legacy_table_entry->family) /* reset to defaults if the CPU ID is beyond what is supported by the legacy table */ - break; + /* If the CPU ID is out of bounds, reset to the last known ID. */ + if (legacy_cpu >= i) + legacy_cpu = i - 1; - legacy_family = cpu_get_family((char *) legacy_table_entry->family); - if (!legacy_family || !cpu_family_is_eligible(legacy_family, machine)) /* check if the family exists and is eligible; if not, reset to defaults */ - break; - config_set_string(cat, "cpu_family", (char *) legacy_family->internal_name); - cpu_f = legacy_family; + const cpu_legacy_table_t *legacy_table_entry = &cpu_legacy_table[c].tables[legacy_mfg][legacy_cpu]; - legacy_cpu -= legacy_table_entry->old_offset; - legacy_cpu += legacy_table_entry->new_offset; - new_cpu = legacy_cpu; - while (!cpu_is_eligible(legacy_family, new_cpu, machine)) { /* if the legacy CPU is no longer eligible, find the next eligible one */ - new_cpu++; - if (legacy_family->cpus[new_cpu].cpu_type == 0) /* end of list, wrap around */ - new_cpu = 0; - if (new_cpu == legacy_cpu) { /* back at legacy CPU = no eligible ones found (shouldn't really happen due to the cpu_family_is_eligible check above) */ - new_cpu = -1; - break; - } - } - if (new_cpu != -1) { /* store only if an eligible CPU was found; if not, reset CPU (but not family) to defaults */ - config_set_int(cat, "cpu_speed", legacy_family->cpus[new_cpu].rspeed); - config_set_double(cat, "cpu_multi", legacy_family->cpus[new_cpu].multi); - } - - break; - } - } while (cpu_legacy_table[c].tables[legacy_mfg][i].old_offset); + /* Check if the referenced family exists. */ + cpu_f = cpu_get_family(legacy_table_entry->family); + if (cpu_f) { + /* Save the new values. */ + config_set_string(cat, "cpu_family", (char *) legacy_table_entry->family); + config_set_int(cat, "cpu_speed", legacy_table_entry->rspeed); + config_set_double(cat, "cpu_multi", legacy_table_entry->multi); + } } } } @@ -609,17 +590,17 @@ load_machine(void) cpu = 0; c = 0; i = 256; - while (cpu_f->cpus[cpu].cpu_type != -1) { + while (cpu_f->cpus[cpu].cpu_type) { if (cpu_is_eligible(cpu_f, cpu, machine)) { /* skip ineligible CPUs */ - if ((cpu_f->cpus[cpu].rspeed == speed) && (cpu_f->cpus[cpu].multi == multi)) /* check if clock speed and multiplier match */ + if ((cpu_f->cpus[cpu].rspeed == speed) && (cpu_f->cpus[cpu].multi == multi)) /* exact speed/multiplier match */ break; - else if ((cpu_f->cpus[cpu].rspeed > speed) && (i == 256)) /* store closest matching faster CPU */ + else if ((cpu_f->cpus[cpu].rspeed >= speed) && (i == 256)) /* closest speed match */ i = cpu; c = cpu; /* store fastest eligible CPU */ } cpu++; } - if (cpu_f->cpus[cpu].cpu_type == -1) /* if no exact match was found, use closest matching faster CPU, or fastest eligible CPU */ + if (!cpu_f->cpus[cpu].cpu_type) /* if no exact match was found, use closest matching faster CPU, or fastest eligible CPU */ cpu = MIN(i, c); } else { /* default */ /* Find first eligible family. */ @@ -630,7 +611,7 @@ load_machine(void) return; } } - cpu_f = &cpu_families[c]; + cpu_f = (cpu_family_t *) &cpu_families[c]; /* Find first eligible CPU in that family. */ cpu = 0; @@ -1610,7 +1591,7 @@ config_load(void) memset(zip_drives, 0, sizeof(zip_drive_t)); if (! config_read(cfg_path)) { - cpu_f = &cpu_families[0]; + cpu_f = (cpu_family_t *) &cpu_families[0]; cpu = 0; #ifdef USE_LANGUAGE plat_langid = 0x0409; @@ -1796,7 +1777,7 @@ save_machine(void) { char *cat = "Machine"; char *p; - int c, i, j, old_offset_max, legacy_cpu = -1; + int c, i = 0, legacy_mfg, legacy_cpu = -1, closest_legacy_cpu = -1; p = machine_get_internal_name(); config_set_string(cat, "machine", p); @@ -1805,7 +1786,7 @@ save_machine(void) config_set_int(cat, "cpu_speed", cpu_f->cpus[cpu].rspeed); config_set_double(cat, "cpu_multi", cpu_f->cpus[cpu].multi); - /* Limited forwards compatibility with the previous CPU model system. */ + /* Forwards compatibility with the previous CPU model system. */ config_delete_var(cat, "cpu_manufacturer"); config_delete_var(cat, "cpu"); @@ -1819,28 +1800,41 @@ save_machine(void) if (cpu_legacy_table[c].machine) { /* Look for a corresponding CPU entry. */ cpu_legacy_table_t *legacy_table_entry; - for (j = 0; (j < 5) && (legacy_cpu == -1); j++) { - if (!cpu_legacy_table[c].tables[j]) + for (legacy_mfg = 0; legacy_mfg < 4; legacy_mfg++) { + if (!cpu_legacy_table[c].tables[legacy_mfg]) continue; - old_offset_max = 256; - i = -1; + i = 0; do { - i++; - legacy_table_entry = (cpu_legacy_table_t *) &cpu_legacy_table[c].tables[j][i]; - if (legacy_table_entry->family && (cpu >= legacy_table_entry->new_offset) && !strcmp(legacy_table_entry->family, cpu_f->internal_name)) { - /* Found CPU entry, set legacy values. */ - if (j) - config_set_int(cat, "cpu_manufacturer", j); - legacy_cpu = cpu - legacy_table_entry->new_offset + legacy_table_entry->old_offset; - if (legacy_cpu >= old_offset_max) /* if the CPU ID is beyond what is supported by the legacy table, reset to the last supported ID */ - legacy_cpu = old_offset_max - 1; - if (legacy_cpu) - config_set_int(cat, "cpu", legacy_cpu); - break; + legacy_table_entry = (cpu_legacy_table_t *) &cpu_legacy_table[c].tables[legacy_mfg][i]; + + /* Match the family name, speed and multiplier. */ + if (!strcmp(cpu_f->internal_name, legacy_table_entry->family)) { + if ((legacy_table_entry->rspeed == cpu_f->cpus[cpu].rspeed) && + (legacy_table_entry->multi == cpu_f->cpus[cpu].multi)) { /* exact speed/multiplier match */ + legacy_cpu = i; + break; + } else if ((legacy_table_entry->rspeed >= cpu_f->cpus[cpu].rspeed) && + (closest_legacy_cpu == -1)) { /* closest speed match */ + closest_legacy_cpu = i; + } } - old_offset_max = legacy_table_entry->old_offset; - } while (cpu_legacy_table[c].tables[j][i].old_offset); + } while (cpu_legacy_table[c].tables[legacy_mfg][++i].family); + + /* Use the closest speed match if no exact match was found. */ + if ((legacy_cpu == -1) && (closest_legacy_cpu > -1)) { + legacy_cpu = closest_legacy_cpu; + break; + } else if (legacy_cpu > -1) /* exact match found */ + break; + } + + /* Set legacy values if a match was found. */ + if (legacy_cpu > -1) { + if (legacy_mfg) + config_set_int(cat, "cpu_manufacturer", legacy_mfg); + if (legacy_cpu) + config_set_int(cat, "cpu", legacy_cpu); } } diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index a74c91ca3..b3208de92 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -315,7 +315,7 @@ cpu_set_edx(void) } cpu_family_t * -cpu_get_family(char *internal_name) +cpu_get_family(const char *internal_name) { int c = 0; while (cpu_families[c].package) { @@ -329,7 +329,7 @@ cpu_get_family(char *internal_name) uint8_t -cpu_is_eligible(cpu_family_t *cpu_family, int cpu, int machine) +cpu_is_eligible(const cpu_family_t *cpu_family, int cpu, int machine) { /* Get machine. */ const machine_t *machine_s = &machines[machine]; @@ -399,7 +399,7 @@ cpu_is_eligible(cpu_family_t *cpu_family, int cpu, int machine) uint8_t -cpu_family_is_eligible(cpu_family_t *cpu_family, int machine) +cpu_family_is_eligible(const cpu_family_t *cpu_family, int machine) { int c = 0; @@ -413,7 +413,7 @@ cpu_family_is_eligible(cpu_family_t *cpu_family, int machine) } -int fpu_get_type(cpu_family_t *cpu_family, int cpu, const char *internal_name) +int fpu_get_type(const cpu_family_t *cpu_family, int cpu, const char *internal_name) { const CPU *cpu_s = &cpu_family->cpus[cpu]; const FPU *fpus = cpu_s->fpus; @@ -430,7 +430,7 @@ int fpu_get_type(cpu_family_t *cpu_family, int cpu, const char *internal_name) return fpu_type; } -const char *fpu_get_internal_name(cpu_family_t *cpu_family, int cpu, int type) +const char *fpu_get_internal_name(const cpu_family_t *cpu_family, int cpu, int type) { const CPU *cpu_s = &cpu_family->cpus[cpu]; const FPU *fpus = cpu_s->fpus; @@ -446,7 +446,7 @@ const char *fpu_get_internal_name(cpu_family_t *cpu_family, int cpu, int type) return fpus[0].internal_name; } -const char *fpu_get_name_from_index(cpu_family_t *cpu_family, int cpu, int c) +const char *fpu_get_name_from_index(const cpu_family_t *cpu_family, int cpu, int c) { const CPU *cpu_s = &cpu_family->cpus[cpu]; const FPU *fpus = cpu_s->fpus; @@ -454,7 +454,7 @@ const char *fpu_get_name_from_index(cpu_family_t *cpu_family, int cpu, int c) return fpus[c].name; } -int fpu_get_type_from_index(cpu_family_t *cpu_family, int cpu, int c) +int fpu_get_type_from_index(const cpu_family_t *cpu_family, int cpu, int c) { const CPU *cpu_s = &cpu_family->cpus[cpu]; const FPU *fpus = cpu_s->fpus; diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h index 35850debb..b3874b981 100644 --- a/src/cpu/cpu.h +++ b/src/cpu/cpu.h @@ -161,13 +161,13 @@ typedef struct { typedef struct { const char *family; - const int old_offset; - const int new_offset; + const int rspeed; + const double multi; } cpu_legacy_table_t; typedef struct { const char *machine; - const cpu_legacy_table_t *tables[5]; + const cpu_legacy_table_t **tables; } cpu_legacy_machine_t; @@ -370,8 +370,8 @@ COMPILE_TIME_ASSERT(sizeof(cpu_state_t) <= 128) /* Global variables. */ -extern cpu_family_t cpu_families[]; -extern cpu_legacy_machine_t cpu_legacy_table[]; +extern const cpu_family_t cpu_families[]; +extern const cpu_legacy_machine_t cpu_legacy_table[]; extern cpu_family_t *cpu_f; extern CPU *cpu_s; @@ -574,13 +574,13 @@ extern int sysexit(uint32_t fetchdat); extern int syscall(uint32_t fetchdat); extern int sysret(uint32_t fetchdat); -extern cpu_family_t *cpu_get_family(char *internal_name); -extern uint8_t cpu_is_eligible(cpu_family_t *cpu_family, int cpu, int machine); -extern uint8_t cpu_family_is_eligible(cpu_family_t *cpu_family, int machine); -extern int fpu_get_type(cpu_family_t *cpu_family, int cpu, const char *internal_name); -extern const char *fpu_get_internal_name(cpu_family_t *cpu_family, int cpu, int type); -extern const char *fpu_get_name_from_index(cpu_family_t *cpu_family, int cpu, int c); -extern int fpu_get_type_from_index(cpu_family_t *cpu_family, int cpu, int c); +extern cpu_family_t *cpu_get_family(const char *internal_name); +extern uint8_t cpu_is_eligible(const cpu_family_t *cpu_family, int cpu, int machine); +extern uint8_t cpu_family_is_eligible(const cpu_family_t *cpu_family, int machine); +extern int fpu_get_type(const cpu_family_t *cpu_family, int cpu, const char *internal_name); +extern const char *fpu_get_internal_name(const cpu_family_t *cpu_family, int cpu, int type); +extern const char *fpu_get_name_from_index(const cpu_family_t *cpu_family, int cpu, int c); +extern int fpu_get_type_from_index(const cpu_family_t *cpu_family, int cpu, int c); void cyrix_load_seg_descriptor(uint32_t addr, x86seg *seg); void cyrix_write_seg_descriptor(uint32_t addr, x86seg *seg); diff --git a/src/cpu/cpu_table.c b/src/cpu/cpu_table.c index a463302fb..e7523b553 100644 --- a/src/cpu/cpu_table.c +++ b/src/cpu/cpu_table.c @@ -67,7 +67,7 @@ FPU fpus_internal[] = }; -cpu_family_t cpu_families[] = { +const cpu_family_t cpu_families[] = { { .package = CPU_PKG_8088, /* pcjr = only 4.77 */ .manufacturer = "Intel", @@ -205,7 +205,7 @@ cpu_family_t cpu_families[] = { .cpus = { {"16", CPU_IBM386SLC, fpus_80386, 16000000, 1, 5000, 0xA301, 0, 0, 0, 3,3,3,3, 2}, {"20", CPU_IBM386SLC, fpus_80386, 20000000, 1, 5000, 0xA301, 0, 0, 0, 4,4,3,3, 3}, - {"25", CPU_IBM386SLC, fpus_80386, 25000000, 1, 5000, 0xA301, 0, 0, 0, 4,4,3,3, 3}, + {"25", CPU_IBM386SLC, fpus_80386, 25000000, 1, 5000, 0xA301, 0, 0, 0, 4,4,3,3, 3}, {"", 0} } }, { @@ -258,14 +258,14 @@ cpu_family_t cpu_families[] = { .cpus = { {"60", CPU_IBM486SLC, fpus_80386, 60000000, 3, 5000, 0xA439, 0, 0, 0, 12,12,9,9, 7}, {"75", CPU_IBM486SLC, fpus_80386, 75000000, 3, 5000, 0xA439, 0, 0, 0, 12,12,9,9, 9}, - {"100", CPU_IBM486SLC, fpus_80386, 100000000, 3, 5000, 0xA439, 0, 0, 0, 18,18,9,9, 12}, + {"100", CPU_IBM486SLC, fpus_80386, 100000000, 3, 5000, 0xA439, 0, 0, 0, 18,18,9,9, 12}, {"", 0} } }, { .package = CPU_PKG_486BL, .manufacturer = "IBM", .name = "486BL2", - .internal_name = "486bl2", + .internal_name = "ibm486bl2", .cpus = { {"50", CPU_IBM486BL, fpus_80386, 50000000, 2, 5000, 0xA439, 0, 0, 0, 8,8,6,6, 6}, {"66", CPU_IBM486BL, fpus_80386, 66666666, 2, 5000, 0xA439, 0, 0, 0, 12,12,6,6, 8}, @@ -275,10 +275,10 @@ cpu_family_t cpu_families[] = { .package = CPU_PKG_486BL, .manufacturer = "IBM", .name = "486BL3", - .internal_name = "486bl3", + .internal_name = "ibm486bl3", .cpus = { {"75", CPU_IBM486BL, fpus_80386, 75000000, 3, 5000, 0xA439, 0, 0, 0, 12,12,9,9, 9}, - {"100", CPU_IBM486BL, fpus_80386, 100000000, 3, 5000, 0xA439, 0, 0, 0, 18,18,9,9, 12}, + {"100", CPU_IBM486BL, fpus_80386, 100000000, 3, 5000, 0xA439, 0, 0, 0, 18,18,9,9, 12}, {"", 0} } }, { @@ -382,7 +382,7 @@ cpu_family_t cpu_families[] = { .package = CPU_PKG_SOCKET3 | CPU_PKG_SOCKET3_PC330, .manufacturer = "Intel", .name = "Pentium OverDrive", - .internal_name = "pentium_od_s3", + .internal_name = "pentium_p24t", .cpus = { {"63", CPU_P24T, fpus_internal, 62500000, 2.5, 5000, 0x1531, 0x1531, 0x0000, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 10,10,7,7, 15/2}, {"83", CPU_P24T, fpus_internal, 83333333, 2.5, 5000, 0x1532, 0x1532, 0x0000, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 15,15,8,8, 10}, @@ -543,7 +543,7 @@ cpu_family_t cpu_families[] = { .package = CPU_PKG_SOCKET4, .manufacturer = "Intel", .name = "Pentium OverDrive", - .internal_name = "pentium_od_s4", + .internal_name = "pentium_p54c_od4", .cpus = { {"100", CPU_PENTIUM, fpus_internal, 100000000, 2, 5000, 0x51A, 0x51A, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 8, 8,6,6, 12}, {"120", CPU_PENTIUM, fpus_internal, 120000000, 2, 5000, 0x51A, 0x51A, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 12,12,6,6, 14}, @@ -598,7 +598,7 @@ cpu_family_t cpu_families[] = { .package = CPU_PKG_SOCKET5_7, .manufacturer = "Intel", .name = "Pentium OverDrive", - .internal_name = "pentium_od_s5", + .internal_name = "pentium_p54c_od5", .cpus = { {"125", CPU_PENTIUM, fpus_internal, 125000000, 3.0, 3520, 0x52c, 0x52c, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 12,12,7,7, 16}, {"150", CPU_PENTIUM, fpus_internal, 150000000, 2.5, 3520, 0x52c, 0x52c, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 15,15,7,7, 35/2}, @@ -609,7 +609,7 @@ cpu_family_t cpu_families[] = { .package = CPU_PKG_SOCKET5_7, .manufacturer = "Intel", .name = "Pentium OverDrive MMX", - .internal_name = "pentium_od_p55c", + .internal_name = "pentium_p55c_od", .cpus = { {"75", CPU_PENTIUMMMX, fpus_internal, 75000000, 1.5, 3520, 0x1542, 0x1542, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 7, 7,4,4, 9}, {"125", CPU_PENTIUMMMX, fpus_internal, 125000000, 2.5, 3520, 0x1542, 0x1542, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 12,12,7,7, 15}, @@ -958,271 +958,905 @@ cpu_family_t cpu_families[] = { } }; -static cpu_legacy_table_t cpus_8088[] = {{NULL, 6}, {"8088", 0, 0}}; -static cpu_legacy_table_t cpus_pcjr[] = {{NULL, 1}, {"8088", 0, 0}}; -static cpu_legacy_table_t cpus_europc[] = {{NULL, 3}, {"8088_europc", 0, 0}}; -static cpu_legacy_table_t cpus_8086[] = {{NULL, 6}, {"8086", 0, 0}}; -static cpu_legacy_table_t cpus_pc1512[] = {{NULL, 1}, {"8086", 0, 1}}; -static cpu_legacy_table_t cpus_286[] = {{NULL, 7}, {"286", 0, 0}}; -static cpu_legacy_table_t cpus_ibmat[] = {{NULL, 2}, {"286", 0, 0}}; -static cpu_legacy_table_t cpus_ibmxt286[] = {{NULL, 1}, {"286", 0, 0}}; -static cpu_legacy_table_t cpus_ps1_m2011[] = {{NULL, 1}, {"286", 0, 2}}; -static cpu_legacy_table_t cpus_ps2_m30_286[] = {{NULL, 5}, {"286", 0, 2}}; -static cpu_legacy_table_t cpus_i386SX[] = {{NULL, 5}, {"i386sx", 0, 0}}; -static cpu_legacy_table_t cpus_i386DX[] = {{NULL, 8}, {"rapidcad", 5, 0}, {"i386dx", 0, 0}}; -static cpu_legacy_table_t cpus_Am386SX[] = {{NULL, 5}, {"am386sx", 0, 0}}; -static cpu_legacy_table_t cpus_Am386DX[] = {{NULL, 3}, {"am386dx", 0, 0}}; -static cpu_legacy_table_t cpus_ALiM6117[] = {{NULL, 2}, {"m6117", 0, 0}}; -static cpu_legacy_table_t cpus_486SLC[] = {{NULL, 6}, {"cx486srx2", 3, 0}, {"cx486slc", 0, 0}}; -static cpu_legacy_table_t cpus_IBM486SLC[] = {{NULL, 7}, {"ibm486slc3", 4, 0}, {"ibm486slc2", 1, 0}, {"ibm386slc", 0, 0}}; -static cpu_legacy_table_t cpus_IBM486BL[] = {{NULL, 4}, {"ibm486bl3", 2, 0}, {"ibm486bl2", 0, 0}}; -static cpu_legacy_table_t cpus_486DLC[] = {{NULL, 7}, {"cx486drx2", 3, 0}, {"cx486dlc", 0, 0}}; -static cpu_legacy_table_t cpus_i486S1[] = {{NULL, 14}, {"idx4_od", 12, 0}, {"i486dx2", 9, 0}, {"i486dx", 6, 0}, {"i486sx2", 4, 0}, {"i486sx", 0, 0}}; -static cpu_legacy_table_t cpus_Am486S1[] = {{NULL, 9}, {"am486dx2", 6, 0}, {"am486dx", 4, 0}, {"am486sx2", 2, 0}, {"am486sx", 0, 0}}; -static cpu_legacy_table_t cpus_Cx486S1[] = {{NULL, 8}, {"cx486dx2", 5, 0}, {"cx486dx", 3, 0}, {"cx486s", 0, 0}}; -static cpu_legacy_table_t cpus_i486[] = {{NULL, 18}, {"pentium_od_s3", 16, 0}, {"idx4_od", 14, 0}, {"idx4", 12, 0}, {"i486dx2", 9, 0}, {"i486dx", 6, 0}, {"i486sx2", 4, 0}, {"i486sx", 0, 0}}; -static cpu_legacy_table_t cpus_i486_PC330[] = {{NULL, 6}, {"pentium_od_s3", 4, 0}, {"idx4", 2, 0}, {"i486dx2_pc330", 0, 0}}; -static cpu_legacy_table_t cpus_Am486[] = {{NULL, 16}, {"am5x86", 13, 0}, {"am486dx4", 9, 0}, {"am486dx2", 6, 0}, {"am486dx", 4, 0}, {"am486sx2", 2, 0}, {"am486sx", 0, 0}}; -static cpu_legacy_table_t cpus_Cx486[] = {{NULL, 14}, {"cx5x86", 10, 0}, {"cx486dx4", 8, 0}, {"cx486dx2", 5, 0}, {"cx486dx", 3, 0}, {"cx486s", 0, 0}}; -static cpu_legacy_table_t cpus_STPCDX[] = {{NULL, 2}, {"stpc_dx", 0, 0}}; -static cpu_legacy_table_t cpus_STPCDX2[] = {{NULL, 1}, {"stpc_dx2", 0, 0}}; -static cpu_legacy_table_t cpus_6x863V[] = {{NULL, 6}, {"cx6x86", 0, 0}}; -static cpu_legacy_table_t cpus_6x86[] = {{NULL, 16}, {"mii", 14, 0}, {"cx6x86mx", 10, 0}, {"cx6x86l", 6, 0}, {"cx6x86", 0, 0}}; -static cpu_legacy_table_t cpus_6x86SS7[] = {{NULL, 19}, {"mii", 14, 0}, {"cx6x86mx", 10, 0}, {"cx6x86l", 6, 0}, {"cx6x86", 0, 0}}; -static cpu_legacy_table_t cpus_WinChip[] = {{NULL, 17}, {"winchip2a", 15, 0}, {"winchip2", 11, 0}, {"winchip", 0, 0}}; -static cpu_legacy_table_t cpus_WinChip_SS7[] = {{NULL, 19}, {"winchip2a", 15, 0}, {"winchip2", 11, 0}, {"winchip", 0, 0}}; -static cpu_legacy_table_t cpus_Pentium5V[] = {{NULL, 4}, {"pentium_od_s4", 2, 1}, {"pentium_p5", 0, 1}}; -static cpu_legacy_table_t cpus_PentiumS5[] = {{NULL, 15}, {"pentium_od_p55c", 10, 1}, {"pentium_od_s5", 7, 0}, {"pentium_p54c", 2, 1}, {"pentium_od_p55c", 1, 0}, {"pentium_p54c", 0, 0}}; -static cpu_legacy_table_t cpus_Pentium3V[] = {{NULL, 18}, {"pentium_od_p55c", 13, 1}, {"pentium_od_s5", 10, 0}, {"pentium_p54c", 2, 1}, {"pentium_od_p55c", 1, 0}, {"pentium_p54c", 0, 0}}; -static cpu_legacy_table_t cpus_Pentium[] = {{NULL, 29}, {"pentium_od_p55c", 24, 1}, {"pentium_od_s5", 21, 0}, {"pentium_tillamook", 13, 0}, {"pentium_p55c", 10, 0}, {"pentium_p54c", 2, 1}, {"pentium_od_p55c", 1, 0}, {"pentium_p54c", 0, 0}}; -static cpu_legacy_table_t cpus_K5[] = {{NULL, 11}, {"k5_5k86", 6, 3}, {"k5_ssa5", 5, 2}, {"k5_5k86", 4, 2}, {"k5_ssa5", 3, 1}, {"k5_5k86", 2, 1}, {"k5_ssa5", 1, 0}, {"k5_5k86", 0, 0}}; -#define K6_ENTRIES {"k6_2", 7, 0}, {"k6_m7", 3, 0}, {"k6_m6", 0, 0} -static cpu_legacy_table_t cpus_K56[] = {{NULL, 11}, K6_ENTRIES}; -static cpu_legacy_table_t cpus_K56_SS7[] = {{NULL, 43}, {"k6_3p", 38, 0}, {"k6_3", 36, 0}, {"k6_2p", 31, 0}, K6_ENTRIES}; -static cpu_legacy_table_t cpus_PentiumPro[] = {{NULL, 20}, {"pentium2_od", 8, 0}, {"pentiumpro", 0, 0}}; -static cpu_legacy_table_t cpus_PentiumII66[] = {{NULL, 14}, {"pentium2_deschutes", 7, 0}, {"pentium2_klamath", 0, 0}}; -static cpu_legacy_table_t cpus_PentiumII[] = {{NULL, 17}, {"pentium2_deschutes", 7, 0}, {"pentium2_klamath", 0, 0}}; -static cpu_legacy_table_t cpus_Xeon[] = {{NULL, 6}, {"pentium2_xeon", 0, 0}}; -static cpu_legacy_table_t cpus_Celeron[] = {{NULL, 12}, {"celeron_mendocino", 0, 0}}; -static cpu_legacy_table_t cpus_PentiumIID[] = {{NULL, 10}, {"pentium2_deschutes", 0, 0}}; -static cpu_legacy_table_t cpus_Cyrix3[] = {{NULL, 13}, {"c3_samuel", 0, 0}}; +/* Legacy CPU tables for backwards compatibility. */ -cpu_legacy_machine_t cpu_legacy_table[] = { - {"ibmpc", {cpus_8088}}, - {"ibmpc82", {cpus_8088}}, - {"ibmpcjr", {cpus_pcjr}}, - {"ibmxt", {cpus_8088}}, - {"ibmxt86", {cpus_8088}}, - {"americxt", {cpus_8088}}, - {"amixt", {cpus_8088}}, - {"portable", {cpus_8088}}, - {"dtk", {cpus_8088}}, - {"genxt", {cpus_8088}}, - {"jukopc", {cpus_8088}}, - {"open_xt", {cpus_8088}}, - {"pxxt", {cpus_8088}}, - {"europc", {cpus_europc}}, - {"tandy", {cpus_europc}}, - {"tandy1000hx", {cpus_europc}}, - {"t1000", {cpus_8088}}, - {"ltxt", {cpus_8088}}, - {"xi8088", {cpus_8088}}, - {"zdsupers", {cpus_8088}}, - {"pc1512", {cpus_pc1512}}, - {"pc1640", {cpus_8086}}, - {"pc2086", {cpus_8086}}, - {"pc3086", {cpus_8086}}, - {"pc200", {cpus_8086}}, - {"ppc512", {cpus_8086}}, - {"deskpro", {cpus_8086}}, - {"olivetti_m24", {cpus_8086}}, - {"iskra3104", {cpus_8086}}, - {"tandy1000sl2", {cpus_8086}}, - {"t1200", {cpus_8086}}, - {"lxt3", {cpus_8086}}, - {"hed919", {cpus_286}}, - {"ibmat", {cpus_ibmat}}, - {"ibmps1es", {cpus_ps1_m2011}}, - {"ibmps2_m30_286", {cpus_ps2_m30_286, cpus_IBM486SLC}}, - {"ibmxt286", {cpus_ibmxt286}}, - {"ibmatami", {cpus_ibmat}}, - {"cmdpc30", {cpus_286}}, - {"portableii", {cpus_286}}, - {"portableiii", {cpus_286}}, - {"mr286", {cpus_286}}, - {"open_at", {cpus_286}}, - {"ibmatpx", {cpus_ibmat}}, - {"ibmatquadtel", {cpus_ibmat}}, - {"siemens", {cpus_286}}, - {"t3100e", {cpus_286}}, - {"quadt286", {cpus_286}}, - {"tg286m", {cpus_286}}, - {"ami286", {cpus_286}}, - {"px286", {cpus_286}}, - {"award286", {cpus_286}}, - {"gw286ct", {cpus_286}}, - {"gdc212m", {cpus_286}}, - {"super286tr", {cpus_286}}, - {"spc4200p", {cpus_286}}, - {"spc4216p", {cpus_286}}, - {"deskmaster286", {cpus_286}}, - {"ibmps2_m50", {cpus_ps2_m30_286, cpus_IBM486SLC}}, - {"ibmps1_2121", {cpus_i386SX, cpus_Am386SX, cpus_486SLC}}, - {"ibmps1_2121_isa", {cpus_i386SX, cpus_Am386SX, cpus_486SLC}}, - {"arb1375", {cpus_ALiM6117}}, - {"pja511m", {cpus_ALiM6117}}, - {"ama932j", {cpus_i386SX, cpus_Am386SX, cpus_486SLC}}, - {"adi386sx", {cpus_i386SX, cpus_Am386SX, cpus_486SLC}}, - {"shuttle386sx", {cpus_i386SX, cpus_Am386SX, cpus_486SLC}}, - {"dtk386", {cpus_i386SX, cpus_Am386SX, cpus_486SLC}}, - {"awardsx", {cpus_i386SX, cpus_Am386SX, cpus_486SLC}}, - {"cbm_sl386sx25", {cpus_i386SX, cpus_Am386SX, cpus_486SLC}}, - {"kmxc02", {cpus_i386SX, cpus_Am386SX, cpus_486SLC}}, - {"megapc", {cpus_i386SX, cpus_Am386SX, cpus_486SLC}}, - {"ibmps2_m55sx", {cpus_i386SX, cpus_Am386SX, cpus_486SLC, cpus_IBM486SLC}}, - {"acc386", {cpus_i386DX, cpus_Am386DX, cpus_486DLC}}, - {"ecs386", {cpus_i386DX, cpus_Am386DX, cpus_486DLC}}, - {"portableiii386", {cpus_i386DX, cpus_Am386DX, cpus_486DLC}}, - {"micronics386", {cpus_i386DX, cpus_Am386DX, cpus_486DLC}}, - {"asus386", {cpus_i386DX, cpus_Am386DX, cpus_486DLC}}, - {"ustechnologies386", {cpus_i386DX, cpus_Am386DX, cpus_486DLC}}, - {"award386dx", {cpus_i386DX, cpus_Am386DX, cpus_486DLC}}, - {"ami386dx", {cpus_i386DX, cpus_Am386DX, cpus_486DLC}}, - {"mr386dx", {cpus_i386DX, cpus_Am386DX, cpus_486DLC}}, - {"ibmps2_m70_type3", {cpus_i386DX, cpus_Am386DX, cpus_486DLC, cpus_IBM486BL}}, - {"ibmps2_m80", {cpus_i386DX, cpus_Am386DX, cpus_486DLC, cpus_IBM486BL}}, - {"pb410a", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"acera1g", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"win486", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"ali1429", {cpus_i486S1, cpus_Am486S1, cpus_Cx486S1}}, - {"cs4031", {cpus_i486S1, cpus_Am486S1, cpus_Cx486S1}}, - {"rycleopardlx", {cpus_IBM486SLC}}, - {"award486", {cpus_i486S1, cpus_Am486S1, cpus_Cx486S1}}, - {"ami486", {cpus_i486S1, cpus_Am486S1, cpus_Cx486S1}}, - {"mr486", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"pc330_6571", {cpus_i486_PC330}}, - {"403tg", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"sis401", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"valuepoint433", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"ami471", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"win471", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"vi15g", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"vli486sv2g", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"dtk486", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"px471", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"486vchd", {cpus_i486S1, cpus_Am486S1, cpus_Cx486S1}}, - {"ibmps1_2133", {cpus_i486S1, cpus_Am486S1, cpus_Cx486S1}}, - {"vect486vl", {cpus_i486S1, cpus_Am486S1, cpus_Cx486S1}}, - {"ibmps2_m70_type4", {cpus_i486S1, cpus_Am486S1, cpus_Cx486S1}}, - {"abpb4", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"486ap4", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"486sp3g", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"alfredo", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"ls486e", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"m4li", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"r418", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"4sa2", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"4dps", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"itoxstar", {cpus_STPCDX}}, - {"arb1479", {cpus_STPCDX2}}, - {"pcm9340", {cpus_STPCDX2}}, - {"pcm5330", {cpus_STPCDX2}}, - {"486vipio2", {cpus_i486, cpus_Am486, cpus_Cx486}}, - {"p5mp3", {cpus_Pentium5V}}, - {"dellxp60", {cpus_Pentium5V}}, - {"opti560l", {cpus_Pentium5V}}, - {"ambradp60", {cpus_Pentium5V}}, - {"valuepointp60", {cpus_Pentium5V}}, - {"revenge", {cpus_Pentium5V}}, - {"586mc1", {cpus_Pentium5V}}, - {"pb520r", {cpus_Pentium5V}}, - {"excalibur", {cpus_Pentium5V}}, - {"plato", {cpus_PentiumS5, cpus_WinChip, cpus_K5}}, - {"ambradp90", {cpus_PentiumS5, cpus_WinChip, cpus_K5}}, - {"430nx", {cpus_PentiumS5, cpus_WinChip, cpus_K5}}, - {"acerv30", {cpus_PentiumS5, cpus_WinChip, cpus_K5}}, - {"apollo", {cpus_PentiumS5, cpus_WinChip, cpus_K5}}, - {"vectra54", {cpus_PentiumS5, cpus_WinChip, cpus_K5}}, - {"zappa", {cpus_PentiumS5, cpus_WinChip, cpus_K5}}, - {"powermate_v", {cpus_PentiumS5, cpus_WinChip, cpus_K5}}, - {"mb500n", {cpus_PentiumS5, cpus_WinChip, cpus_K5}}, - {"p54tp4xe", {cpus_Pentium3V, cpus_WinChip, cpus_K5, cpus_6x863V}}, - {"mr586", {cpus_Pentium3V, cpus_WinChip, cpus_K5, cpus_6x863V}}, - {"gw2katx", {cpus_Pentium3V, cpus_WinChip, cpus_K5, cpus_6x863V}}, - {"thor", {cpus_Pentium3V, cpus_WinChip, cpus_K5, cpus_6x863V}}, - {"mrthor", {cpus_Pentium3V, cpus_WinChip, cpus_K5, cpus_6x863V}}, - {"endeavor", {cpus_Pentium3V, cpus_WinChip, cpus_K5, cpus_6x863V}}, - {"pb640", {cpus_Pentium3V, cpus_WinChip, cpus_K5, cpus_6x863V}}, - {"chariot", {cpus_Pentium3V, cpus_K5}}, - {"acerm3a", {cpus_Pentium3V, cpus_WinChip, cpus_K5, cpus_6x863V}}, - {"ap53", {cpus_Pentium3V, cpus_WinChip, cpus_K5, cpus_6x863V}}, - {"8500tuc", {cpus_Pentium3V, cpus_WinChip, cpus_K5, cpus_6x863V}}, - {"p55t2s", {cpus_Pentium3V, cpus_WinChip, cpus_K5, cpus_6x863V}}, - {"acerv35n", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"p55t2p4", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"m7shi", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"tc430hx", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"equium5200", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"pcv240", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"p65up5_cp55t2d", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"p55tvp4", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"8500tvxa", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"presario4500", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"p55va", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"gw2kte", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"brio80xx", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"pb680", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"430vx", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"nupro592", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"tx97", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"an430tx", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"ym430tx", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"mb540n", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"p5mms98", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"ficva502", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"ficpa2012", {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}}, - {"ax59pro", {cpus_Pentium, cpus_WinChip_SS7, cpus_K56_SS7, cpus_6x86SS7}}, - {"ficva503p", {cpus_Pentium, cpus_WinChip_SS7, cpus_K56_SS7, cpus_6x86SS7}}, - {"ficva503a", {cpus_Pentium, cpus_WinChip_SS7, cpus_K56_SS7, cpus_6x86SS7}}, - {"v60n", {cpus_PentiumPro}}, - {"p65up5_cp6nd", {cpus_PentiumPro}}, - {"8600ttc", {cpus_PentiumPro}}, - {"686nx", {cpus_PentiumPro}}, - {"ap440fx", {cpus_PentiumPro}}, - {"vs440fx", {cpus_PentiumPro}}, - {"m6mi", {cpus_PentiumPro}}, - {"mb600n", {cpus_PentiumPro}}, - {"p65up5_cpknd", {cpus_PentiumII66}}, - {"kn97", {cpus_PentiumII66}}, - {"lx6", {cpus_PentiumII66}}, - {"spitfire", {cpus_PentiumII66}}, - {"p6i440e2", {cpus_PentiumII66}}, - {"p2bls", {cpus_PentiumII, cpus_Celeron, cpus_Cyrix3}}, - {"p3bf", {cpus_PentiumII, cpus_Celeron, cpus_Cyrix3}}, - {"bf6", {cpus_PentiumII, cpus_Celeron, cpus_Cyrix3}}, - {"ax6bc", {cpus_PentiumII, cpus_Celeron, cpus_Cyrix3}}, - {"atc6310bxii", {cpus_PentiumII, cpus_Celeron, cpus_Cyrix3}}, - {"ga686bx", {cpus_PentiumII, cpus_Celeron, cpus_Cyrix3}}, - {"tsunamiatx", {cpus_PentiumII, cpus_Celeron, cpus_Cyrix3}}, - {"p6sba", {cpus_PentiumII, cpus_Celeron, cpus_Cyrix3}}, - {"ergox365", {cpus_PentiumII, cpus_Celeron, cpus_Cyrix3}}, - {"fw6400gx_s1", {cpus_PentiumII, cpus_Celeron, cpus_Cyrix3}}, - {"ficka6130", {cpus_PentiumII, cpus_Celeron, cpus_Cyrix3}}, - {"6gxu", {cpus_Xeon}}, - {"fw6400gx", {cpus_Xeon}}, - {"s2dge", {cpus_Xeon}}, - {"s370slm", {cpus_Celeron, cpus_Cyrix3}}, - {"awo671r", {cpus_Celeron, cpus_Cyrix3}}, - {"cubx", {cpus_Celeron, cpus_Cyrix3}}, - {"atc7020bxii", {cpus_Celeron, cpus_Cyrix3}}, - {"ambx133", {cpus_Celeron, cpus_Cyrix3}}, - {"trinity371", {cpus_Celeron}}, - {"63a", {cpus_Celeron, cpus_Cyrix3}}, - {"apas3", {cpus_Celeron, cpus_Cyrix3}}, - {"wcf681", {cpus_Celeron, cpus_Cyrix3}}, - {"6via85x", {cpus_Celeron, cpus_Cyrix3}}, - {"p6bap", {cpus_Celeron, cpus_Cyrix3}}, - {"603tcf", {cpus_Celeron, cpus_Cyrix3}}, - {"vpc2007", {cpus_PentiumIID, cpus_Celeron}}, - {NULL, {NULL}} +static const cpu_legacy_table_t cpus_8088[] = { + {"8088", 4772728, 1}, + {"8088", 7159092, 1}, + {"8088", 8000000, 1}, + {"8088", 10000000, 1}, + {"8088", 12000000, 1}, + {"8088", 16000000, 1}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_pcjr[] = { + {"8088", 4772728, 1}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_europc[] = { + {"8088", 4772728, 1}, + {"8088", 7159092, 1}, + {"8088", 9545456, 1}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_8086[] = { + {"8086", 7159092, 1}, + {"8086", 8000000, 1}, + {"8086", 9545456, 1}, + {"8086", 10000000, 1}, + {"8086", 12000000, 1}, + {"8086", 16000000, 1}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_pc1512[] = { + {"8086", 8000000, 1}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_286[] = { + {"286", 6000000, 1}, + {"286", 8000000, 1}, + {"286", 10000000, 1}, + {"286", 12500000, 1}, + {"286", 16000000, 1}, + {"286", 20000000, 1}, + {"286", 25000000, 1}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_ibmat[] = { + {"286", 6000000, 1}, + {"286", 8000000, 1}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_ibmxt286[] = { + {"286", 6000000, 1}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_ps1_m2011[] = { + {"286", 10000000, 1}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_ps2_m30_286[] = { + {"286", 10000000, 1}, + {"286", 12500000, 1}, + {"286", 16000000, 1}, + {"286", 20000000, 1}, + {"286", 25000000, 1}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_i386SX[] = { + {"i386sx", 16000000, 1}, + {"i386sx", 20000000, 1}, + {"i386sx", 25000000, 1}, + {"i386sx", 33333333, 1}, + {"i386sx", 40000000, 1}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_i386DX[] = { + {"i386dx", 16000000, 1}, + {"i386dx", 20000000, 1}, + {"i386dx", 25000000, 1}, + {"i386dx", 33333333, 1}, + {"i386dx", 40000000, 1}, + {"rapidcad", 25000000, 1}, + {"rapidcad", 33333333, 1}, + {"rapidcad", 40000000, 1}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_Am386SX[] = { + {"am386sx", 16000000, 1}, + {"am386sx", 20000000, 1}, + {"am386sx", 25000000, 1}, + {"am386sx", 33333333, 1}, + {"am386sx", 40000000, 1}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_Am386DX[] = { + {"am386dx", 25000000, 1}, + {"am386dx", 33333333, 1}, + {"am386dx", 40000000, 1}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_ALiM6117[] = { + {"m6117", 33333333, 1}, + {"m6117", 40000000, 1}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_486SLC[] = { + {"cx486slc", 20000000, 1}, + {"cx486slc", 25000000, 1}, + {"cx486slc", 33333333, 1}, + {"cx486srx2", 32000000, 2}, + {"cx486srx2", 40000000, 2}, + {"cx486srx2", 50000000, 2}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_IBM486SLC[] = { + {"ibm486slc", 33333333, 1}, + {"ibm486slc2", 40000000, 2}, + {"ibm486slc2", 50000000, 2}, + {"ibm486slc2", 66666666, 2}, + {"ibm486slc3", 60000000, 3}, + {"ibm486slc3", 75000000, 3}, + {"ibm486slc3", 100000000, 3}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_IBM486BL[] = { + {"ibm486bl2", 50000000, 2}, + {"ibm486bl2", 66666666, 2}, + {"ibm486bl3", 75000000, 3}, + {"ibm486bl3", 100000000, 3}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_486DLC[] = { + {"cx486dlc", 25000000, 1}, + {"cx486dlc", 33333333, 1}, + {"cx486dlc", 40000000, 1}, + {"cx486drx2", 32000000, 2}, + {"cx486drx2", 40000000, 2}, + {"cx486drx2", 50000000, 2}, + {"cx486drx2", 66666666, 2}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_i486S1[] = { + {"i486sx", 16000000, 1}, + {"i486sx", 20000000, 1}, + {"i486sx", 25000000, 1}, + {"i486sx", 33333333, 1}, + {"i486sx2", 50000000, 2}, + {"i486sx2", 66666666, 2}, + {"i486dx", 25000000, 1}, + {"i486dx", 33333333, 1}, + {"i486dx", 50000000, 1}, + {"i486dx2", 40000000, 2}, + {"i486dx2", 50000000, 2}, + {"i486dx2", 66666666, 2}, + {"idx4_od", 75000000, 3}, + {"idx4_od", 100000000, 3}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_Am486S1[] = { + {"am486sx", 33333333, 1}, + {"am486sx", 40000000, 1}, + {"am486sx2", 50000000, 2}, + {"am486sx2", 66666666, 2}, + {"am486dx", 33333333, 1}, + {"am486dx", 40000000, 1}, + {"am486dx2", 50000000, 2}, + {"am486dx2", 66666666, 2}, + {"am486dx2", 80000000, 2}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_Cx486S1[] = { + {"cx486s", 25000000, 1.0}, + {"cx486s", 33333333, 1.0}, + {"cx486s", 40000000, 1.0}, + {"cx486dx", 33333333, 1.0}, + {"cx486dx", 40000000, 1.0}, + {"cx486dx2", 50000000, 2.0}, + {"cx486dx2", 66666666, 2.0}, + {"cx486dx2", 80000000, 2.0}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_i486[] = { + {"i486sx", 16000000, 1.0}, + {"i486sx", 20000000, 1.0}, + {"i486sx", 25000000, 1.0}, + {"i486sx", 33333333, 1.0}, + {"i486sx2", 50000000, 2.0}, + {"i486sx2", 66666666, 2.0}, + {"i486dx", 25000000, 1.0}, + {"i486dx", 33333333, 1.0}, + {"i486dx", 50000000, 1.0}, + {"i486dx2", 40000000, 2.0}, + {"i486dx2", 50000000, 2.0}, + {"i486dx2", 66666666, 2.0}, + {"idx4", 75000000, 3.0}, + {"idx4", 100000000, 3.0}, + {"idx4_od", 75000000, 3.0}, + {"idx4_od", 100000000, 3.0}, + {"pentium_p24t", 62500000, 2.5}, + {"pentium_p24t", 83333333, 2.5}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_i486_PC330[] = { + {"i486dx2", 50000000, 2.0}, + {"i486dx2", 66666666, 2.0}, + {"idx4", 75000000, 3.0}, + {"idx4", 100000000, 3.0}, + {"pentium_p24t", 62500000, 2.5}, + {"pentium_p24t", 83333333, 2.5}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_Am486[] = { + {"am486sx", 33333333, 1.0}, + {"am486sx", 40000000, 1.0}, + {"am486sx2", 50000000, 2.0}, + {"am486sx2", 66666666, 2.0}, + {"am486dx", 33333333, 1.0}, + {"am486dx", 40000000, 1.0}, + {"am486dx2", 50000000, 2.0}, + {"am486dx2", 66666666, 2.0}, + {"am486dx2", 80000000, 2.0}, + {"am486dx4", 75000000, 3.0}, + {"am486dx4", 90000000, 3.0}, + {"am486dx4", 100000000, 3.0}, + {"am486dx4", 120000000, 3.0}, + {"am5x86", 133333333, 4.0}, + {"am5x86", 150000000, 3.0}, + {"am5x86", 160000000, 4.0}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_Cx486[] = { + {"cx486s", 25000000, 1.0}, + {"cx486s", 33333333, 1.0}, + {"cx486s", 40000000, 1.0}, + {"cx486dx", 33333333, 1.0}, + {"cx486dx", 40000000, 1.0}, + {"cx486dx2", 50000000, 2.0}, + {"cx486dx2", 66666666, 2.0}, + {"cx486dx2", 80000000, 2.0}, + {"cx486dx4", 75000000, 3.0}, + {"cx486dx4", 100000000, 3.0}, + {"cx5x86", 80000000, 2.0}, + {"cx5x86", 100000000, 3.0}, + {"cx5x86", 120000000, 3.0}, + {"cx5x86", 133333333, 4.0}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_STPCDX[] = { + {"stpc_dx", 66666666, 1.0}, + {"stpc_dx", 75000000, 1.0}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_STPCDX2[] = { + {"stpc_dx2", 133333333, 2.0}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_6x863V[] = { + {"cx6x86", 80000000, 2.0}, + {"cx6x86", 100000000, 2.0}, + {"cx6x86", 110000000, 2.0}, + {"cx6x86", 120000000, 2.0}, + {"cx6x86", 133333333, 2.0}, + {"cx6x86", 150000000, 2.0}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_6x86[] = { + {"cx6x86", 80000000, 2.0}, + {"cx6x86", 100000000, 2.0}, + {"cx6x86", 110000000, 2.0}, + {"cx6x86", 120000000, 2.0}, + {"cx6x86", 133333333, 2.0}, + {"cx6x86", 150000000, 2.0}, + {"cx6x86l", 110000000, 2.0}, + {"cx6x86l", 120000000, 2.0}, + {"cx6x86l", 133333333, 2.0}, + {"cx6x86l", 150000000, 2.0}, + {"cx6x86mx", 133333333, 2.0}, + {"cx6x86mx", 166666666, 2.5}, + {"cx6x86mx", 187500000, 2.5}, + {"cx6x86mx", 208333333, 2.5}, + {"mii", 233333333, 3.5}, + {"mii", 250000000, 3.0}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_6x86SS7[] = { + {"cx6x86", 80000000, 2.0}, + {"cx6x86", 100000000, 2.0}, + {"cx6x86", 110000000, 2.0}, + {"cx6x86", 120000000, 2.0}, + {"cx6x86", 133333333, 2.0}, + {"cx6x86", 150000000, 2.0}, + {"cx6x86l", 110000000, 2.0}, + {"cx6x86l", 120000000, 2.0}, + {"cx6x86l", 133333333, 2.0}, + {"cx6x86l", 150000000, 2.0}, + {"cx6x86mx", 133333333, 2.0}, + {"cx6x86mx", 166666666, 2.5}, + {"cx6x86mx", 187500000, 2.5}, + {"cx6x86mx", 208333333, 2.5}, + {"mii", 233333333, 3.5}, + {"mii", 250000000, 3.0}, + {"mii", 250000000, 2.5}, + {"mii", 285000000, 3.0}, + {"mii", 300000000, 3.0}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_WinChip[] = { + {"winchip", 75000000, 1.5}, + {"winchip", 90000000, 1.5}, + {"winchip", 100000000, 1.5}, + {"winchip", 120000000, 2.0}, + {"winchip", 133333333, 2.0}, + {"winchip", 150000000, 2.5}, + {"winchip", 166666666, 2.5}, + {"winchip", 180000000, 3.0}, + {"winchip", 200000000, 3.0}, + {"winchip", 225000000, 3.0}, + {"winchip", 240000000, 4.0}, + {"winchip2", 200000000, 3.0}, + {"winchip2", 225000000, 3.0}, + {"winchip2", 240000000, 4.0}, + {"winchip2", 250000000, 3.0}, + {"winchip2a", 200000000, 3.0}, + {"winchip2a", 233333333, 3.5}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_WinChip_SS7[] = { + {"winchip", 75000000, 1.5}, + {"winchip", 90000000, 1.5}, + {"winchip", 100000000, 1.5}, + {"winchip", 120000000, 2.0}, + {"winchip", 133333333, 2.0}, + {"winchip", 150000000, 2.5}, + {"winchip", 166666666, 2.5}, + {"winchip", 180000000, 3.0}, + {"winchip", 200000000, 3.0}, + {"winchip", 225000000, 3.0}, + {"winchip", 240000000, 4.0}, + {"winchip2", 200000000, 3.0}, + {"winchip2", 225000000, 3.0}, + {"winchip2", 240000000, 4.0}, + {"winchip2", 250000000, 3.0}, + {"winchip2a", 200000000, 3.0}, + {"winchip2a", 233333333, 3.5}, + {"winchip2a", 233333333, 7.0}, + {"winchip2a", 250000000, 2.5}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_Pentium5V[] = { + {"pentium_p5", 60000000, 1}, + {"pentium_p5", 66666666, 1}, + {"pentium_p54c_od4", 120000000, 2}, + {"pentium_p54c_od4", 133333333, 2}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_PentiumS5[] = { + {"pentium_p54c", 75000000, 1.5}, + {"pentium_p55c_od", 75000000, 1.5}, + {"pentium_p54c", 90000000, 1.5}, + {"pentium_p54c", 100000000, 2.0}, + {"pentium_p54c", 100000000, 1.5}, + {"pentium_p54c", 120000000, 2.0}, + {"pentium_p54c", 133333333, 2.0}, + {"pentium_p54c_od5", 125000000, 3.0}, + {"pentium_p54c_od5", 150000000, 2.5}, + {"pentium_p54c_od5", 166666666, 2.5}, + {"pentium_p55c_od", 125000000, 2.5}, + {"pentium_p55c_od", 150000000, 2.5}, + {"pentium_p55c_od", 166000000, 2.5}, + {"pentium_p55c_od", 180000000, 3.0}, + {"pentium_p55c_od", 200000000, 3.0}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_Pentium3V[] = { + {"pentium_p54c", 75000000, 1.5}, + {"pentium_p55c_od", 75000000, 1.5}, + {"pentium_p54c", 90000000, 1.5}, + {"pentium_p54c", 100000000, 2.0}, + {"pentium_p54c", 100000000, 1.5}, + {"pentium_p54c", 120000000, 2.0}, + {"pentium_p54c", 133333333, 2.0}, + {"pentium_p54c", 150000000, 2.5}, + {"pentium_p54c", 166666666, 2.5}, + {"pentium_p54c", 200000000, 3.0}, + {"pentium_p54c_od5", 125000000, 2.5}, + {"pentium_p54c_od5", 150000000, 2.5}, + {"pentium_p54c_od5", 166666666, 2.5}, + {"pentium_p55c_od", 125000000, 2.5}, + {"pentium_p55c_od", 150000000, 2.5}, + {"pentium_p55c_od", 166000000, 2.5}, + {"pentium_p55c_od", 180000000, 3.0}, + {"pentium_p55c_od", 200000000, 3.0}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_Pentium[] = { + {"pentium_p54c", 75000000, 1.5}, + {"pentium_p55c_od", 75000000, 1.5}, + {"pentium_p54c", 90000000, 1.5}, + {"pentium_p54c", 100000000, 2.0}, + {"pentium_p54c", 100000000, 1.5}, + {"pentium_p54c", 120000000, 2.0}, + {"pentium_p54c", 133333333, 2.0}, + {"pentium_p54c", 150000000, 2.5}, + {"pentium_p54c", 166666666, 2.5}, + {"pentium_p54c", 200000000, 3.0}, + {"pentium_p55c", 166666666, 2.5}, + {"pentium_p55c", 200000000, 3.0}, + {"pentium_p55c", 233333333, 3.5}, + {"pentium_tillamook", 120000000, 2.0}, + {"pentium_tillamook", 133333333, 2.0}, + {"pentium_tillamook", 150000000, 2.5}, + {"pentium_tillamook", 166666666, 2.5}, + {"pentium_tillamook", 200000000, 3.0}, + {"pentium_tillamook", 233333333, 3.5}, + {"pentium_tillamook", 266666666, 4.0}, + {"pentium_tillamook", 300000000, 4.5}, + {"pentium_p54c_od5", 125000000, 2.5}, + {"pentium_p54c_od5", 150000000, 2.5}, + {"pentium_p54c_od5", 166666666, 2.5}, + {"pentium_p55c_od", 125000000, 2.5}, + {"pentium_p55c_od", 150000000, 2.5}, + {"pentium_p55c_od", 166000000, 2.5}, + {"pentium_p55c_od", 180000000, 3.0}, + {"pentium_p55c_od", 200000000, 3.0}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_K5[] = { + {"k5_5k86", 75000000, 1.5}, + {"k5_ssa5", 75000000, 1.5}, + {"k5_5k86", 90000000, 1.5}, + {"k5_ssa5", 90000000, 1.5}, + {"k5_5k86", 100000000, 1.5}, + {"k5_ssa5", 100000000, 1.5}, + {"k5_5k86", 120000000, 2.0}, + {"k5_5k86", 133333333, 2.0}, + {"k5_5k86", 150000000, 2.5}, + {"k5_5k86", 166666666, 2.5}, + {"k5_5k86", 200000000, 3.0}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_K56[] = { + {"k6_m6", 166666666, 2.5}, + {"k6_m6", 200000000, 3.0}, + {"k6_m6", 233333333, 3.5}, + {"k6_m7", 200000000, 3.0}, + {"k6_m7", 233333333, 3.5}, + {"k6_m7", 266666666, 4.0}, + {"k6_m7", 300000000, 4.5}, + {"k6_2", 233333333, 3.5}, + {"k6_2", 266666666, 4.0}, + {"k6_2", 300000000, 4.5}, + {"k6_2", 366666666, 5.5}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_K56_SS7[] = { + {"k6_m6", 166666666, 2.5}, + {"k6_m6", 200000000, 3.0}, + {"k6_m6", 233333333, 3.5}, + {"k6_m7", 200000000, 3.0}, + {"k6_m7", 233333333, 3.5}, + {"k6_m7", 266666666, 4.0}, + {"k6_m7", 300000000, 4.5}, + {"k6_2", 233333333, 3.5}, + {"k6_2", 266666666, 4.0}, + {"k6_2", 300000000, 3.0}, + {"k6_2", 332500000, 3.5}, + {"k6_2", 350000000, 3.5}, + {"k6_2", 366666666, 5.5}, + {"k6_2", 380000000, 4.0}, + {"k6_2", 400000000, 4.0}, + {"k6_2", 450000000, 4.5}, + {"k6_2", 475000000, 5.0}, + {"k6_2", 500000000, 5.0}, + {"k6_2", 533333333, 5.5}, + {"k6_2", 550000000, 5.5}, + {"k6_2p", 450000000, 4.5}, + {"k6_2p", 475000000, 5.0}, + {"k6_2p", 500000000, 5.0}, + {"k6_2p", 533333333, 5.5}, + {"k6_2p", 550000000, 5.5}, + {"k6_3", 400000000, 4.0}, + {"k6_3", 450000000, 4.5}, + {"k6_3p", 75000000, 1.5}, + {"k6_3p", 400000000, 4.0}, + {"k6_3p", 450000000, 4.5}, + {"k6_3p", 475000000, 5.0}, + {"k6_3p", 500000000, 5.0}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_PentiumPro[] = { + {"pentiumpro", 50000000, 1.0}, + {"pentiumpro", 60000000, 1.0}, + {"pentiumpro", 66666666, 1.0}, + {"pentiumpro", 75000000, 1.5}, + {"pentiumpro", 150000000, 2.5}, + {"pentiumpro", 166666666, 2.5}, + {"pentiumpro", 180000000, 3.0}, + {"pentiumpro", 200000000, 3.0}, + {"pentium2_od", 50000000, 1.0}, + {"pentium2_od", 60000000, 1.0}, + {"pentium2_od", 66666666, 1.0}, + {"pentium2_od", 75000000, 1.5}, + {"pentium2_od", 210000000, 3.5}, + {"pentium2_od", 233333333, 3.5}, + {"pentium2_od", 240000000, 4.0}, + {"pentium2_od", 266666666, 4.0}, + {"pentium2_od", 270000000, 4.5}, + {"pentium2_od", 300000000, 4.5}, + {"pentium2_od", 300000000, 5.0}, + {"pentium2_od", 333333333, 5.0}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_PentiumII66[] = { + {"pentium2_klamath", 50000000, 1.0}, + {"pentium2_klamath", 60000000, 1.0}, + {"pentium2_klamath", 66666666, 1.0}, + {"pentium2_klamath", 75000000, 1.5}, + {"pentium2_klamath", 233333333, 3.5}, + {"pentium2_klamath", 266666666, 4.0}, + {"pentium2_klamath", 300000000, 4.5}, + {"pentium2_deschutes", 50000000, 1.0}, + {"pentium2_deschutes", 60000000, 1.0}, + {"pentium2_deschutes", 66666666, 1.0}, + {"pentium2_deschutes", 75000000, 1.5}, + {"pentium2_deschutes", 266666666, 4.0}, + {"pentium2_deschutes", 300000000, 4.5}, + {"pentium2_deschutes", 333333333, 5.0}, + {NULL, 0, 0} + +}; + +static const cpu_legacy_table_t cpus_PentiumII[] = { + {"pentium2_klamath", 50000000, 1.0}, + {"pentium2_klamath", 60000000, 1.0}, + {"pentium2_klamath", 66666666, 1.0}, + {"pentium2_klamath", 75000000, 1.5}, + {"pentium2_klamath", 233333333, 3.5}, + {"pentium2_klamath", 266666666, 4.0}, + {"pentium2_klamath", 300000000, 4.5}, + {"pentium2_deschutes", 50000000, 1.0}, + {"pentium2_deschutes", 60000000, 1.0}, + {"pentium2_deschutes", 66666666, 1.0}, + {"pentium2_deschutes", 75000000, 1.5}, + {"pentium2_deschutes", 266666666, 4.0}, + {"pentium2_deschutes", 300000000, 4.5}, + {"pentium2_deschutes", 333333333, 5.0}, + {"pentium2_deschutes", 350000000, 3.5}, + {"pentium2_deschutes", 400000000, 4.0}, + {"pentium2_deschutes", 450000000, 4.5}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_Xeon[] = { + {"pentium2_xeon", 75000000, 1.5}, + {"pentium2_xeon", 100000000, 1.5}, + {"pentium2_xeon", 133333333, 2.0}, + {"pentium2_xeon", 166666666, 2.5}, + {"pentium2_xeon", 400000000, 4.0}, + {"pentium2_xeon", 450000000, 4.5}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_Celeron[] = { + {"celeron_mendocino", 66666666, 1.0}, + {"celeron_mendocino", 100000000, 1.5}, + {"celeron_mendocino", 133333333, 2.0}, + {"celeron_mendocino", 166666666, 2.5}, + {"celeron_mendocino", 300000000, 4.5}, + {"celeron_mendocino", 333333333, 5.0}, + {"celeron_mendocino", 366666666, 5.5}, + {"celeron_mendocino", 400000000, 6.0}, + {"celeron_mendocino", 433333333, 6.5}, + {"celeron_mendocino", 466666666, 7.0}, + {"celeron_mendocino", 500000000, 7.5}, + {"celeron_mendocino", 533333333, 8.0}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_PentiumIID[] = { + {"pentium2_deschutes", 50000000, 1.0}, + {"pentium2_deschutes", 60000000, 1.0}, + {"pentium2_deschutes", 66666666, 1.0}, + {"pentium2_deschutes", 75000000, 1.5}, + {"pentium2_deschutes", 266666666, 4.0}, + {"pentium2_deschutes", 300000000, 4.5}, + {"pentium2_deschutes", 333333333, 5.0}, + {"pentium2_deschutes", 350000000, 3.5}, + {"pentium2_deschutes", 400000000, 4.0}, + {"pentium2_deschutes", 450000000, 4.5}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t cpus_Cyrix3[] = { + {"c3_samuel", 66666666, 1.0}, + {"c3_samuel", 233333333, 3.5}, + {"c3_samuel", 266666666, 4.0}, + {"c3_samuel", 300000000, 4.5}, + {"c3_samuel", 333333333, 5.0}, + {"c3_samuel", 350000000, 3.5}, + {"c3_samuel", 400000000, 4.0}, + {"c3_samuel", 450000000, 4.5}, + {"c3_samuel", 500000000, 5.0}, + {"c3_samuel", 550000000, 5.5}, + {"c3_samuel", 600000000, 6.0}, + {"c3_samuel", 650000000, 6.5}, + {"c3_samuel", 700000000, 7.0}, + {NULL, 0, 0} +}; + +static const cpu_legacy_table_t *cputables_8088[] = {cpus_8088}; +static const cpu_legacy_table_t *cputables_pcjr[] = {cpus_pcjr}; +static const cpu_legacy_table_t *cputables_europc[] = {cpus_europc}; +static const cpu_legacy_table_t *cputables_pc1512[] = {cpus_pc1512}; +static const cpu_legacy_table_t *cputables_8086[] = {cpus_8086}; +static const cpu_legacy_table_t *cputables_286[] = {cpus_286}; +static const cpu_legacy_table_t *cputables_ibmat[] = {cpus_ibmat}; +static const cpu_legacy_table_t *cputables_ps1_m2011[] = {cpus_ps1_m2011}; +static const cpu_legacy_table_t *cputables_ps2_m30_286_IBM486SLC[] = {cpus_ps2_m30_286, cpus_IBM486SLC}; +static const cpu_legacy_table_t *cputables_ibmxt286[] = {cpus_ibmxt286}; +static const cpu_legacy_table_t *cputables_i386SX_Am386SX_486SLC[] = {cpus_i386SX, cpus_Am386SX, cpus_486SLC}; +static const cpu_legacy_table_t *cputables_ALiM6117[] = {cpus_ALiM6117}; +static const cpu_legacy_table_t *cputables_i386SX_Am386SX_486SLC_IBM486SLC[] = {cpus_i386SX, cpus_Am386SX, cpus_486SLC, cpus_IBM486SLC}; +static const cpu_legacy_table_t *cputables_i386DX_Am386DX_486DLC[] = {cpus_i386DX, cpus_Am386DX, cpus_486DLC}; +static const cpu_legacy_table_t *cputables_i386DX_Am386DX_486DLC_IBM486BL[] = {cpus_i386DX, cpus_Am386DX, cpus_486DLC, cpus_IBM486BL}; +static const cpu_legacy_table_t *cputables_i486_Am486_Cx486[] = {cpus_i486, cpus_Am486, cpus_Cx486}; +static const cpu_legacy_table_t *cputables_i486S1_Am486S1_Cx486S1[] = {cpus_i486S1, cpus_Am486S1, cpus_Cx486S1}; +static const cpu_legacy_table_t *cputables_IBM486SLC[] = {cpus_IBM486SLC}; +static const cpu_legacy_table_t *cputables_i486_PC330[] = {cpus_i486_PC330}; +static const cpu_legacy_table_t *cputables_STPCDX[] = {cpus_STPCDX}; +static const cpu_legacy_table_t *cputables_STPCDX2[] = {cpus_STPCDX2}; +static const cpu_legacy_table_t *cputables_Pentium5V[] = {cpus_Pentium5V}; +static const cpu_legacy_table_t *cputables_PentiumS5_WinChip_K5[] = {cpus_PentiumS5, cpus_WinChip, cpus_K5}; +static const cpu_legacy_table_t *cputables_Pentium3V_WinChip_K5_6x863V[] = {cpus_Pentium3V, cpus_WinChip, cpus_K5, cpus_6x863V}; +static const cpu_legacy_table_t *cputables_Pentium3V_K5[] = {cpus_Pentium3V, cpus_K5}; +static const cpu_legacy_table_t *cputables_Pentium_WinChip_K56_6x86[] = {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}; +static const cpu_legacy_table_t *cputables_Pentium_WinChip_SS7_K56_SS7_6x86SS7[] = {cpus_Pentium, cpus_WinChip_SS7, cpus_K56_SS7, cpus_6x86SS7}; +static const cpu_legacy_table_t *cputables_PentiumPro[] = {cpus_PentiumPro}; +static const cpu_legacy_table_t *cputables_PentiumII66[] = {cpus_PentiumII66}; +static const cpu_legacy_table_t *cputables_PentiumII_Celeron_Cyrix3[] = {cpus_PentiumII, cpus_Celeron, cpus_Cyrix3}; +static const cpu_legacy_table_t *cputables_Xeon[] = {cpus_Xeon}; +static const cpu_legacy_table_t *cputables_Celeron_Cyrix3[] = {cpus_Celeron, cpus_Cyrix3}; +static const cpu_legacy_table_t *cputables_Celeron[] = {cpus_Celeron}; +static const cpu_legacy_table_t *cputables_PentiumIID_Celeron[] = {cpus_PentiumIID, cpus_Celeron}; + +const cpu_legacy_machine_t cpu_legacy_table[] = { + {"ibmpc", cputables_8088}, + {"ibmpc82", cputables_8088}, + {"ibmpcjr", cputables_pcjr}, + {"ibmxt", cputables_8088}, + {"ibmxt86", cputables_8088}, + {"americxt", cputables_8088}, + {"amixt", cputables_8088}, + {"portable", cputables_8088}, + {"dtk", cputables_8088}, + {"genxt", cputables_8088}, + {"jukopc", cputables_8088}, + {"open_xt", cputables_8088}, + {"pxxt", cputables_8088}, + {"europc", cputables_europc}, + {"tandy", cputables_europc}, + {"tandy1000hx", cputables_europc}, + {"t1000", cputables_8088}, + {"ltxt", cputables_8088}, + {"xi8088", cputables_8088}, + {"zdsupers", cputables_8088}, + {"pc1512", cputables_pc1512}, + {"pc1640", cputables_8086}, + {"pc2086", cputables_8086}, + {"pc3086", cputables_8086}, + {"pc200", cputables_8086}, + {"ppc512", cputables_8086}, + {"deskpro", cputables_8086}, + {"olivetti_m24", cputables_8086}, + {"iskra3104", cputables_8086}, + {"tandy1000sl2", cputables_8086}, + {"t1200", cputables_8086}, + {"lxt3", cputables_8086}, + {"hed919", cputables_286}, + {"ibmat", cputables_ibmat}, + {"ibmps1es", cputables_ps1_m2011}, + {"ibmps2_m30_286", cputables_ps2_m30_286_IBM486SLC}, + {"ibmxt286", cputables_ibmxt286}, + {"ibmatami", cputables_ibmat}, + {"cmdpc30", cputables_286}, + {"portableii", cputables_286}, + {"portableiii", cputables_286}, + {"mr286", cputables_286}, + {"open_at", cputables_286}, + {"ibmatpx", cputables_ibmat}, + {"ibmatquadtel", cputables_ibmat}, + {"siemens", cputables_286}, + {"t3100e", cputables_286}, + {"quadt286", cputables_286}, + {"tg286m", cputables_286}, + {"ami286", cputables_286}, + {"px286", cputables_286}, + {"award286", cputables_286}, + {"gw286ct", cputables_286}, + {"gdc212m", cputables_286}, + {"super286tr", cputables_286}, + {"spc4200p", cputables_286}, + {"spc4216p", cputables_286}, + {"deskmaster286", cputables_286}, + {"ibmps2_m50", cputables_ps2_m30_286_IBM486SLC}, + {"ibmps1_2121", cputables_i386SX_Am386SX_486SLC}, + {"ibmps1_2121_isa", cputables_i386SX_Am386SX_486SLC}, + {"arb1375", cputables_ALiM6117}, + {"pja511m", cputables_ALiM6117}, + {"ama932j", cputables_i386SX_Am386SX_486SLC}, + {"adi386sx", cputables_i386SX_Am386SX_486SLC}, + {"shuttle386sx", cputables_i386SX_Am386SX_486SLC}, + {"dtk386", cputables_i386SX_Am386SX_486SLC}, + {"awardsx", cputables_i386SX_Am386SX_486SLC}, + {"cbm_sl386sx25", cputables_i386SX_Am386SX_486SLC}, + {"kmxc02", cputables_i386SX_Am386SX_486SLC}, + {"megapc", cputables_i386SX_Am386SX_486SLC}, + {"ibmps2_m55sx", cputables_i386SX_Am386SX_486SLC_IBM486SLC}, + {"acc386", cputables_i386DX_Am386DX_486DLC}, + {"ecs386", cputables_i386DX_Am386DX_486DLC}, + {"portableiii386", cputables_i386DX_Am386DX_486DLC}, + {"micronics386", cputables_i386DX_Am386DX_486DLC}, + {"asus386", cputables_i386DX_Am386DX_486DLC}, + {"ustechnologies386", cputables_i386DX_Am386DX_486DLC}, + {"award386dx", cputables_i386DX_Am386DX_486DLC}, + {"ami386dx", cputables_i386DX_Am386DX_486DLC}, + {"mr386dx", cputables_i386DX_Am386DX_486DLC}, + {"ibmps2_m70_type3", cputables_i386DX_Am386DX_486DLC_IBM486BL}, + {"ibmps2_m80", cputables_i386DX_Am386DX_486DLC_IBM486BL}, + {"pb410a", cputables_i486_Am486_Cx486}, + {"acera1g", cputables_i486_Am486_Cx486}, + {"win486", cputables_i486_Am486_Cx486}, + {"ali1429", cputables_i486S1_Am486S1_Cx486S1}, + {"cs4031", cputables_i486S1_Am486S1_Cx486S1}, + {"rycleopardlx", cputables_IBM486SLC}, + {"award486", cputables_i486S1_Am486S1_Cx486S1}, + {"ami486", cputables_i486S1_Am486S1_Cx486S1}, + {"mr486", cputables_i486_Am486_Cx486}, + {"pc330_6571", cputables_i486_PC330}, + {"403tg", cputables_i486_Am486_Cx486}, + {"sis401", cputables_i486_Am486_Cx486}, + {"valuepoint433", cputables_i486_Am486_Cx486}, + {"ami471", cputables_i486_Am486_Cx486}, + {"win471", cputables_i486_Am486_Cx486}, + {"vi15g", cputables_i486_Am486_Cx486}, + {"vli486sv2g", cputables_i486_Am486_Cx486}, + {"dtk486", cputables_i486_Am486_Cx486}, + {"px471", cputables_i486_Am486_Cx486}, + {"486vchd", cputables_i486S1_Am486S1_Cx486S1}, + {"ibmps1_2133", cputables_i486S1_Am486S1_Cx486S1}, + {"vect486vl", cputables_i486S1_Am486S1_Cx486S1}, + {"ibmps2_m70_type4", cputables_i486S1_Am486S1_Cx486S1}, + {"abpb4", cputables_i486_Am486_Cx486}, + {"486ap4", cputables_i486_Am486_Cx486}, + {"486sp3g", cputables_i486_Am486_Cx486}, + {"alfredo", cputables_i486_Am486_Cx486}, + {"ls486e", cputables_i486_Am486_Cx486}, + {"m4li", cputables_i486_Am486_Cx486}, + {"r418", cputables_i486_Am486_Cx486}, + {"4sa2", cputables_i486_Am486_Cx486}, + {"4dps", cputables_i486_Am486_Cx486}, + {"itoxstar", cputables_STPCDX}, + {"arb1479", cputables_STPCDX2}, + {"pcm9340", cputables_STPCDX2}, + {"pcm5330", cputables_STPCDX2}, + {"486vipio2", cputables_i486_Am486_Cx486}, + {"p5mp3", cputables_Pentium5V}, + {"dellxp60", cputables_Pentium5V}, + {"opti560l", cputables_Pentium5V}, + {"ambradp60", cputables_Pentium5V}, + {"valuepointp60", cputables_Pentium5V}, + {"revenge", cputables_Pentium5V}, + {"586mc1", cputables_Pentium5V}, + {"pb520r", cputables_Pentium5V}, + {"excalibur", cputables_Pentium5V}, + {"plato", cputables_PentiumS5_WinChip_K5}, + {"ambradp90", cputables_PentiumS5_WinChip_K5}, + {"430nx", cputables_PentiumS5_WinChip_K5}, + {"acerv30", cputables_PentiumS5_WinChip_K5}, + {"apollo", cputables_PentiumS5_WinChip_K5}, + {"vectra54", cputables_PentiumS5_WinChip_K5}, + {"zappa", cputables_PentiumS5_WinChip_K5}, + {"powermate_v", cputables_PentiumS5_WinChip_K5}, + {"mb500n", cputables_PentiumS5_WinChip_K5}, + {"p54tp4xe", cputables_Pentium3V_WinChip_K5_6x863V}, + {"mr586", cputables_Pentium3V_WinChip_K5_6x863V}, + {"gw2katx", cputables_Pentium3V_WinChip_K5_6x863V}, + {"thor", cputables_Pentium3V_WinChip_K5_6x863V}, + {"mrthor", cputables_Pentium3V_WinChip_K5_6x863V}, + {"endeavor", cputables_Pentium3V_WinChip_K5_6x863V}, + {"pb640", cputables_Pentium3V_WinChip_K5_6x863V}, + {"chariot", cputables_Pentium3V_K5}, + {"acerm3a", cputables_Pentium3V_WinChip_K5_6x863V}, + {"ap53", cputables_Pentium3V_WinChip_K5_6x863V}, + {"8500tuc", cputables_Pentium3V_WinChip_K5_6x863V}, + {"p55t2s", cputables_Pentium3V_WinChip_K5_6x863V}, + {"acerv35n", cputables_Pentium_WinChip_K56_6x86}, + {"p55t2p4", cputables_Pentium_WinChip_K56_6x86}, + {"m7shi", cputables_Pentium_WinChip_K56_6x86}, + {"tc430hx", cputables_Pentium_WinChip_K56_6x86}, + {"equium5200", cputables_Pentium_WinChip_K56_6x86}, + {"pcv240", cputables_Pentium_WinChip_K56_6x86}, + {"p65up5_cp55t2d", cputables_Pentium_WinChip_K56_6x86}, + {"p55tvp4", cputables_Pentium_WinChip_K56_6x86}, + {"8500tvxa", cputables_Pentium_WinChip_K56_6x86}, + {"presario4500", cputables_Pentium_WinChip_K56_6x86}, + {"p55va", cputables_Pentium_WinChip_K56_6x86}, + {"gw2kte", cputables_Pentium_WinChip_K56_6x86}, + {"brio80xx", cputables_Pentium_WinChip_K56_6x86}, + {"pb680", cputables_Pentium_WinChip_K56_6x86}, + {"430vx", cputables_Pentium_WinChip_K56_6x86}, + {"nupro592", cputables_Pentium_WinChip_K56_6x86}, + {"tx97", cputables_Pentium_WinChip_K56_6x86}, + {"an430tx", cputables_Pentium_WinChip_K56_6x86}, + {"ym430tx", cputables_Pentium_WinChip_K56_6x86}, + {"mb540n", cputables_Pentium_WinChip_K56_6x86}, + {"p5mms98", cputables_Pentium_WinChip_K56_6x86}, + {"ficva502", cputables_Pentium_WinChip_K56_6x86}, + {"ficpa2012", cputables_Pentium_WinChip_K56_6x86}, + {"ax59pro", cputables_Pentium_WinChip_SS7_K56_SS7_6x86SS7}, + {"ficva503p", cputables_Pentium_WinChip_SS7_K56_SS7_6x86SS7}, + {"ficva503a", cputables_Pentium_WinChip_SS7_K56_SS7_6x86SS7}, + {"v60n", cputables_PentiumPro}, + {"p65up5_cp6nd", cputables_PentiumPro}, + {"8600ttc", cputables_PentiumPro}, + {"686nx", cputables_PentiumPro}, + {"ap440fx", cputables_PentiumPro}, + {"vs440fx", cputables_PentiumPro}, + {"m6mi", cputables_PentiumPro}, + {"mb600n", cputables_PentiumPro}, + {"p65up5_cpknd", cputables_PentiumII66}, + {"kn97", cputables_PentiumII66}, + {"lx6", cputables_PentiumII66}, + {"spitfire", cputables_PentiumII66}, + {"p6i440e2", cputables_PentiumII66}, + {"p2bls", cputables_PentiumII_Celeron_Cyrix3}, + {"p3bf", cputables_PentiumII_Celeron_Cyrix3}, + {"bf6", cputables_PentiumII_Celeron_Cyrix3}, + {"ax6bc", cputables_PentiumII_Celeron_Cyrix3}, + {"atc6310bxii", cputables_PentiumII_Celeron_Cyrix3}, + {"ga686bx", cputables_PentiumII_Celeron_Cyrix3}, + {"tsunamiatx", cputables_PentiumII_Celeron_Cyrix3}, + {"p6sba", cputables_PentiumII_Celeron_Cyrix3}, + {"ergox365", cputables_PentiumII_Celeron_Cyrix3}, + {"fw6400gx_s1", cputables_PentiumII_Celeron_Cyrix3}, + {"ficka6130", cputables_PentiumII_Celeron_Cyrix3}, + {"6gxu", cputables_Xeon}, + {"fw6400gx", cputables_Xeon}, + {"s2dge", cputables_Xeon}, + {"s370slm", cputables_Celeron_Cyrix3}, + {"awo671r", cputables_Celeron_Cyrix3}, + {"cubx", cputables_Celeron_Cyrix3}, + {"atc7020bxii", cputables_Celeron_Cyrix3}, + {"ambx133", cputables_Celeron_Cyrix3}, + {"trinity371", cputables_Celeron}, + {"63a", cputables_Celeron_Cyrix3}, + {"apas3", cputables_Celeron_Cyrix3}, + {"wcf681", cputables_Celeron_Cyrix3}, + {"6via85x", cputables_Celeron_Cyrix3}, + {"p6bap", cputables_Celeron_Cyrix3}, + {"603tcf", cputables_Celeron_Cyrix3}, + {"vpc2007", cputables_PentiumIID_Celeron}, + {NULL, NULL} }; From fd08b2fdf129ddcf8c80a1c003d52a7236d83d0f Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 18 Nov 2020 19:59:51 -0300 Subject: [PATCH 12/28] Fix warnings --- src/cpu/cpu.c | 2 +- src/cpu/cpu_table.c | 2 +- src/win/win_settings.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index b3208de92..f644f48e4 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -320,7 +320,7 @@ cpu_get_family(const char *internal_name) int c = 0; while (cpu_families[c].package) { if (!strcmp(internal_name, cpu_families[c].internal_name)) - return &cpu_families[c]; + return (cpu_family_t *) &cpu_families[c]; c++; } diff --git a/src/cpu/cpu_table.c b/src/cpu/cpu_table.c index 2d98dc0fe..e7523b553 100644 --- a/src/cpu/cpu_table.c +++ b/src/cpu/cpu_table.c @@ -1858,5 +1858,5 @@ const cpu_legacy_machine_t cpu_legacy_table[] = { {"p6bap", cputables_Celeron_Cyrix3}, {"603tcf", cputables_Celeron_Cyrix3}, {"vpc2007", cputables_PentiumIID_Celeron}, - {NULL, {NULL}} + {NULL, NULL} }; diff --git a/src/win/win_settings.c b/src/win/win_settings.c index 8c08d9ae2..1ca739b9d 100644 --- a/src/win/win_settings.c +++ b/src/win/win_settings.c @@ -769,7 +769,7 @@ win_settings_machine_recalc_machine(HWND hdlg) fatal("No eligible CPU families for the selected machine\n"); settings_enable_window(hdlg, IDC_COMBO_CPU_TYPE, TRUE); if (current_eligible == -1) { - temp_cpu_f = &cpu_families[listtocpufamily[0]]; + temp_cpu_f = (cpu_family_t *) &cpu_families[listtocpufamily[0]]; settings_set_cur_sel(hdlg, IDC_COMBO_CPU_TYPE, 0); } else { settings_set_cur_sel(hdlg, IDC_COMBO_CPU_TYPE, current_eligible); @@ -937,7 +937,7 @@ win_settings_machine_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) break; case IDC_COMBO_CPU_TYPE: if (HIWORD(wParam) == CBN_SELCHANGE) { - temp_cpu_f = &cpu_families[listtocpufamily[settings_get_cur_sel(hdlg, IDC_COMBO_CPU_TYPE)]]; + temp_cpu_f = (cpu_family_t *) &cpu_families[listtocpufamily[settings_get_cur_sel(hdlg, IDC_COMBO_CPU_TYPE)]]; temp_cpu = 0; win_settings_machine_recalc_cpu_m(hdlg); } From 2e0cbd02e5e4ae5908d572f61fa632ff8f7c0500 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 18 Nov 2020 21:07:37 -0300 Subject: [PATCH 13/28] Add missing voltage value to iDX4 CPUs --- src/cpu/cpu_table.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cpu/cpu_table.c b/src/cpu/cpu_table.c index e7523b553..123ea94db 100644 --- a/src/cpu/cpu_table.c +++ b/src/cpu/cpu_table.c @@ -364,8 +364,8 @@ const cpu_family_t cpu_families[] = { .name = "iDX4", .internal_name = "idx4", .cpus = { - {"75", CPU_iDX4, fpus_internal, 75000000, 3.0, 0x480, 0x480, 0x0000, CPU_SUPPORTS_DYNAREC, 12,12, 9, 9, 9}, /*CPUID available on DX4, >= 75 MHz*/ - {"100", CPU_iDX4, fpus_internal, 100000000, 3.0, 0x483, 0x483, 0x0000, CPU_SUPPORTS_DYNAREC, 18,18, 9, 9, 12}, /*Is on some real Intel DX2s, limit here is pretty arbitary*/ + {"75", CPU_iDX4, fpus_internal, 75000000, 3.0, 5000, 0x480, 0x480, 0x0000, CPU_SUPPORTS_DYNAREC, 12,12, 9, 9, 9}, /*CPUID available on DX4, >= 75 MHz*/ + {"100", CPU_iDX4, fpus_internal, 100000000, 3.0, 5000, 0x483, 0x483, 0x0000, CPU_SUPPORTS_DYNAREC, 18,18, 9, 9, 12}, /*Is on some real Intel DX2s, limit here is pretty arbitary*/ {"", 0} } }, { From 461f8c2c5eb5063769109431dceedb7aa8bb7362 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 18 Nov 2020 21:19:26 -0300 Subject: [PATCH 14/28] Rename the 3V/5V Pentium OverDrives to something that makes a bit more sense --- src/cpu/cpu_table.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/cpu/cpu_table.c b/src/cpu/cpu_table.c index 123ea94db..e97c80c77 100644 --- a/src/cpu/cpu_table.c +++ b/src/cpu/cpu_table.c @@ -543,7 +543,7 @@ const cpu_family_t cpu_families[] = { .package = CPU_PKG_SOCKET4, .manufacturer = "Intel", .name = "Pentium OverDrive", - .internal_name = "pentium_p54c_od4", + .internal_name = "pentium_p54c_od5v", .cpus = { {"100", CPU_PENTIUM, fpus_internal, 100000000, 2, 5000, 0x51A, 0x51A, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 8, 8,6,6, 12}, {"120", CPU_PENTIUM, fpus_internal, 120000000, 2, 5000, 0x51A, 0x51A, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 12,12,6,6, 14}, @@ -598,7 +598,7 @@ const cpu_family_t cpu_families[] = { .package = CPU_PKG_SOCKET5_7, .manufacturer = "Intel", .name = "Pentium OverDrive", - .internal_name = "pentium_p54c_od5", + .internal_name = "pentium_p54c_od3v", .cpus = { {"125", CPU_PENTIUM, fpus_internal, 125000000, 3.0, 3520, 0x52c, 0x52c, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 12,12,7,7, 16}, {"150", CPU_PENTIUM, fpus_internal, 150000000, 2.5, 3520, 0x52c, 0x52c, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 15,15,7,7, 35/2}, @@ -1340,8 +1340,8 @@ static const cpu_legacy_table_t cpus_WinChip_SS7[] = { static const cpu_legacy_table_t cpus_Pentium5V[] = { {"pentium_p5", 60000000, 1}, {"pentium_p5", 66666666, 1}, - {"pentium_p54c_od4", 120000000, 2}, - {"pentium_p54c_od4", 133333333, 2}, + {"pentium_p54c_od5v", 120000000, 2}, + {"pentium_p54c_od5v", 133333333, 2}, {NULL, 0, 0} }; @@ -1353,9 +1353,9 @@ static const cpu_legacy_table_t cpus_PentiumS5[] = { {"pentium_p54c", 100000000, 1.5}, {"pentium_p54c", 120000000, 2.0}, {"pentium_p54c", 133333333, 2.0}, - {"pentium_p54c_od5", 125000000, 3.0}, - {"pentium_p54c_od5", 150000000, 2.5}, - {"pentium_p54c_od5", 166666666, 2.5}, + {"pentium_p54c_od3v", 125000000, 3.0}, + {"pentium_p54c_od3v", 150000000, 2.5}, + {"pentium_p54c_od3v", 166666666, 2.5}, {"pentium_p55c_od", 125000000, 2.5}, {"pentium_p55c_od", 150000000, 2.5}, {"pentium_p55c_od", 166000000, 2.5}, @@ -1375,9 +1375,9 @@ static const cpu_legacy_table_t cpus_Pentium3V[] = { {"pentium_p54c", 150000000, 2.5}, {"pentium_p54c", 166666666, 2.5}, {"pentium_p54c", 200000000, 3.0}, - {"pentium_p54c_od5", 125000000, 2.5}, - {"pentium_p54c_od5", 150000000, 2.5}, - {"pentium_p54c_od5", 166666666, 2.5}, + {"pentium_p54c_od3v", 125000000, 2.5}, + {"pentium_p54c_od3v", 150000000, 2.5}, + {"pentium_p54c_od3v", 166666666, 2.5}, {"pentium_p55c_od", 125000000, 2.5}, {"pentium_p55c_od", 150000000, 2.5}, {"pentium_p55c_od", 166000000, 2.5}, @@ -1408,9 +1408,9 @@ static const cpu_legacy_table_t cpus_Pentium[] = { {"pentium_tillamook", 233333333, 3.5}, {"pentium_tillamook", 266666666, 4.0}, {"pentium_tillamook", 300000000, 4.5}, - {"pentium_p54c_od5", 125000000, 2.5}, - {"pentium_p54c_od5", 150000000, 2.5}, - {"pentium_p54c_od5", 166666666, 2.5}, + {"pentium_p54c_od3v", 125000000, 2.5}, + {"pentium_p54c_od3v", 150000000, 2.5}, + {"pentium_p54c_od3v", 166666666, 2.5}, {"pentium_p55c_od", 125000000, 2.5}, {"pentium_p55c_od", 150000000, 2.5}, {"pentium_p55c_od", 166000000, 2.5}, From 022d7ccc47d917ab219a1805e41c2d6812fccaf4 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 18 Nov 2020 21:20:54 -0300 Subject: [PATCH 15/28] Account for the fixed multipliers in Pentium OverDrive 3.3V/MMX CPUs --- src/cpu/cpu.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index f644f48e4..009d7ca38 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -363,10 +363,17 @@ cpu_is_eligible(const cpu_family_t *cpu_family, int cpu, int machine) if (machine_s->cpu_max_voltage && (cpu_s->voltage > (machine_s->cpu_max_voltage + 10))) /* maximum voltage with 10 mV tolerance */ return 0; - /* Account for CPUs that use a different multiplier than specified by jumpers. */ + /* Account for CPUs that use a different internal multiplier than specified by jumpers. */ double multi = cpu_s->multi; - if (cpu_family->package & CPU_PKG_SOCKET5_7) { - if (multi == 1.75) /* K5 */ + if (cpu_family->package & CPU_PKG_SOCKET4) { + if (multi == 2.0) /* Pentium OverDrive */ + multi = 1.0; + } else if (cpu_family->package & CPU_PKG_SOCKET5_7) { + if ((cpu_s->cpuid_model == 0x52c) && !strcmp(cpu_family->internal_name, "pentium_p54c_od3v")) /* Pentium OverDrive 3.3V */ + multi = machine_s->cpu_min_multi; /* fixed multiplier */ + else if (cpu_s->cpuid_model == 0x1542) /* Pentium OverDrive MMX */ + multi = machine_s->cpu_min_multi; /* fixed multiplier */ + else if (multi == 1.75) /* K5 */ multi = 2.5; else if ((multi == 2.0) && (cpu_s->cpu_type & CPU_5K86)) /* K5 */ multi = 3.0; From 20f70663f0beb0051c19c57a0823292c9ec934a4 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 18 Nov 2020 21:23:28 -0300 Subject: [PATCH 16/28] Add Jetway J656VXD to the machine migration list --- src/config.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/config.c b/src/config.c index ba5ad8f44..bf74de17f 100644 --- a/src/config.c +++ b/src/config.c @@ -514,10 +514,12 @@ load_machine(void) p = config_get_string(cat, "machine", NULL); if (p != NULL) { - if (! strcmp(p, "8500ttc")) /* correct typo */ + if (! strcmp(p, "8500ttc")) /* fix typo */ machine = machine_get_machine_from_internal_name("8600ttc"); - else if (! strcmp(p, "president")) /* migrate from removed machine */ + else if (! strcmp(p, "president")) /* migrate removed machine */ machine = machine_get_machine_from_internal_name("mb500n"); + else if (! strcmp(p, "j656vxd")) /* migrate removed machine */ + machine = machine_get_machine_from_internal_name("p55va"); else machine = machine_get_machine_from_internal_name(p); } else @@ -528,7 +530,7 @@ load_machine(void) /* This is for backwards compatibility. */ p = config_get_string(cat, "model", NULL); if (p != NULL) { - if (! strcmp(p, "p55r2p4")) /* correct typo */ + if (! strcmp(p, "p55r2p4")) /* fix typo */ machine = machine_get_machine_from_internal_name("p55t2p4"); else machine = machine_get_machine_from_internal_name(p); From 85cbbe511124d48777b0fab4db746ec0871df70a Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 18 Nov 2020 21:27:40 -0300 Subject: [PATCH 17/28] Socket 4 is a fixed multiplier platform --- src/machine/machine_table.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index 7a81e0198..eb5fb384c 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -226,19 +226,19 @@ const machine_t machines[] = { /* Socket 4 machines */ /* 430LX */ - { "[i430LX] ASUS P/I-P5MP3", "p5mp3", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE, 2, 192, 2, 127, machine_at_p5mp3_init, NULL }, + { "[i430LX] ASUS P/I-P5MP3", "p5mp3", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 1.0, 1.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE, 2, 192, 2, 127, machine_at_p5mp3_init, NULL }, #if defined(DEV_BRANCH) && defined(USE_DELLS4) - { "[i430LX] Dell Dimension XPS P60", "dellxp60", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE, 2, 128, 2, 127, machine_at_dellxp60_init, NULL }, - { "[i430LX] Dell OptiPlex 560/L", "opti560l", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_opti560l_init, NULL }, + { "[i430LX] Dell Dimension XPS P60", "dellxp60", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 1.0, 1.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE, 2, 128, 2, 127, machine_at_dellxp60_init, NULL }, + { "[i430LX] Dell OptiPlex 560/L", "opti560l", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 1.0, 1.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_opti560l_init, NULL }, #endif - { "[i430LX] IBM Ambra DP60 PCI", "ambradp60", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_ambradp60_init, NULL }, - { "[i430LX] IBM PS/ValuePoint P60", "valuepointp60", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_valuepointp60_init, NULL }, - { "[i430LX] Intel Premiere/PCI", "revenge", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_batman_init, NULL }, - { "[i430LX] Micro Star 586MC1", "586mc1", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_586mc1_init, NULL }, - { "[i430LX] Packard Bell PB520R", "pb520r", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8, 136, 2, 127, machine_at_pb520r_init, at_pb520r_get_device }, + { "[i430LX] IBM Ambra DP60 PCI", "ambradp60", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 1.0, 1.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_ambradp60_init, NULL }, + { "[i430LX] IBM PS/ValuePoint P60", "valuepointp60", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 1.0, 1.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_valuepointp60_init, NULL }, + { "[i430LX] Intel Premiere/PCI", "revenge", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 1.0, 1.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_batman_init, NULL }, + { "[i430LX] Micro Star 586MC1", "586mc1", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 1.0, 1.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_586mc1_init, NULL }, + { "[i430LX] Packard Bell PB520R", "pb520r", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 1.0, 1.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8, 136, 2, 127, machine_at_pb520r_init, at_pb520r_get_device }, /* OPTi 596/597 */ - { "[OPTi 597] AMI Excalibur VLB", "excalibur", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 0, 0, MACHINE_VLB | MACHINE_IDE, 2, 64, 2, 127, machine_at_excalibur_init, NULL }, + { "[OPTi 597] AMI Excalibur VLB", "excalibur", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 1.0, 1.0, MACHINE_VLB | MACHINE_IDE, 2, 64, 2, 127, machine_at_excalibur_init, NULL }, /* Socket 5 machines */ /* 430NX */ From 188df1cc857107ad95d540db78568c10fd663dea Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Thu, 19 Nov 2020 01:09:00 -0300 Subject: [PATCH 18/28] Add more multipliers to the internal multiplier list --- src/cpu/cpu.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index 009d7ca38..ead3993e6 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -377,6 +377,8 @@ cpu_is_eligible(const cpu_family_t *cpu_family, int cpu, int machine) multi = 2.5; else if ((multi == 2.0) && (cpu_s->cpu_type & CPU_5K86)) /* K5 */ multi = 3.0; + else if ((multi == 2.0) && (cpu_s->cpu_type & (CPU_K6_2P | CPU_K6_3P))) /* K6-2+ / K6-3+ */ + multi = 2.5; else if (multi == (7.0 / 3.0)) /* WinChip 2A */ multi = 5.0; else if (multi == (8.0 / 3.0)) /* WinChip 2A */ @@ -393,6 +395,9 @@ cpu_is_eligible(const cpu_family_t *cpu_family, int cpu, int machine) multi = 3.0; else if (multi == 6.0) /* K6-2 */ multi = 2.0; + } else if (cpu_family->package & CPU_PKG_SOCKET8) { + if (multi == 5.0) /* Pentium II OverDrive */ + multi = machine_s->cpu_min_multi; /* fixed multiplier */ } if (multi < machine_s->cpu_min_multi) /* minimum multiplier */ From 21af42c4c2fee53c287e72239eb2e69ea2333d05 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Thu, 19 Nov 2020 01:09:47 -0300 Subject: [PATCH 19/28] Add researched bus speed / voltage / multiplier values to Socket 5+ machines --- src/machine/machine_table.c | 164 ++++++++++++++++++------------------ 1 file changed, 82 insertions(+), 82 deletions(-) diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index eb5fb384c..937314deb 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -243,142 +243,142 @@ const machine_t machines[] = { /* Socket 5 machines */ /* 430NX */ { "[i430NX] Intel Premiere/PCI II", "plato", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3520, 3520, 1.5, 1.5, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_plato_init, NULL }, - { "[i430NX] IBM Ambra DP90 PCI", "ambradp90", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 3380, 3520, 1.5, 1.5, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_ambradp90_init, NULL }, - { "[i430NX] Gigabyte GA-586IP", "430nx", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 60000000, 66666667, 3380, 3520, 1.5, 1.5, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_430nx_init, NULL }, + { "[i430NX] IBM Ambra DP90 PCI", "ambradp90", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 1.5, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_ambradp90_init, NULL }, + { "[i430NX] Gigabyte GA-586IP", "430nx", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 60000000, 66666667, 3520, 3520, 1.5, 1.5, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_430nx_init, NULL }, /* 430FX */ - { "[i430FX] Acer V30", "acerv30", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 3380, 3520, 0, 2.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_acerv30_init, NULL }, - { "[i430FX] AMI Apollo", "apollo", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 3380, 3520, 0, 2.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_apollo_init, NULL }, - { "[i430FX] HP Vectra VL 5 Series 4", "vectra54", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 3380, 3520, 0, 2.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8, 128, 8, 511, machine_at_vectra54_init, at_vectra54_get_device }, - { "[i430FX] Intel Advanced/ZP", "zappa", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 3380, 3520, 1.5, 2.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_zappa_init, NULL }, - { "[i430FX] NEC PowerMate V", "powermate_v", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 3380, 3520, 0, 2.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_powermate_v_init, NULL }, - { "[i430FX] PC Partner MB500N", "mb500n", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 3380, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_mb500n_init, NULL }, + { "[i430FX] Acer V30", "acerv30", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 2.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_acerv30_init, NULL }, + { "[i430FX] AMI Apollo", "apollo", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 2.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_apollo_init, NULL }, + { "[i430FX] HP Vectra VL 5 Series 4", "vectra54", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 2.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8, 128, 8, 511, machine_at_vectra54_init, at_vectra54_get_device }, + { "[i430FX] Intel Advanced/ZP", "zappa", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 2.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_zappa_init, NULL }, + { "[i430FX] NEC PowerMate V", "powermate_v", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 2.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_powermate_v_init, NULL }, + { "[i430FX] PC Partner MB500N", "mb500n", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_mb500n_init, NULL }, /* Socket 7 machines */ /* 430FX */ - { "[i430FX] ASUS P/I-P54TP4XE", "p54tp4xe", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 3380, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_p54tp4xe_init, NULL }, - { "[i430FX] ASUS P/I-P54TP4XE (MR BIOS)", "mr586", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 3380, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_mr586_init, NULL }, - { "[i430FX] Gateway 2000 Thor", "gw2katx", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 3380, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8, 128, 8, 127, machine_at_gw2katx_init, NULL }, - { "[i430FX] Intel Advanced/ATX", "thor", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 3380, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8, 128, 8, 127, machine_at_thor_init, NULL }, - { "[i430FX] Intel Advanced/ATX (MR BIOS)", "mrthor", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 3380, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8, 128, 8, 127, machine_at_mrthor_init, NULL }, - { "[i430FX] Intel Advanced/EV", "endeavor", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 0, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8, 128, 8, 127, machine_at_endeavor_init, at_endeavor_get_device }, - { "[i430FX] Packard Bell PB640", "pb640", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 3380, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8, 128, 8, 127, machine_at_pb640_init, at_pb640_get_device }, - { "[i430FX] QDI Chariot", "chariot", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, CPU_WINCHIP|CPU_WINCHIP2|CPU_Cx6x86|CPU_Cx6x86L|CPU_Cx6x86MX, 0, 66666667, 3380, 0, 0, 0, MACHINE_PCI | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_chariot_init, NULL }, + { "[i430FX] ASUS P/I-P54TP4XE", "p54tp4xe", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3600, 1.5, 2.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_p54tp4xe_init, NULL }, + { "[i430FX] ASUS P/I-P54TP4XE (MR BIOS)", "mr586", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3600, 1.5, 2.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_mr586_init, NULL }, + { "[i430FX] Gateway 2000 Thor", "gw2katx", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8, 128, 8, 127, machine_at_gw2katx_init, NULL }, + { "[i430FX] Intel Advanced/ATX", "thor", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8, 128, 8, 127, machine_at_thor_init, NULL }, + { "[i430FX] Intel Advanced/ATX (MR BIOS)", "mrthor", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8, 128, 8, 127, machine_at_mrthor_init, NULL }, + { "[i430FX] Intel Advanced/EV", "endeavor", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8, 128, 8, 127, machine_at_endeavor_init, at_endeavor_get_device }, + { "[i430FX] Packard Bell PB640", "pb640", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8, 128, 8, 127, machine_at_pb640_init, at_pb640_get_device }, + { "[i430FX] QDI Chariot", "chariot", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, CPU_WINCHIP|CPU_WINCHIP2|CPU_Cx6x86|CPU_Cx6x86L|CPU_Cx6x86MX, 50000000, 66666667, 3380, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_chariot_init, NULL }, /* 430HX */ - { "[i430HX] Acer M3A", "acerm3a", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 3380, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 192, 8, 127, machine_at_acerm3a_init, NULL }, + { "[i430HX] Acer M3A", "acerm3a", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3300, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 192, 8, 127, machine_at_acerm3a_init, NULL }, { "[i430HX] AOpen AP53", "ap53", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3450, 3520, 1.5, 2.5, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 127, machine_at_ap53_init, NULL }, - { "[i430HX] Biostar MB-8500TUC", "8500tuc", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 3380, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 127, machine_at_8500tuc_init, NULL }, - { "[i430HX] SuperMicro Super P55T2S", "p55t2s", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 3380, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 127, machine_at_p55t2s_init, NULL }, + { "[i430HX] Biostar MB-8500TUC", "8500tuc", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 127, machine_at_8500tuc_init, NULL }, + { "[i430HX] SuperMicro Super P55T2S", "p55t2s", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3300, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 127, machine_at_p55t2s_init, NULL }, - { "[i430HX] Acer V35N", "acerv35n", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 192, 8, 127, machine_at_acerv35n_init, NULL }, + { "[i430HX] Acer V35N", "acerv35n", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 2800, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 192, 8, 127, machine_at_acerv35n_init, NULL }, { "[i430HX] ASUS P/I-P55T2P4", "p55t2p4", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 75000000, 2500, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 256, 8, 127, machine_at_p55t2p4_init, NULL }, - { "[i430HX] Micronics M7S-Hi", "m7shi", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 511, machine_at_m7shi_init, NULL }, - { "[i430HX] Intel TC430HX", "tc430hx", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 255, machine_at_tc430hx_init, NULL }, - { "[i430HX] Toshiba Equium 5200D", "equium5200", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 192, 8, 127, machine_at_equium5200_init, NULL }, - { "[i430HX] Sony Vaio PCV-240", "pcv240", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 192, 8, 127, machine_at_pcv240_init, NULL }, - { "[i430HX] ASUS P/I-P65UP5 (C-P55T2D)", "p65up5_cp55t2d", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 127, machine_at_p65up5_cp55t2d_init, NULL }, + { "[i430HX] Micronics M7S-Hi", "m7shi", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 2800, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 511, machine_at_m7shi_init, NULL }, + { "[i430HX] Intel TC430HX", "tc430hx", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 2800, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 255, machine_at_tc430hx_init, NULL }, + { "[i430HX] Toshiba Equium 5200D", "equium5200", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 2800, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 192, 8, 127, machine_at_equium5200_init, NULL }, + { "[i430HX] Sony Vaio PCV-240", "pcv240", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 2800, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 192, 8, 127, machine_at_pcv240_init, NULL }, + { "[i430HX] ASUS P/I-P65UP5 (C-P55T2D)", "p65up5_cp55t2d", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 2500, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 127, machine_at_p65up5_cp55t2d_init, NULL }, /* 430VX */ - { "[i430VX] ASUS P/I-P55TVP4", "p55tvp4", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_p55tvp4_init, NULL }, - { "[i430VX] Biostar MB-8500TVX-A", "8500tvxa", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_8500tvxa_init, NULL }, - { "[i430VX] Compaq Presario 4500", "presario4500", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8, 128, 8, 127, machine_at_presario4500_init, NULL }, - { "[i430VX] Epox P55-VA", "p55va", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_p55va_init, NULL }, - { "[i430VX] Gateway 2000 Tigereye", "gw2kte", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_gw2kte_init, NULL }, - { "[i430VX] HP Brio 80xx", "brio80xx", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_brio80xx_init, NULL }, - { "[i430VX] Packard Bell PB680", "pb680", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_pb680_init, NULL }, - { "[i430VX] Shuttle HOT-557", "430vx", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_i430vx_init, NULL }, + { "[i430VX] ASUS P/I-P55TVP4", "p55tvp4", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 2500, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_p55tvp4_init, NULL }, + { "[i430VX] Biostar MB-8500TVX-A", "8500tvxa", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 2600, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_8500tvxa_init, NULL }, + { "[i430VX] Compaq Presario 4500", "presario4500", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 2800, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8, 128, 8, 127, machine_at_presario4500_init, NULL }, + { "[i430VX] Epox P55-VA", "p55va", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 2500, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_p55va_init, NULL }, + { "[i430VX] Gateway 2000 Tigereye", "gw2kte", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_gw2kte_init, NULL }, + { "[i430VX] HP Brio 80xx", "brio80xx", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 66666667, 66666667, 2200, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_brio80xx_init, NULL }, + { "[i430VX] Packard Bell PB680", "pb680", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 2800, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_pb680_init, NULL }, + { "[i430VX] Shuttle HOT-557", "430vx", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 2500, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_i430vx_init, NULL }, /* 430TX */ - { "[i430TX] ADLink NuPRO-592", "nupro592", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 256, 8, 255, machine_at_nupro592_init, NULL }, - { "[i430TX] ASUS TX97", "tx97", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 256, 8, 255, machine_at_tx97_init, NULL }, + { "[i430TX] ADLink NuPRO-592", "nupro592", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 66666667, 66666667, 1900, 2800, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 256, 8, 255, machine_at_nupro592_init, NULL }, + { "[i430TX] ASUS TX97", "tx97", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 75000000, 2500, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 256, 8, 255, machine_at_tx97_init, NULL }, #if defined(DEV_BRANCH) && defined(NO_SIO) - { "[i430TX] Intel AN430TX", "an430tx", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 256, 8, 255, machine_at_an430tx_init, NULL }, + { "[i430TX] Intel AN430TX", "an430tx", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 60000000, 66666667, 2800, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 256, 8, 255, machine_at_an430tx_init, NULL }, #endif - { "[i430TX] Intel YM430TX", "ym430tx", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 256, 8, 255, machine_at_ym430tx_init, NULL }, - { "[i430TX] PC Partner MB540N", "mb540n", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 256, 8, 255, machine_at_mb540n_init, NULL }, - { "[i430TX] SuperMicro Super P5MMS98", "p5mms98", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 0, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 256, 8, 255, machine_at_p5mms98_init, NULL }, + { "[i430TX] Intel YM430TX", "ym430tx", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 60000000, 66666667, 2800, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 256, 8, 255, machine_at_ym430tx_init, NULL }, + { "[i430TX] PC Partner MB540N", "mb540n", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 60000000, 66666667, 2700, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 256, 8, 255, machine_at_mb540n_init, NULL }, + { "[i430TX] SuperMicro Super P5MMS98", "p5mms98", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 2100, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 256, 8, 255, machine_at_p5mms98_init, NULL }, /* Apollo VPX */ - { "[VIA VPX] FIC VA-502", "ficva502", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 55000000, 75000000, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 127, machine_at_ficva502_init, NULL }, + { "[VIA VPX] FIC VA-502", "ficva502", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 75000000, 2800, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 127, machine_at_ficva502_init, NULL }, /* Apollo VP3 */ - { "[VIA VP3] FIC PA-2012", "ficpa2012", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 55000000, 75000000, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 127, machine_at_ficpa2012_init, NULL }, + { "[VIA VP3] FIC PA-2012", "ficpa2012", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 55000000, 75000000, 2100, 3520, 1.5, 5.5, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 127, machine_at_ficpa2012_init, NULL }, /* Super Socket 7 machines */ /* Apollo MVP3 */ { "[VIA MVP3] AOpen AX59 Pro", "ax59pro", MACHINE_TYPE_SOCKETS7, CPU_PKG_SOCKET5_7, 0, 66666667, 124242424, 1300, 3520, 1.5, 5.5, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_ax59pro_init, NULL }, - { "[VIA MVP3] FIC VA-503+", "ficva503p", MACHINE_TYPE_SOCKETS7, CPU_PKG_SOCKET5_7, 0, 66666667, 100000000, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_mvp3_init, NULL }, - { "[VIA MVP3] FIC VA-503A", "ficva503a", MACHINE_TYPE_SOCKETS7, CPU_PKG_SOCKET5_7, 0, 66666667, 100000000, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_ficva503a_init, NULL }, + { "[VIA MVP3] FIC VA-503+", "ficva503p", MACHINE_TYPE_SOCKETS7, CPU_PKG_SOCKET5_7, 0, 66666667, 124242424, 2000, 3200, 1.5, 5.5, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_mvp3_init, NULL }, + { "[VIA MVP3] FIC VA-503A", "ficva503a", MACHINE_TYPE_SOCKETS7, CPU_PKG_SOCKET5_7, 0, 66666667, 124242424, 1800, 3100, 1.5, 5.5, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_ficva503a_init, NULL }, /* Socket 8 machines */ /* 440FX */ - { "[i440FX] Acer V60N", "v60n", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 60000000, 83600000, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 127, machine_at_v60n_init, NULL }, - { "[i440FX] ASUS P/I-P65UP5 (C-P6ND)", "p65up5_cp6nd", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 60000000, 83600000, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 127, machine_at_p65up5_cp6nd_init, NULL }, - { "[i440FX] Biostar MB-8600TTC", "8600ttc", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 60000000, 83600000, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 127, machine_at_8500ttc_init, NULL }, - { "[i440FX] Gigabyte GA-686NX", "686nx", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 60000000, 83600000, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 127, machine_at_686nx_init, NULL }, - { "[i440FX] Intel AP440FX", "ap440fx", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 60000000, 83600000, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_ap440fx_init, NULL }, - { "[i440FX] Intel VS440FX", "vs440fx", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 60000000, 83600000, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 127, machine_at_vs440fx_init, NULL }, - { "[i440FX] Micronics M6Mi", "m6mi", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 60000000, 83600000, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 127, machine_at_m6mi_init, NULL }, - { "[i440FX] PC Partner MB600N", "mb600n", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 60000000, 83600000, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 127, machine_at_mb600n_init, NULL }, + { "[i440FX] Acer V60N", "v60n", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 60000000, 66666667, 2500, 3500, 2.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 127, machine_at_v60n_init, NULL }, + { "[i440FX] ASUS P/I-P65UP5 (C-P6ND)", "p65up5_cp6nd", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 60000000, 66666667, 2100, 3500, 2.0, 4.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 127, machine_at_p65up5_cp6nd_init, NULL }, + { "[i440FX] Biostar MB-8600TTC", "8600ttc", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 50000000, 66666667, 2900, 3300, 2.0, 3.5, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 127, machine_at_8500ttc_init, NULL }, + { "[i440FX] Gigabyte GA-686NX", "686nx", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 60000000, 66666667, 2100, 3500, 2.5, 4.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 127, machine_at_686nx_init, NULL }, + { "[i440FX] Intel AP440FX", "ap440fx", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 60000000, 66666667, 2100, 3500, 2.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 127, machine_at_ap440fx_init, NULL }, + { "[i440FX] Intel VS440FX", "vs440fx", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 60000000, 66666667, 2100, 3500, 2.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 127, machine_at_vs440fx_init, NULL }, + { "[i440FX] Micronics M6Mi", "m6mi", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 60000000, 66666667, 2900, 3300, 2.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 127, machine_at_m6mi_init, NULL }, + { "[i440FX] PC Partner MB600N", "mb600n", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 60000000, 66666667, 2100, 3500, 2.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 127, machine_at_mb600n_init, NULL }, /* Slot 1 machines */ /* 440FX */ - { "[i440FX] ASUS P/I-P65UP5 (C-PKND)", "p65up5_cpknd", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 60000000, 83600000, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 127, machine_at_p65up5_cpknd_init, NULL }, - { "[i440FX] ASUS KN97", "kn97", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 60000000, 83600000, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 127, machine_at_kn97_init, NULL }, + { "[i440FX] ASUS P/I-P65UP5 (C-PKND)", "p65up5_cpknd", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 50000000, 66666667, 1800, 3500, 2.0, 5.5, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 127, machine_at_p65up5_cpknd_init, NULL }, + { "[i440FX] ASUS KN97", "kn97", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 60000000, 83333333, 1800, 3500, 2.0, 5.5, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 127, machine_at_kn97_init, NULL }, /* 440LX */ - { "[i440LX] ABIT LX6", "lx6", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 100000000, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_lx6_init, NULL }, - { "[i440LX] Micronics Spitfire", "spitfire", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 100000000, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_spitfire_init, NULL }, + { "[i440LX] ABIT LX6", "lx6", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 60000000, 100000000, 1500, 3500, 2.0, 5.5, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_lx6_init, NULL }, + { "[i440LX] Micronics Spitfire", "spitfire", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 66666667, 1800, 3500, 3.5, 6.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_spitfire_init, NULL }, /* 440EX */ - { "[i440EX] QDI EXCELLENT II", "p6i440e2", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 100000000, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 255, machine_at_p6i440e2_init, NULL }, + { "[i440EX] QDI EXCELLENT II", "p6i440e2", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 83333333, 1800, 3500, 3.0, 8.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 255, machine_at_p6i440e2_init, NULL }, /* 440BX */ - { "[i440BX] ASUS P2B-LS", "p2bls", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_p2bls_init, NULL }, - { "[i440BX] ASUS P3B-F", "p3bf", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_p3bf_init, NULL }, - { "[i440BX] ABIT BF6", "bf6", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_bf6_init, NULL }, - { "[i440BX] AOpen AX6BC", "ax6bc", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_ax6bc_init, NULL }, - { "[i440BX] A-Trend ATC6310BXII", "atc6310bxii", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_atc6310bxii_init, NULL }, - { "[i440BX] Gigabyte GA-686BX", "ga686bx", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_ga686bx_init, NULL }, - { "[i440BX] Tyan Tsunami ATX", "tsunamiatx", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_SOUND, 8, 1024, 8, 255, machine_at_tsunamiatx_init, at_tsunamiatx_get_device }, - { "[i440BX] SuperMicro Super P6SBA", "p6sba", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_p6sba_init, NULL }, + { "[i440BX] ASUS P2B-LS", "p2bls", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 50000000, 112121212, 1800, 3500, 2.0, 6.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_p2bls_init, NULL }, + { "[i440BX] ASUS P3B-F", "p3bf", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 150000000, 1800, 3500, 2.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_p3bf_init, NULL }, + { "[i440BX] ABIT BF6", "bf6", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 133333333, 1800, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_bf6_init, NULL }, + { "[i440BX] AOpen AX6BC", "ax6bc", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 112121212, 1800, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_ax6bc_init, NULL }, + { "[i440BX] A-Trend ATC6310BXII", "atc6310bxii", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 133333333, 1800, 3500, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_atc6310bxii_init, NULL }, + { "[i440BX] Gigabyte GA-686BX", "ga686bx", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 100000000, 1800, 3500, 3.0, 5.5, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_ga686bx_init, NULL }, + { "[i440BX] Tyan Tsunami ATX", "tsunamiatx", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 112121212, 1800, 3500, 3.5, 5.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_SOUND, 8, 1024, 8, 255, machine_at_tsunamiatx_init, at_tsunamiatx_get_device }, + { "[i440BX] SuperMicro Super P6SBA", "p6sba", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 100000000, 1800, 3500, 3.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_p6sba_init, NULL }, #if defined(DEV_BRANCH) && defined(NO_SIO) - { "[i440BX] Fujitsu ErgoPro x365", "ergox365", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 384, 8, 511, machine_at_ergox365_init, NULL }, + { "[i440BX] Fujitsu ErgoPro x365", "ergox365", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 100000000, 1800, 3500, 3.5, 5.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 384, 8, 511, machine_at_ergox365_init, NULL }, #endif /* 440GX */ - { "[i440GX] Freeway FW-6400GX", "fw6400gx_s1", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 16, 2032, 16, 511, machine_at_fw6400gx_init, NULL }, + { "[i440GX] Freeway FW-6400GX", "fw6400gx_s1", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 100000000, 150000000, 1800, 3500, 3.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 16, 2032, 16, 511, machine_at_fw6400gx_init, NULL }, /* VIA Apollo Pro */ - { "[VIA Apollo Pro] FIC KA-6130", "ficka6130", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 255, machine_at_ficka6130_init, NULL }, + { "[VIA Apollo Pro] FIC KA-6130", "ficka6130", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 100000000, 1800, 3500, 3.5, 5.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 255, machine_at_ficka6130_init, NULL }, /* Slot 2 machines(Including Slot 1/2 Hybrids) */ /* 440GX */ - { "[i440GX] Gigabyte GA-6GXU", "6gxu", MACHINE_TYPE_SLOT2, CPU_PKG_SLOT2, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 16, 2048, 16, 511, machine_at_6gxu_init, NULL }, - { "[i440GX] Freeway FW-6400GX", "fw6400gx", MACHINE_TYPE_SLOT2, CPU_PKG_SLOT2, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 16, 2032, 16, 511, machine_at_fw6400gx_init, NULL }, - { "[i440GX] SuperMicro Super S2DGE", "s2dge", MACHINE_TYPE_SLOT2, CPU_PKG_SLOT2, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 16, 2048, 16, 511, machine_at_s2dge_init, NULL }, + { "[i440GX] Gigabyte GA-6GXU", "6gxu", MACHINE_TYPE_SLOT2, CPU_PKG_SLOT2, 0, 100000000, 133333333, 1800, 3500, 4.0, 6.5, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 16, 2048, 16, 511, machine_at_6gxu_init, NULL }, + { "[i440GX] Freeway FW-6400GX", "fw6400gx", MACHINE_TYPE_SLOT2, CPU_PKG_SLOT2, 0, 100000000, 150000000, 1800, 3500, 3.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 16, 2032, 16, 511, machine_at_fw6400gx_init, NULL }, + { "[i440GX] SuperMicro Super S2DGE", "s2dge", MACHINE_TYPE_SLOT2, CPU_PKG_SLOT2, 0, 66666667, 100000000, 1800, 3500, 3.0, 7.5, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 16, 2048, 16, 511, machine_at_s2dge_init, NULL }, /* PGA370 machines */ /* 440LX */ - { "[i440LX] SuperMicro Super 370SLM", "s370slm", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 100000000, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_s370slm_init, NULL }, + { "[i440LX] SuperMicro Super 370SLM", "s370slm", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 100000000, 1800, 3500, 0.1, 0.1, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_s370slm_init, NULL }, /* 440BX */ - { "[i440BX] AEWIN AW-O671R", "awo671r", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 255, machine_at_awo671r_init, NULL }, - { "[i440BX] ASUS CUBX", "cubx", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_cubx_init, NULL }, - { "[i440BX] A-Trend ATC7020BXII", "atc7020bxii", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_atc7020bxii_init, NULL }, - { "[i440BX] AmazePC AM-BX133", "ambx133", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_ambx133_init, NULL }, - { "[i440BX] Tyan Trinity 371", "trinity371", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_trinity371_init, NULL }, + { "[i440BX] AEWIN AW-O671R", "awo671r", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1800, 3500, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 255, machine_at_awo671r_init, NULL }, + { "[i440BX] ASUS CUBX", "cubx", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 150000000, 1800, 3500, 2.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_cubx_init, NULL }, + { "[i440BX] A-Trend ATC7020BXII", "atc7020bxii", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1800, 3500, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_atc7020bxii_init, NULL }, + { "[i440BX] AmazePC AM-BX133", "ambx133", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1800, 3500, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_ambx133_init, NULL }, + { "[i440BX] Tyan Trinity 371", "trinity371", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1800, 3500, 3.5, 7.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_trinity371_init, NULL }, /* 440ZX */ - { "[i440ZX] Soltek SL-63A1", "63a", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 255, machine_at_63a_init, NULL }, + { "[i440ZX] Soltek SL-63A1", "63a", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 100000000, 1800, 3500, 2.0, 7.5, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 255, machine_at_63a_init, NULL }, /* VIA Apollo Pro */ - { "[VIA Apollo Pro] PC Partner APAS3", "apas3", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_apas3_init, NULL }, - { "[VIA Apollo Pro133A] AEWIN WCF-681", "wcf681", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_wcf681_init, NULL }, - { "[VIA Apollo Pro133A] Acorp 6VIA85X", "6via85x", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_6via85x_init, NULL }, - { "[VIA Apollo Pro133A] ECS P6BAP", "p6bap", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_p6bap_init, NULL }, - { "[VIA Apollo ProMedia] Jetway 603TCF", "603tcf", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 255, machine_at_603tcf_init, NULL }, + { "[VIA Apollo Pro] PC Partner APAS3", "apas3", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 100000000, 1800, 3500, 3.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_apas3_init, NULL }, + { "[VIA Apollo Pro133A] AEWIN WCF-681", "wcf681", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1800, 3500, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_wcf681_init, NULL }, + { "[VIA Apollo Pro133A] Acorp 6VIA85X", "6via85x", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1800, 3500, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_6via85x_init, NULL }, + { "[VIA Apollo Pro133A] ECS P6BAP", "p6bap", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 150000000, 1800, 3500, 2.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_p6bap_init, NULL }, + { "[VIA Apollo ProMedia] Jetway 603TCF", "603tcf", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 150000000, 1800, 3500, 2.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 255, machine_at_603tcf_init, NULL }, /* Miscellaneous/Fake/Hypervisor machines */ { "[i440BX] Microsoft Virtual PC 2007", "vpc2007", MACHINE_TYPE_MISC, CPU_PKG_SLOT1, CPU_PENTIUM2 | CPU_CYRIX3S, 0, 0, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_vpc2007_init, NULL }, From 27f9784fcdb55b9e7ad49531b78e99de7aefaa7c Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Thu, 19 Nov 2020 01:15:20 -0300 Subject: [PATCH 20/28] Add Mendocino fixed multiplier for Supermicro 370SLM --- src/cpu/cpu.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index ead3993e6..44b6a266a 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -398,6 +398,9 @@ cpu_is_eligible(const cpu_family_t *cpu_family, int cpu, int machine) } else if (cpu_family->package & CPU_PKG_SOCKET8) { if (multi == 5.0) /* Pentium II OverDrive */ multi = machine_s->cpu_min_multi; /* fixed multiplier */ + } else if (cpu_family->package & CPU_PKG_SOCKET370) { + if (cpu_s->cpu_type & CPU_PENTIUM2D) /* Celeron Mendocino */ + multi = machine_s->cpu_min_multi; /* fixed multiplier */ } if (multi < machine_s->cpu_min_multi) /* minimum multiplier */ From 71c55bdf24aa476a31df351509585e5faeaaa50f Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Thu, 19 Nov 2020 01:17:54 -0300 Subject: [PATCH 21/28] Add Cyrix III fixed multiplier --- src/cpu/cpu.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index 44b6a266a..1f1fce91a 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -401,6 +401,8 @@ cpu_is_eligible(const cpu_family_t *cpu_family, int cpu, int machine) } else if (cpu_family->package & CPU_PKG_SOCKET370) { if (cpu_s->cpu_type & CPU_PENTIUM2D) /* Celeron Mendocino */ multi = machine_s->cpu_min_multi; /* fixed multiplier */ + else if (cpu_s->cpu_type & CPU_CYRIX3S) /* Cyrix III Samuel */ + multi = machine_s->cpu_min_multi; /* fixed multiplier */ } if (multi < machine_s->cpu_min_multi) /* minimum multiplier */ From 98f09bf4ac7cb6ff027a795fe0d11ffde03193a9 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Thu, 19 Nov 2020 14:15:34 -0300 Subject: [PATCH 22/28] Improve handling of fixed multipliers --- src/cpu/cpu.c | 23 ++------ src/cpu/cpu.h | 1 + src/cpu/cpu_table.c | 104 ++++++++++++++++++------------------ src/include/86box/machine.h | 2 + src/machine/machine_table.c | 26 ++++----- 5 files changed, 73 insertions(+), 83 deletions(-) diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index 1f1fce91a..d434b4e29 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -357,23 +357,18 @@ cpu_is_eligible(const cpu_family_t *cpu_family, int cpu, int machine) if (machine_s->cpu_max_bus && (bus_speed > (machine_s->cpu_max_bus + 840907))) /* maximum bus speed with ~0.84 MHz (for 8086) tolerance */ return 0; - if (machine_s->cpu_min_voltage && (cpu_s->voltage < (machine_s->cpu_min_voltage - 10))) /* minimum voltage with 10 mV tolerance */ + if (machine_s->cpu_min_voltage && (cpu_s->voltage < (machine_s->cpu_min_voltage - 100))) /* minimum voltage with 0.1V tolerance */ return 0; - if (machine_s->cpu_max_voltage && (cpu_s->voltage > (machine_s->cpu_max_voltage + 10))) /* maximum voltage with 10 mV tolerance */ + if (machine_s->cpu_max_voltage && (cpu_s->voltage > (machine_s->cpu_max_voltage + 100))) /* maximum voltage with 0.1V tolerance */ return 0; /* Account for CPUs that use a different internal multiplier than specified by jumpers. */ double multi = cpu_s->multi; - if (cpu_family->package & CPU_PKG_SOCKET4) { - if (multi == 2.0) /* Pentium OverDrive */ - multi = 1.0; + if (cpu_s->cpu_flags & CPU_FIXED_MULTIPLIER) { + multi = machine_s->cpu_min_multi; } else if (cpu_family->package & CPU_PKG_SOCKET5_7) { - if ((cpu_s->cpuid_model == 0x52c) && !strcmp(cpu_family->internal_name, "pentium_p54c_od3v")) /* Pentium OverDrive 3.3V */ - multi = machine_s->cpu_min_multi; /* fixed multiplier */ - else if (cpu_s->cpuid_model == 0x1542) /* Pentium OverDrive MMX */ - multi = machine_s->cpu_min_multi; /* fixed multiplier */ - else if (multi == 1.75) /* K5 */ + if (multi == 1.75) /* K5 */ multi = 2.5; else if ((multi == 2.0) && (cpu_s->cpu_type & CPU_5K86)) /* K5 */ multi = 3.0; @@ -395,14 +390,6 @@ cpu_is_eligible(const cpu_family_t *cpu_family, int cpu, int machine) multi = 3.0; else if (multi == 6.0) /* K6-2 */ multi = 2.0; - } else if (cpu_family->package & CPU_PKG_SOCKET8) { - if (multi == 5.0) /* Pentium II OverDrive */ - multi = machine_s->cpu_min_multi; /* fixed multiplier */ - } else if (cpu_family->package & CPU_PKG_SOCKET370) { - if (cpu_s->cpu_type & CPU_PENTIUM2D) /* Celeron Mendocino */ - multi = machine_s->cpu_min_multi; /* fixed multiplier */ - else if (cpu_s->cpu_type & CPU_CYRIX3S) /* Cyrix III Samuel */ - multi = machine_s->cpu_min_multi; /* fixed multiplier */ } if (multi < machine_s->cpu_min_multi) /* minimum multiplier */ diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h index b3874b981..bb89d53ca 100644 --- a/src/cpu/cpu.h +++ b/src/cpu/cpu.h @@ -121,6 +121,7 @@ enum { #define CPU_SUPPORTS_DYNAREC 1 #define CPU_REQUIRES_DYNAREC 2 #define CPU_ALTERNATE_XTAL 4 +#define CPU_FIXED_MULTIPLIER 8 #if (defined __amd64__ || defined _M_X64) #define LOOKUP_INV -1LL diff --git a/src/cpu/cpu_table.c b/src/cpu/cpu_table.c index e97c80c77..92ceb1bb8 100644 --- a/src/cpu/cpu_table.c +++ b/src/cpu/cpu_table.c @@ -534,9 +534,9 @@ const cpu_family_t cpu_families[] = { .name = "Pentium", .internal_name = "pentium_p5", .cpus = { - {"50 (Q0399)", CPU_PENTIUM, fpus_internal, 50000000, 1, 5000, 0x513, 0x513, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 4, 4,3,3, 6}, - {"60", CPU_PENTIUM, fpus_internal, 60000000, 1, 5000, 0x517, 0x517, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 6, 6,3,3, 7}, - {"66", CPU_PENTIUM, fpus_internal, 66666666, 1, 5000, 0x517, 0x517, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 6, 6,3,3, 8}, + {"50 (Q0399)", CPU_PENTIUM, fpus_internal, 50000000, 1, 5000, 0x513, 0x513, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 4, 4,3,3, 6}, + {"60", CPU_PENTIUM, fpus_internal, 60000000, 1, 5000, 0x517, 0x517, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 6, 6,3,3, 7}, + {"66", CPU_PENTIUM, fpus_internal, 66666666, 1, 5000, 0x517, 0x517, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 6, 6,3,3, 8}, {"", 0} } }, { @@ -545,9 +545,9 @@ const cpu_family_t cpu_families[] = { .name = "Pentium OverDrive", .internal_name = "pentium_p54c_od5v", .cpus = { - {"100", CPU_PENTIUM, fpus_internal, 100000000, 2, 5000, 0x51A, 0x51A, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 8, 8,6,6, 12}, - {"120", CPU_PENTIUM, fpus_internal, 120000000, 2, 5000, 0x51A, 0x51A, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 12,12,6,6, 14}, - {"133", CPU_PENTIUM, fpus_internal, 133333333, 2, 5000, 0x51A, 0x51A, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 12,12,6,6, 16}, + {"100", CPU_PENTIUM, fpus_internal, 100000000, 2, 5000, 0x51A, 0x51A, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 8, 8,6,6, 12}, + {"120", CPU_PENTIUM, fpus_internal, 120000000, 2, 5000, 0x51A, 0x51A, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 12,12,6,6, 14}, + {"133", CPU_PENTIUM, fpus_internal, 133333333, 2, 5000, 0x51A, 0x51A, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 12,12,6,6, 16}, {"", 0} } }, { @@ -600,9 +600,9 @@ const cpu_family_t cpu_families[] = { .name = "Pentium OverDrive", .internal_name = "pentium_p54c_od3v", .cpus = { - {"125", CPU_PENTIUM, fpus_internal, 125000000, 3.0, 3520, 0x52c, 0x52c, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 12,12,7,7, 16}, - {"150", CPU_PENTIUM, fpus_internal, 150000000, 2.5, 3520, 0x52c, 0x52c, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 15,15,7,7, 35/2}, - {"166", CPU_PENTIUM, fpus_internal, 166666666, 2.5, 3520, 0x52c, 0x52c, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 15,15,7,7, 40}, + {"125", CPU_PENTIUM, fpus_internal, 125000000, 3.0, 3520, 0x52c, 0x52c, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 12,12,7,7, 16}, + {"150", CPU_PENTIUM, fpus_internal, 150000000, 2.5, 3520, 0x52c, 0x52c, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 15,15,7,7, 35/2}, + {"166", CPU_PENTIUM, fpus_internal, 166666666, 2.5, 3520, 0x52c, 0x52c, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 15,15,7,7, 40}, {"", 0} } }, { @@ -611,12 +611,12 @@ const cpu_family_t cpu_families[] = { .name = "Pentium OverDrive MMX", .internal_name = "pentium_p55c_od", .cpus = { - {"75", CPU_PENTIUMMMX, fpus_internal, 75000000, 1.5, 3520, 0x1542, 0x1542, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 7, 7,4,4, 9}, - {"125", CPU_PENTIUMMMX, fpus_internal, 125000000, 2.5, 3520, 0x1542, 0x1542, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 12,12,7,7, 15}, - {"150/60", CPU_PENTIUMMMX, fpus_internal, 150000000, 2.5, 3520, 0x1542, 0x1542, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 15,15,7,7, 35/2}, - {"166", CPU_PENTIUMMMX, fpus_internal, 166000000, 2.5, 3520, 0x1542, 0x1542, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 15,15,7,7, 20}, - {"180", CPU_PENTIUMMMX, fpus_internal, 180000000, 3.0, 3520, 0x1542, 0x1542, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 18,18,9,9, 21}, - {"200", CPU_PENTIUMMMX, fpus_internal, 200000000, 3.0, 3520, 0x1542, 0x1542, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 18,18,9,9, 24}, + {"75", CPU_PENTIUMMMX, fpus_internal, 75000000, 1.5, 3520, 0x1542, 0x1542, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 7, 7,4,4, 9}, + {"125", CPU_PENTIUMMMX, fpus_internal, 125000000, 2.5, 3520, 0x1542, 0x1542, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 12,12,7,7, 15}, + {"150/60", CPU_PENTIUMMMX, fpus_internal, 150000000, 2.5, 3520, 0x1542, 0x1542, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 15,15,7,7, 35/2}, + {"166", CPU_PENTIUMMMX, fpus_internal, 166000000, 2.5, 3520, 0x1542, 0x1542, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 15,15,7,7, 20}, + {"180", CPU_PENTIUMMMX, fpus_internal, 180000000, 3.0, 3520, 0x1542, 0x1542, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 18,18,9,9, 21}, + {"200", CPU_PENTIUMMMX, fpus_internal, 200000000, 3.0, 3520, 0x1542, 0x1542, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 18,18,9,9, 24}, {"", 0} } }, { @@ -851,18 +851,18 @@ const cpu_family_t cpu_families[] = { .name = "Pentium II OverDrive", .internal_name = "pentium2_od", .cpus = { - {"50", CPU_PENTIUM2D, fpus_internal, 50000000, 1.0, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 4, 4, 3, 3, 6}, - {"60", CPU_PENTIUM2D, fpus_internal, 60000000, 1.0, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 6, 6, 3, 3, 7}, - {"66", CPU_PENTIUM2D, fpus_internal, 66666666, 1.0, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 6, 6, 3, 3, 8}, - {"75", CPU_PENTIUM2D, fpus_internal, 75000000, 1.5, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 7, 7, 4, 4, 9}, - {"210", CPU_PENTIUM2D, fpus_internal, 210000000, 3.5, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 17,17, 7, 7, 25}, - {"233", CPU_PENTIUM2D, fpus_internal, 233333333, 3.5, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 21,21,10,10, 28}, - {"240", CPU_PENTIUM2D, fpus_internal, 240000000, 4.0, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 24,24,12,12, 29}, - {"266", CPU_PENTIUM2D, fpus_internal, 266666666, 4.0, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 24,24,12,12, 32}, - {"270", CPU_PENTIUM2D, fpus_internal, 270000000, 4.5, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 25,25,12,12, 33}, - {"300/66", CPU_PENTIUM2D, fpus_internal, 300000000, 4.5, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 25,25,12,12, 36}, - {"300/60", CPU_PENTIUM2D, fpus_internal, 300000000, 5.0, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 27,27,13,13, 36}, - {"333", CPU_PENTIUM2D, fpus_internal, 333333333, 5.0, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 27,27,13,13, 40}, + {"50", CPU_PENTIUM2D, fpus_internal, 50000000, 1.0, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 4, 4, 3, 3, 6}, + {"60", CPU_PENTIUM2D, fpus_internal, 60000000, 1.0, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 6, 6, 3, 3, 7}, + {"66", CPU_PENTIUM2D, fpus_internal, 66666666, 1.0, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 6, 6, 3, 3, 8}, + {"75", CPU_PENTIUM2D, fpus_internal, 75000000, 1.5, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 7, 7, 4, 4, 9}, + {"210", CPU_PENTIUM2D, fpus_internal, 210000000, 3.5, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 17,17, 7, 7, 25}, + {"233", CPU_PENTIUM2D, fpus_internal, 233333333, 3.5, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 21,21,10,10, 28}, + {"240", CPU_PENTIUM2D, fpus_internal, 240000000, 4.0, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 24,24,12,12, 29}, + {"266", CPU_PENTIUM2D, fpus_internal, 266666666, 4.0, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 24,24,12,12, 32}, + {"270", CPU_PENTIUM2D, fpus_internal, 270000000, 4.5, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 25,25,12,12, 33}, + {"300/66", CPU_PENTIUM2D, fpus_internal, 300000000, 4.5, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 25,25,12,12, 36}, + {"300/60", CPU_PENTIUM2D, fpus_internal, 300000000, 5.0, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 27,27,13,13, 36}, + {"333", CPU_PENTIUM2D, fpus_internal, 333333333, 5.0, 3300, 0x1632, 0x1632, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 27,27,13,13, 40}, {"", 0} } }, { @@ -918,18 +918,18 @@ const cpu_family_t cpu_families[] = { .name = "Celeron (Mendocino)", .internal_name = "celeron_mendocino", .cpus = { - {"66", CPU_PENTIUM2D, fpus_internal, 66666666, 1.0, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 6, 6, 3, 3, 8}, - {"100", CPU_PENTIUM2D, fpus_internal, 100000000, 1.5, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 10,10, 6, 6, 12}, - {"133", CPU_PENTIUM2D, fpus_internal, 133333333, 2.0, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 12,12, 6, 6, 16}, - {"166", CPU_PENTIUM2D, fpus_internal, 166666666, 2.5, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 15,15, 7, 7, 20}, - {"300/66", CPU_PENTIUM2D, fpus_internal, 300000000, 4.5, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 25,25,12,12, 36}, - {"333", CPU_PENTIUM2D, fpus_internal, 333333333, 5.0, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 27,27,13,13, 40}, - {"366", CPU_PENTIUM2D, fpus_internal, 366666666, 5.5, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 33,33,17,17, 44}, - {"400", CPU_PENTIUM2D, fpus_internal, 400000000, 6.0, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 36,36,12,12, 48}, - {"433", CPU_PENTIUM2D, fpus_internal, 433333333, 6.5, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 39,39,13,13, 51}, - {"466", CPU_PENTIUM2D, fpus_internal, 466666666, 7.0, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 42,42,14,14, 56}, - {"500", CPU_PENTIUM2D, fpus_internal, 500000000, 7.5, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 45,45,15,15, 60}, - {"533", CPU_PENTIUM2D, fpus_internal, 533333333, 8.0, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 48,48,17,17, 64}, + {"66", CPU_PENTIUM2D, fpus_internal, 66666666, 1.0, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 6, 6, 3, 3, 8}, + {"100", CPU_PENTIUM2D, fpus_internal, 100000000, 1.5, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 10,10, 6, 6, 12}, + {"133", CPU_PENTIUM2D, fpus_internal, 133333333, 2.0, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 12,12, 6, 6, 16}, + {"166", CPU_PENTIUM2D, fpus_internal, 166666666, 2.5, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 15,15, 7, 7, 20}, + {"300/66", CPU_PENTIUM2D, fpus_internal, 300000000, 4.5, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 25,25,12,12, 36}, + {"333", CPU_PENTIUM2D, fpus_internal, 333333333, 5.0, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 27,27,13,13, 40}, + {"366", CPU_PENTIUM2D, fpus_internal, 366666666, 5.5, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 33,33,17,17, 44}, + {"400", CPU_PENTIUM2D, fpus_internal, 400000000, 6.0, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 36,36,12,12, 48}, + {"433", CPU_PENTIUM2D, fpus_internal, 433333333, 6.5, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 39,39,13,13, 51}, + {"466", CPU_PENTIUM2D, fpus_internal, 466666666, 7.0, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 42,42,14,14, 56}, + {"500", CPU_PENTIUM2D, fpus_internal, 500000000, 7.5, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 45,45,15,15, 60}, + {"533", CPU_PENTIUM2D, fpus_internal, 533333333, 8.0, 2050, 0x665, 0x665, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC | CPU_FIXED_MULTIPLIER, 48,48,17,17, 64}, {"", 0} } }, { @@ -938,19 +938,19 @@ const cpu_family_t cpu_families[] = { .name = "Cyrix III", .internal_name = "c3_samuel", .cpus = { - {"66", CPU_CYRIX3S, fpus_internal, 66666666, 1.0, 2050, 0x660, 0x660, 0, CPU_SUPPORTS_DYNAREC, 6, 6, 3, 3, 8}, /*66 MHz version*/ - {"233", CPU_CYRIX3S, fpus_internal, 233333333, 3.5, 2050, 0x660, 0x660, 0, CPU_SUPPORTS_DYNAREC, 21, 21, 9, 9, 28}, - {"266", CPU_CYRIX3S, fpus_internal, 266666666, 4.0, 2050, 0x660, 0x660, 0, CPU_SUPPORTS_DYNAREC, 24, 24, 12, 12, 32}, - {"300", CPU_CYRIX3S, fpus_internal, 300000000, 4.5, 2050, 0x660, 0x660, 0, CPU_SUPPORTS_DYNAREC, 27, 27, 13, 13, 36}, - {"333", CPU_CYRIX3S, fpus_internal, 333333333, 5.0, 2050, 0x660, 0x660, 0, CPU_SUPPORTS_DYNAREC, 30, 30, 15, 15, 40}, - {"350", CPU_CYRIX3S, fpus_internal, 350000000, 3.5, 2050, 0x660, 0x660, 0, CPU_SUPPORTS_DYNAREC, 32, 32, 11, 11, 42}, - {"400", CPU_CYRIX3S, fpus_internal, 400000000, 4.0, 2050, 0x660, 0x660, 0, CPU_SUPPORTS_DYNAREC, 36, 36, 12, 12, 48}, - {"450", CPU_CYRIX3S, fpus_internal, 450000000, 4.5, 2050, 0x660, 0x660, 0, CPU_SUPPORTS_DYNAREC, 41, 41, 14, 14, 54}, /*^ is lower P2 speeds to allow emulation below 466 mhz*/ - {"500", CPU_CYRIX3S, fpus_internal, 500000000, 5.0, 2050, 0x660, 0x660, 0, CPU_SUPPORTS_DYNAREC, 45, 45, 15, 15, 60}, - {"550", CPU_CYRIX3S, fpus_internal, 550000000, 5.5, 2050, 0x662, 0x662, 0, CPU_SUPPORTS_DYNAREC, 50, 50, 17, 17, 66}, - {"600", CPU_CYRIX3S, fpus_internal, 600000000, 6.0, 2050, 0x662, 0x662, 0, CPU_SUPPORTS_DYNAREC, 54, 54, 18, 18, 72}, - {"650", CPU_CYRIX3S, fpus_internal, 650000000, 6.5, 2050, 0x662, 0x662, 0, CPU_SUPPORTS_DYNAREC, 58, 58, 20, 20, 78}, - {"700", CPU_CYRIX3S, fpus_internal, 700000000, 7.0, 2050, 0x662, 0x662, 0, CPU_SUPPORTS_DYNAREC, 62, 62, 21, 21, 84}, + {"66", CPU_CYRIX3S, fpus_internal, 66666666, 1.0, 2050, 0x660, 0x660, 0, CPU_SUPPORTS_DYNAREC | CPU_FIXED_MULTIPLIER, 6, 6, 3, 3, 8}, /*66 MHz version*/ + {"233", CPU_CYRIX3S, fpus_internal, 233333333, 3.5, 2050, 0x660, 0x660, 0, CPU_SUPPORTS_DYNAREC | CPU_FIXED_MULTIPLIER, 21, 21, 9, 9, 28}, + {"266", CPU_CYRIX3S, fpus_internal, 266666666, 4.0, 2050, 0x660, 0x660, 0, CPU_SUPPORTS_DYNAREC | CPU_FIXED_MULTIPLIER, 24, 24, 12, 12, 32}, + {"300", CPU_CYRIX3S, fpus_internal, 300000000, 4.5, 2050, 0x660, 0x660, 0, CPU_SUPPORTS_DYNAREC | CPU_FIXED_MULTIPLIER, 27, 27, 13, 13, 36}, + {"333", CPU_CYRIX3S, fpus_internal, 333333333, 5.0, 2050, 0x660, 0x660, 0, CPU_SUPPORTS_DYNAREC | CPU_FIXED_MULTIPLIER, 30, 30, 15, 15, 40}, + {"350", CPU_CYRIX3S, fpus_internal, 350000000, 3.5, 2050, 0x660, 0x660, 0, CPU_SUPPORTS_DYNAREC | CPU_FIXED_MULTIPLIER, 32, 32, 11, 11, 42}, + {"400", CPU_CYRIX3S, fpus_internal, 400000000, 4.0, 2050, 0x660, 0x660, 0, CPU_SUPPORTS_DYNAREC | CPU_FIXED_MULTIPLIER, 36, 36, 12, 12, 48}, + {"450", CPU_CYRIX3S, fpus_internal, 450000000, 4.5, 2050, 0x660, 0x660, 0, CPU_SUPPORTS_DYNAREC | CPU_FIXED_MULTIPLIER, 41, 41, 14, 14, 54}, /*^ is lower P2 speeds to allow emulation below 466 mhz*/ + {"500", CPU_CYRIX3S, fpus_internal, 500000000, 5.0, 2050, 0x660, 0x660, 0, CPU_SUPPORTS_DYNAREC | CPU_FIXED_MULTIPLIER, 45, 45, 15, 15, 60}, + {"550", CPU_CYRIX3S, fpus_internal, 550000000, 5.5, 2050, 0x662, 0x662, 0, CPU_SUPPORTS_DYNAREC | CPU_FIXED_MULTIPLIER, 50, 50, 17, 17, 66}, + {"600", CPU_CYRIX3S, fpus_internal, 600000000, 6.0, 2050, 0x662, 0x662, 0, CPU_SUPPORTS_DYNAREC | CPU_FIXED_MULTIPLIER, 54, 54, 18, 18, 72}, + {"650", CPU_CYRIX3S, fpus_internal, 650000000, 6.5, 2050, 0x662, 0x662, 0, CPU_SUPPORTS_DYNAREC | CPU_FIXED_MULTIPLIER, 58, 58, 20, 20, 78}, + {"700", CPU_CYRIX3S, fpus_internal, 700000000, 7.0, 2050, 0x662, 0x662, 0, CPU_SUPPORTS_DYNAREC | CPU_FIXED_MULTIPLIER, 62, 62, 21, 21, 84}, {"", 0} } }, { diff --git a/src/include/86box/machine.h b/src/include/86box/machine.h index 03e422001..9cb155f81 100644 --- a/src/include/86box/machine.h +++ b/src/include/86box/machine.h @@ -85,6 +85,8 @@ #define IS_ARCH(m, a) (machines[(m)].flags & (a)) ? 1 : 0; +#define MACHINE_MULTIPLIER_FIXED -1, -1 + enum { MACHINE_TYPE_NONE = 0, diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index 937314deb..56fc00fec 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -215,10 +215,10 @@ const machine_t machines[] = { { "[SiS 496] Soyo 4SA2", "4sa2", MACHINE_TYPE_486, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_IDE_DUAL, 1, 255, 1, 255, machine_at_4sa2_init, NULL }, { "[SiS 496] Zida Tomato 4DP", "4dps", MACHINE_TYPE_486, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_IDE_DUAL, 1, 255, 1, 255, machine_at_4dps_init, NULL }, #if defined(DEV_BRANCH) && defined(USE_STPC) - { "[STPC Client] ITOX STAR", "itoxstar", MACHINE_TYPE_486, CPU_PKG_STPC, 0, 66666667, 75000000, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 255, machine_at_itoxstar_init, NULL }, - { "[STPC Consumer-II] Acrosser AR-B1479", "arb1479", MACHINE_TYPE_486, CPU_PKG_STPC, 0, 66666667, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 32, 160, 8, 255, machine_at_arb1479_init, NULL }, - { "[STPC Elite] Advantech PCM-9340", "pcm9340", MACHINE_TYPE_486, CPU_PKG_STPC, 0, 66666667, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 32, 96, 8, 255, machine_at_pcm9340_init, NULL }, - { "[STPC Atlas] AAEON PCM-5330", "pcm5330", MACHINE_TYPE_486, CPU_PKG_STPC, 0, 66666667, 66666667, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 32, 128, 32, 255, machine_at_pcm5330_init, NULL }, + { "[STPC Client] ITOX STAR", "itoxstar", MACHINE_TYPE_486, CPU_PKG_STPC, 0, 66666667, 75000000, 0, 0, 1.0, 1.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 128, 8, 255, machine_at_itoxstar_init, NULL }, + { "[STPC Consumer-II] Acrosser AR-B1479", "arb1479", MACHINE_TYPE_486, CPU_PKG_STPC, 0, 66666667, 66666667, 0, 0, 2.0, 2.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 32, 160, 8, 255, machine_at_arb1479_init, NULL }, + { "[STPC Elite] Advantech PCM-9340", "pcm9340", MACHINE_TYPE_486, CPU_PKG_STPC, 0, 66666667, 66666667, 0, 0, 2.0, 2.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 32, 96, 8, 255, machine_at_pcm9340_init, NULL }, + { "[STPC Atlas] AAEON PCM-5330", "pcm5330", MACHINE_TYPE_486, CPU_PKG_STPC, 0, 66666667, 66666667, 0, 0, 2.0, 2.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 32, 128, 32, 255, machine_at_pcm5330_init, NULL }, #endif #if defined(DEV_BRANCH) && defined(NO_SIO) { "[VIA VT82C496G] FIC VIP-IO2", "486vipio2", MACHINE_TYPE_486, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCIV | MACHINE_IDE_DUAL, 1, 128, 1, 255, machine_at_486vipio2_init, NULL }, @@ -226,16 +226,16 @@ const machine_t machines[] = { /* Socket 4 machines */ /* 430LX */ - { "[i430LX] ASUS P/I-P5MP3", "p5mp3", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 1.0, 1.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE, 2, 192, 2, 127, machine_at_p5mp3_init, NULL }, + { "[i430LX] ASUS P/I-P5MP3", "p5mp3", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, MACHINE_MULTIPLIER_FIXED, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE, 2, 192, 2, 127, machine_at_p5mp3_init, NULL }, #if defined(DEV_BRANCH) && defined(USE_DELLS4) - { "[i430LX] Dell Dimension XPS P60", "dellxp60", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 1.0, 1.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE, 2, 128, 2, 127, machine_at_dellxp60_init, NULL }, - { "[i430LX] Dell OptiPlex 560/L", "opti560l", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 1.0, 1.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_opti560l_init, NULL }, + { "[i430LX] Dell Dimension XPS P60", "dellxp60", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, MACHINE_MULTIPLIER_FIXED, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE, 2, 128, 2, 127, machine_at_dellxp60_init, NULL }, + { "[i430LX] Dell OptiPlex 560/L", "opti560l", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, MACHINE_MULTIPLIER_FIXED, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_opti560l_init, NULL }, #endif - { "[i430LX] IBM Ambra DP60 PCI", "ambradp60", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 1.0, 1.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_ambradp60_init, NULL }, - { "[i430LX] IBM PS/ValuePoint P60", "valuepointp60", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 1.0, 1.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_valuepointp60_init, NULL }, - { "[i430LX] Intel Premiere/PCI", "revenge", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 1.0, 1.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_batman_init, NULL }, - { "[i430LX] Micro Star 586MC1", "586mc1", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 1.0, 1.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_586mc1_init, NULL }, - { "[i430LX] Packard Bell PB520R", "pb520r", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 1.0, 1.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8, 136, 2, 127, machine_at_pb520r_init, at_pb520r_get_device }, + { "[i430LX] IBM Ambra DP60 PCI", "ambradp60", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, MACHINE_MULTIPLIER_FIXED, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_ambradp60_init, NULL }, + { "[i430LX] IBM PS/ValuePoint P60", "valuepointp60", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, MACHINE_MULTIPLIER_FIXED, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_valuepointp60_init, NULL }, + { "[i430LX] Intel Premiere/PCI", "revenge", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, MACHINE_MULTIPLIER_FIXED, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_batman_init, NULL }, + { "[i430LX] Micro Star 586MC1", "586mc1", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, MACHINE_MULTIPLIER_FIXED, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2, 128, 2, 127, machine_at_586mc1_init, NULL }, + { "[i430LX] Packard Bell PB520R", "pb520r", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, MACHINE_MULTIPLIER_FIXED, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8, 136, 2, 127, machine_at_pb520r_init, at_pb520r_get_device }, /* OPTi 596/597 */ { "[OPTi 597] AMI Excalibur VLB", "excalibur", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 0, 0, 1.0, 1.0, MACHINE_VLB | MACHINE_IDE, 2, 64, 2, 127, machine_at_excalibur_init, NULL }, @@ -361,7 +361,7 @@ const machine_t machines[] = { /* PGA370 machines */ /* 440LX */ - { "[i440LX] SuperMicro Super 370SLM", "s370slm", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 100000000, 1800, 3500, 0.1, 0.1, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_s370slm_init, NULL }, + { "[i440LX] SuperMicro Super 370SLM", "s370slm", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 100000000, 1800, 3500, MACHINE_MULTIPLIER_FIXED, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_s370slm_init, NULL }, /* 440BX */ { "[i440BX] AEWIN AW-O671R", "awo671r", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1800, 3500, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 255, machine_at_awo671r_init, NULL }, From fb2400cce97275698926fc00addf53f62d320820 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Thu, 19 Nov 2020 14:30:53 -0300 Subject: [PATCH 23/28] Added A-Trend board multiplier values ascertained from manuals for similar boards --- src/machine/machine_table.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index 56fc00fec..d953e5b82 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -339,7 +339,7 @@ const machine_t machines[] = { { "[i440BX] ASUS P3B-F", "p3bf", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 150000000, 1800, 3500, 2.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_p3bf_init, NULL }, { "[i440BX] ABIT BF6", "bf6", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 133333333, 1800, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_bf6_init, NULL }, { "[i440BX] AOpen AX6BC", "ax6bc", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 112121212, 1800, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_ax6bc_init, NULL }, - { "[i440BX] A-Trend ATC6310BXII", "atc6310bxii", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 133333333, 1800, 3500, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_atc6310bxii_init, NULL }, + { "[i440BX] A-Trend ATC6310BXII", "atc6310bxii", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 133333333, 1800, 3500, 3.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_atc6310bxii_init, NULL }, { "[i440BX] Gigabyte GA-686BX", "ga686bx", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 100000000, 1800, 3500, 3.0, 5.5, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_ga686bx_init, NULL }, { "[i440BX] Tyan Tsunami ATX", "tsunamiatx", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 112121212, 1800, 3500, 3.5, 5.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_SOUND, 8, 1024, 8, 255, machine_at_tsunamiatx_init, at_tsunamiatx_get_device }, { "[i440BX] SuperMicro Super P6SBA", "p6sba", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 100000000, 1800, 3500, 3.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_p6sba_init, NULL }, @@ -366,7 +366,7 @@ const machine_t machines[] = { /* 440BX */ { "[i440BX] AEWIN AW-O671R", "awo671r", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1800, 3500, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 255, machine_at_awo671r_init, NULL }, { "[i440BX] ASUS CUBX", "cubx", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 150000000, 1800, 3500, 2.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_cubx_init, NULL }, - { "[i440BX] A-Trend ATC7020BXII", "atc7020bxii", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1800, 3500, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_atc7020bxii_init, NULL }, + { "[i440BX] A-Trend ATC7020BXII", "atc7020bxii", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1800, 3500, 3.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_atc7020bxii_init, NULL }, { "[i440BX] AmazePC AM-BX133", "ambx133", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1800, 3500, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_ambx133_init, NULL }, { "[i440BX] Tyan Trinity 371", "trinity371", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1800, 3500, 3.5, 7.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_trinity371_init, NULL }, From a77a312211067ba60fc664c4d6ea067f47ae9fb5 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Thu, 19 Nov 2020 14:43:22 -0300 Subject: [PATCH 24/28] Same for the 6VIA85{T|X}, which appear to have a fixed multiplier --- src/machine/machine_table.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index d953e5b82..3e2c3c580 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -376,9 +376,9 @@ const machine_t machines[] = { /* VIA Apollo Pro */ { "[VIA Apollo Pro] PC Partner APAS3", "apas3", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 100000000, 1800, 3500, 3.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_apas3_init, NULL }, { "[VIA Apollo Pro133A] AEWIN WCF-681", "wcf681", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1800, 3500, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_wcf681_init, NULL }, - { "[VIA Apollo Pro133A] Acorp 6VIA85X", "6via85x", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1800, 3500, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_6via85x_init, NULL }, + { "[VIA Apollo Pro133A] Acorp 6VIA85X", "6via85x", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1800, 3500, MACHINE_MULTIPLIER_FIXED, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_6via85x_init, NULL }, { "[VIA Apollo Pro133A] ECS P6BAP", "p6bap", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 150000000, 1800, 3500, 2.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_p6bap_init, NULL }, - { "[VIA Apollo ProMedia] Jetway 603TCF", "603tcf", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 150000000, 1800, 3500, 2.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 255, machine_at_603tcf_init, NULL }, + { "[VIA Apollo ProMedia] Jetway 603TCF", "603tcf", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 150000000, 1800, 3500, 2.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 255, machine_at_603tcf_init, NULL }, /* Miscellaneous/Fake/Hypervisor machines */ { "[i440BX] Microsoft Virtual PC 2007", "vpc2007", MACHINE_TYPE_MISC, CPU_PKG_SLOT1, CPU_PENTIUM2 | CPU_CYRIX3S, 0, 0, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_vpc2007_init, NULL }, From 919e22192f1b481f65f5ad3fee0e6eef67a43fd4 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Thu, 19 Nov 2020 14:57:15 -0300 Subject: [PATCH 25/28] Fix hardware monitor values in some outstanding machines --- src/machine/m_at_socket370.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/machine/m_at_socket370.c b/src/machine/m_at_socket370.c index 75ac5ab46..4bd1a9fc0 100644 --- a/src/machine/m_at_socket370.c +++ b/src/machine/m_at_socket370.c @@ -125,8 +125,8 @@ machine_at_p6bap_init(const machine_t *model) pci_register_slot(0x11, PCI_CARD_NORMAL, 1, 2, 3, 4); pci_register_slot(0x10, PCI_CARD_NORMAL, 2, 3, 4, 1); pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4); - device_add(&via_apro133a_device); //Rebranded as ET82C693A - device_add(&via_vt82c596b_device); //Rebranded as ET82C696B + device_add(&via_apro133a_device); /* Rebranded as ET82C693A */ + device_add(&via_vt82c596b_device); /* Rebranded as ET82C696B */ device_add(&w83977ef_device); device_add(&keyboard_ps2_ami_pci_device); device_add(&sst_flash_39sf020_device); @@ -356,7 +356,13 @@ machine_at_wcf681_init(const machine_t *model) device_add(&w83977tf_device); device_add(&keyboard_ps2_ami_pci_device); device_add(&sst_flash_39sf020_device); - spd_register(SPD_TYPE_SDRAM, 0x7, 256); + spd_register(SPD_TYPE_SDRAM, 0x3, 256); + device_add(&w83781d_device); /* fans: CPU, unused, unused; temperatures: System, unused, CPU */ + hwm_values.voltages[1] = 2500; /* +2.5V */ + hwm_values.fans[1] = 0; /* unused */ + hwm_values.fans[2] = 0; /* unused */ + hwm_values.temperatures[1] = 0; /* unused */ + return ret; } @@ -388,7 +394,10 @@ machine_at_6via85x_init(const machine_t *model) device_add(&keyboard_ps2_ami_pci_device); device_add(&sst_flash_39sf020_device); spd_register(SPD_TYPE_SDRAM, 0x7, 256); - device_add(&via_vt82c686_hwm_device); + device_add(&via_vt82c686_hwm_device); /* fans: CPU1, CPU2; temperatures: CPU, System, unused */ + hwm_values.temperatures[0] += 2; /* CPU offset */ + hwm_values.temperatures[1] += 2; /* System offset */ + hwm_values.temperatures[2] = 0; /* unused */ return ret; } @@ -420,7 +429,10 @@ machine_at_603tcf_init(const machine_t *model) device_add(&keyboard_ps2_ami_pci_device); device_add(&sst_flash_39sf020_device); spd_register(SPD_TYPE_SDRAM, 0x3, 256); - device_add(&via_vt82c686_hwm_device); + device_add(&via_vt82c686_hwm_device); /* fans: 1, 2; temperatures: CPU, System, unused */ + hwm_values.temperatures[0] += 2; /* CPU offset */ + hwm_values.temperatures[1] += 2; /* System offset */ + hwm_values.temperatures[2] = 0; /* unused */ return ret; } From 792d6e8be126b9c4092306049f2e0645a11fe5da Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Thu, 19 Nov 2020 15:14:18 -0300 Subject: [PATCH 26/28] The Apollo Pro 133 family supports 512 MB DIMMs --- src/machine/m_at_socket370.c | 6 +++--- src/machine/machine_table.c | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/machine/m_at_socket370.c b/src/machine/m_at_socket370.c index 4bd1a9fc0..9a3e5f3c4 100644 --- a/src/machine/m_at_socket370.c +++ b/src/machine/m_at_socket370.c @@ -356,7 +356,7 @@ machine_at_wcf681_init(const machine_t *model) device_add(&w83977tf_device); device_add(&keyboard_ps2_ami_pci_device); device_add(&sst_flash_39sf020_device); - spd_register(SPD_TYPE_SDRAM, 0x3, 256); + spd_register(SPD_TYPE_SDRAM, 0x3, 512); device_add(&w83781d_device); /* fans: CPU, unused, unused; temperatures: System, unused, CPU */ hwm_values.voltages[1] = 2500; /* +2.5V */ hwm_values.fans[1] = 0; /* unused */ @@ -393,7 +393,7 @@ machine_at_6via85x_init(const machine_t *model) device_add(&via_vt82c686_sio_device); device_add(&keyboard_ps2_ami_pci_device); device_add(&sst_flash_39sf020_device); - spd_register(SPD_TYPE_SDRAM, 0x7, 256); + spd_register(SPD_TYPE_SDRAM, 0x7, 512); device_add(&via_vt82c686_hwm_device); /* fans: CPU1, CPU2; temperatures: CPU, System, unused */ hwm_values.temperatures[0] += 2; /* CPU offset */ hwm_values.temperatures[1] += 2; /* System offset */ @@ -428,7 +428,7 @@ machine_at_603tcf_init(const machine_t *model) device_add(&via_vt82c686_sio_device); device_add(&keyboard_ps2_ami_pci_device); device_add(&sst_flash_39sf020_device); - spd_register(SPD_TYPE_SDRAM, 0x3, 256); + spd_register(SPD_TYPE_SDRAM, 0x3, 512); device_add(&via_vt82c686_hwm_device); /* fans: 1, 2; temperatures: CPU, System, unused */ hwm_values.temperatures[0] += 2; /* CPU offset */ hwm_values.temperatures[1] += 2; /* System offset */ diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index 3e2c3c580..588b0430b 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -375,10 +375,10 @@ const machine_t machines[] = { /* VIA Apollo Pro */ { "[VIA Apollo Pro] PC Partner APAS3", "apas3", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 100000000, 1800, 3500, 3.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_apas3_init, NULL }, - { "[VIA Apollo Pro133A] AEWIN WCF-681", "wcf681", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1800, 3500, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_wcf681_init, NULL }, - { "[VIA Apollo Pro133A] Acorp 6VIA85X", "6via85x", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1800, 3500, MACHINE_MULTIPLIER_FIXED, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_6via85x_init, NULL }, - { "[VIA Apollo Pro133A] ECS P6BAP", "p6bap", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 150000000, 1800, 3500, 2.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 768, 8, 255, machine_at_p6bap_init, NULL }, - { "[VIA Apollo ProMedia] Jetway 603TCF", "603tcf", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 150000000, 1800, 3500, 2.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 512, 8, 255, machine_at_603tcf_init, NULL }, + { "[VIA Apollo Pro133A] AEWIN WCF-681", "wcf681", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1800, 3500, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_wcf681_init, NULL }, + { "[VIA Apollo Pro133A] Acorp 6VIA85X", "6via85x", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1800, 3500, MACHINE_MULTIPLIER_FIXED, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1536, 8, 255, machine_at_6via85x_init, NULL }, + { "[VIA Apollo Pro133A] ECS P6BAP", "p6bap", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 150000000, 1800, 3500, 2.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1536, 8, 255, machine_at_p6bap_init, NULL }, + { "[VIA Apollo ProMedia] Jetway 603TCF", "603tcf", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 150000000, 1800, 3500, 2.0, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_603tcf_init, NULL }, /* Miscellaneous/Fake/Hypervisor machines */ { "[i440BX] Microsoft Virtual PC 2007", "vpc2007", MACHINE_TYPE_MISC, CPU_PKG_SLOT1, CPU_PENTIUM2 | CPU_CYRIX3S, 0, 0, 0, 0, 0, 0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8, 1024, 8, 255, machine_at_vpc2007_init, NULL }, From d51afdea8cff9fd1582464abd7df7f1c9a3bc748 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Thu, 19 Nov 2020 15:45:12 -0300 Subject: [PATCH 27/28] Fix 80-conductor cable GPIOs for WCF-681 and 6VIA85X --- src/acpi.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/acpi.c b/src/acpi.c index cbf7345c9..48ff9b510 100644 --- a/src/acpi.c +++ b/src/acpi.c @@ -35,6 +35,7 @@ #include <86box/pit.h> #include <86box/apm.h> #include <86box/acpi.h> +#include <86box/machine.h> #ifdef ENABLE_ACPI_LOG @@ -1156,8 +1157,14 @@ acpi_reset(void *priv) - Bit 11: ATX power (active high) - Bit 4: 80-conductor cable on primary IDE channel (active low) - Bit 3: 80-conductor cable on secondary IDE channel (active low) - - Bit 2: password cleared (active low) */ - dev->regs.gpi_val = 0xffffffe7; + - Bit 2: password cleared (active low) + AEWIN WCF-681: + - Bit 3: 80-conductor cable on primary IDE channel (active low) + - Bit 2: 80-conductor cable on secondary IDE channel (active low) + Acorp 6VIA85X: + - Bit 3: 80-conductor cable on secondary IDE channel (active low) + - Bit 1: 80-conductor cable on primary IDE channel (active low) */ + dev->regs.gpi_val = !strcmp(machines[machine].internal_name, "wcf681") ? 0xffffffe3 : 0xffffffe5; } } From 833635afaa02fc602d79f0be0a03bd49f9818e9d Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Thu, 19 Nov 2020 15:49:32 -0300 Subject: [PATCH 28/28] Fix crash in standalone settings mode --- src/mem/rom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mem/rom.c b/src/mem/rom.c index 56bc6314f..fc827539b 100644 --- a/src/mem/rom.c +++ b/src/mem/rom.c @@ -364,7 +364,7 @@ bios_add(void) { int temp_cpu_type, temp_cpu_16bitbus = 1; - if (AT) { + if (AT && cpu_s) { temp_cpu_type = cpu_s->cpu_type; temp_cpu_16bitbus = (temp_cpu_type == CPU_286 || temp_cpu_type == CPU_386SX || temp_cpu_type == CPU_486SLC || temp_cpu_type == CPU_IBM386SLC || temp_cpu_type == CPU_IBM486SLC ); }