From 10212afee56745e04770dc641d74b357c06a2caf Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Mon, 23 Nov 2020 14:48:32 -0300 Subject: [PATCH] Add CPU table override config variable --- src/config.c | 5 +++++ src/cpu/cpu.c | 7 +++++++ src/cpu/cpu.h | 1 + 3 files changed, 13 insertions(+) diff --git a/src/config.c b/src/config.c index bf74de17f..d36e11b26 100644 --- a/src/config.c +++ b/src/config.c @@ -625,6 +625,7 @@ 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); @@ -1787,6 +1788,10 @@ save_machine(void) 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); + if (cpu_override) + config_set_int(cat, "cpu_override", cpu_override); + else + config_delete_var(cat, "cpu_override"); /* Forwards compatibility with the previous CPU model system. */ config_delete_var(cat, "cpu_manufacturer"); diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index d434b4e29..536f52a84 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -152,6 +152,7 @@ uint32_t smbase = 0x30000; cpu_family_t *cpu_f; CPU *cpu_s; +int cpu_override; int cpu_effective; int cpu_multi; double cpu_dmulti; @@ -331,6 +332,9 @@ cpu_get_family(const char *internal_name) uint8_t cpu_is_eligible(const cpu_family_t *cpu_family, int cpu, int machine) { + if (cpu_override > 1) /* full override */ + return 1; + /* Get machine. */ const machine_t *machine_s = &machines[machine]; @@ -344,6 +348,9 @@ cpu_is_eligible(const cpu_family_t *cpu_family, int cpu, int machine) if (!(cpu_family->package & packages)) /* package type */ return 0; + if (cpu_override) /* partial override */ + return 1; + const CPU *cpu_s = &cpu_family->cpus[cpu]; if (machine_s->cpu_block & cpu_s->cpu_type) /* CPU type blocklist */ diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h index bb89d53ca..73f9524ad 100644 --- a/src/cpu/cpu.h +++ b/src/cpu/cpu.h @@ -375,6 +375,7 @@ 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; +extern int cpu_override; extern int cpu_isintel; extern int cpu_iscyrix;