From: Thomas Huth <thuth@redhat.com>
Now that we can run in both, x86_64 and i386 mode with one binary,
we must not hard-code the suffix of the CPU names here anymore.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
target/i386/cpu.h | 1 +
hw/i386/isapc.c | 18 ++++++++++--------
target/i386/cpu.c | 2 +-
3 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
index 38309773ea8..78f2dadc2e3 100644
--- a/target/i386/cpu.h
+++ b/target/i386/cpu.h
@@ -2722,6 +2722,7 @@ void mark_unavailable_features(X86CPU *cpu, FeatureWord w, uint64_t mask,
const char *verbose_prefix);
void mark_forced_on_features(X86CPU *cpu, FeatureWord w, uint64_t mask,
const char *verbose_prefix);
+char *x86_cpu_type_name(const char *model_name);
static inline bool x86_has_cpuid_0x1f(X86CPU *cpu)
{
diff --git a/hw/i386/isapc.c b/hw/i386/isapc.c
index 1ba9ae22cc3..c772b7f533a 100644
--- a/hw/i386/isapc.c
+++ b/hw/i386/isapc.c
@@ -43,13 +43,13 @@ static void pc_init_isa(MachineState *machine)
bool valid_cpu_type = false;
static const char * const valid_cpu_types[] = {
- X86_CPU_TYPE_NAME("486"),
- X86_CPU_TYPE_NAME("athlon"),
- X86_CPU_TYPE_NAME("kvm32"),
- X86_CPU_TYPE_NAME("pentium"),
- X86_CPU_TYPE_NAME("pentium2"),
- X86_CPU_TYPE_NAME("pentium3"),
- X86_CPU_TYPE_NAME("qemu32"),
+ "486",
+ "athlon",
+ "kvm32",
+ "pentium",
+ "pentium2",
+ "pentium3",
+ "qemu32",
};
/*
@@ -59,8 +59,10 @@ static void pc_init_isa(MachineState *machine)
* a warning if anyone tries to use a deprecated CPU.
*/
for (i = 0; i < ARRAY_SIZE(valid_cpu_types); i++) {
- if (!strcmp(machine->cpu_type, valid_cpu_types[i])) {
+ g_autofree char *valid_cpu = x86_cpu_type_name(valid_cpu_types[i]);
+ if (!strcmp(machine->cpu_type, valid_cpu)) {
valid_cpu_type = true;
+ break;
}
}
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 98e03cb9a88..a8ff1b29f33 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -2274,7 +2274,7 @@ void host_cpuid(uint32_t function, uint32_t count,
/* Return type name for a given CPU model name
* Caller is responsible for freeing the returned string.
*/
-static char *x86_cpu_type_name(const char *model_name)
+char *x86_cpu_type_name(const char *model_name)
{
if (target_i386()) {
return g_strdup_printf("%s" I386_CPU_TYPE_SUFFIX, model_name);
--
2.53.0