From 5dce64a3962fbddf9792deb41d4006b305606d67 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Mon, 7 Dec 2020 21:06:29 -0300 Subject: [PATCH] Fix CPU override feature --- src/config.c | 8 ++++-- src/cpu/cpu_table.c | 68 ++++++++++++++++++++++----------------------- 2 files changed, 39 insertions(+), 37 deletions(-) diff --git a/src/config.c b/src/config.c index a2aa1b19d..1427fbcf7 100644 --- a/src/config.c +++ b/src/config.c @@ -541,6 +541,7 @@ load_machine(void) if (machine >= machine_count()) machine = machine_count() - 1; + cpu_override = config_get_int(cat, "cpu_override", 0); cpu_f = NULL; p = config_get_string(cat, "cpu_family", NULL); if (p) { @@ -627,7 +628,6 @@ load_machine(void) } } cpu_s = (CPU *) &cpu_f->cpus[cpu]; - cpu_override = config_get_int(cat, "cpu_override", 0); cpu_waitstates = config_get_int(cat, "cpu_waitstates", 0); @@ -1885,7 +1885,7 @@ save_machine(void) continue; i = 0; - do { + while (cpu_legacy_table[c].tables[legacy_mfg][i].rspeed) { legacy_table_entry = (cpu_legacy_table_t *) &cpu_legacy_table[c].tables[legacy_mfg][i]; /* Match the family name, speed and multiplier. */ @@ -1899,7 +1899,9 @@ save_machine(void) closest_legacy_cpu = i; } } - } while (cpu_legacy_table[c].tables[legacy_mfg][++i].family); + + i++; + } /* Use the closest speed match if no exact match was found. */ if ((legacy_cpu == -1) && (closest_legacy_cpu > -1)) { diff --git a/src/cpu/cpu_table.c b/src/cpu/cpu_table.c index ae4c3d60c..4d26dcaa2 100644 --- a/src/cpu/cpu_table.c +++ b/src/cpu/cpu_table.c @@ -1611,40 +1611,40 @@ static const cpu_legacy_table_t cpus_Cyrix3[] = { {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}; +static const cpu_legacy_table_t *cputables_8088[4] = {cpus_8088}; +static const cpu_legacy_table_t *cputables_pcjr[4] = {cpus_pcjr}; +static const cpu_legacy_table_t *cputables_europc[4] = {cpus_europc}; +static const cpu_legacy_table_t *cputables_pc1512[4] = {cpus_pc1512}; +static const cpu_legacy_table_t *cputables_8086[4] = {cpus_8086}; +static const cpu_legacy_table_t *cputables_286[4] = {cpus_286}; +static const cpu_legacy_table_t *cputables_ibmat[4] = {cpus_ibmat}; +static const cpu_legacy_table_t *cputables_ps1_m2011[4] = {cpus_ps1_m2011}; +static const cpu_legacy_table_t *cputables_ps2_m30_286_IBM486SLC[4] = {cpus_ps2_m30_286, cpus_IBM486SLC}; +static const cpu_legacy_table_t *cputables_ibmxt286[4] = {cpus_ibmxt286}; +static const cpu_legacy_table_t *cputables_i386SX_Am386SX_486SLC[4] = {cpus_i386SX, cpus_Am386SX, cpus_486SLC}; +static const cpu_legacy_table_t *cputables_ALiM6117[4] = {cpus_ALiM6117}; +static const cpu_legacy_table_t *cputables_i386SX_Am386SX_486SLC_IBM486SLC[4] = {cpus_i386SX, cpus_Am386SX, cpus_486SLC, cpus_IBM486SLC}; +static const cpu_legacy_table_t *cputables_i386DX_Am386DX_486DLC[4] = {cpus_i386DX, cpus_Am386DX, cpus_486DLC}; +static const cpu_legacy_table_t *cputables_i386DX_Am386DX_486DLC_IBM486BL[4] = {cpus_i386DX, cpus_Am386DX, cpus_486DLC, cpus_IBM486BL}; +static const cpu_legacy_table_t *cputables_i486_Am486_Cx486[4] = {cpus_i486, cpus_Am486, cpus_Cx486}; +static const cpu_legacy_table_t *cputables_i486S1_Am486S1_Cx486S1[4] = {cpus_i486S1, cpus_Am486S1, cpus_Cx486S1}; +static const cpu_legacy_table_t *cputables_IBM486SLC[4] = {cpus_IBM486SLC}; +static const cpu_legacy_table_t *cputables_i486_PC330[4] = {cpus_i486_PC330}; +static const cpu_legacy_table_t *cputables_STPCDX[4] = {cpus_STPCDX}; +static const cpu_legacy_table_t *cputables_STPCDX2[4] = {cpus_STPCDX2}; +static const cpu_legacy_table_t *cputables_Pentium5V[4] = {cpus_Pentium5V}; +static const cpu_legacy_table_t *cputables_PentiumS5_WinChip_K5[4] = {cpus_PentiumS5, cpus_WinChip, cpus_K5}; +static const cpu_legacy_table_t *cputables_Pentium3V_WinChip_K5_6x863V[4] = {cpus_Pentium3V, cpus_WinChip, cpus_K5, cpus_6x863V}; +static const cpu_legacy_table_t *cputables_Pentium3V_K5[4] = {cpus_Pentium3V, cpus_K5}; +static const cpu_legacy_table_t *cputables_Pentium_WinChip_K56_6x86[4] = {cpus_Pentium, cpus_WinChip, cpus_K56, cpus_6x86}; +static const cpu_legacy_table_t *cputables_Pentium_WinChip_SS7_K56_SS7_6x86SS7[4] = {cpus_Pentium, cpus_WinChip_SS7, cpus_K56_SS7, cpus_6x86SS7}; +static const cpu_legacy_table_t *cputables_PentiumPro[4] = {cpus_PentiumPro}; +static const cpu_legacy_table_t *cputables_PentiumII66[4] = {cpus_PentiumII66}; +static const cpu_legacy_table_t *cputables_PentiumII_Celeron_Cyrix3[4] = {cpus_PentiumII, cpus_Celeron, cpus_Cyrix3}; +static const cpu_legacy_table_t *cputables_Xeon[4] = {cpus_Xeon}; +static const cpu_legacy_table_t *cputables_Celeron_Cyrix3[4] = {cpus_Celeron, cpus_Cyrix3}; +static const cpu_legacy_table_t *cputables_Celeron[4] = {cpus_Celeron}; +static const cpu_legacy_table_t *cputables_PentiumIID_Celeron[4] = {cpus_PentiumIID, cpus_Celeron}; const cpu_legacy_machine_t cpu_legacy_table[] = { {"ibmpc", cputables_8088},