aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Mammedov <imammedo@redhat.com>2017-10-05 15:50:48 +0200
committerEduardo Habkost <ehabkost@redhat.com>2017-10-27 16:03:54 +0200
commita7f981cc9f3e5a99c6690c144ba1d6a77394c39b (patch)
treeff435730637b2ec776421b50d98078ce6f409ae4
parentddbcc16f29d41176769881ca40830015e249c749 (diff)
moxie: fix qemu-system-moxie failing to start with CLI "-cpu MoxieLite"
It 'works' with default CPU only because of bug in moxie_cpu_class_by_name() where it treats cpu_model as type name and default cpu_model also happens to be type name. But specifying explicitly cpu on CLI, ex: '-cpu MoxieLite', makes QEMU fail since moxie_cpu_class_by_name() doesn't traslate cpu_model to cpu type and fails to find corresponding object class. Fix moxie_cpu_class_by_name() to do proper cpu_model -> cpu type translation and fix default cpu_model to be cpu_model instead of being typename. Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-Id: <1507211474-188400-15-git-send-email-imammedo@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
-rw-r--r--hw/moxie/moxiesim.c2
-rw-r--r--target/moxie/cpu.c7
2 files changed, 7 insertions, 2 deletions
diff --git a/hw/moxie/moxiesim.c b/hw/moxie/moxiesim.c
index 5ea8dd3a93..01b9f34f87 100644
--- a/hw/moxie/moxiesim.c
+++ b/hw/moxie/moxiesim.c
@@ -116,7 +116,7 @@ static void moxiesim_init(MachineState *machine)
/* Init CPUs. */
if (cpu_model == NULL) {
- cpu_model = "MoxieLite-moxie-cpu";
+ cpu_model = "MoxieLite";
}
cpu = MOXIE_CPU(cpu_generic_init(TYPE_MOXIE_CPU, cpu_model));
env = &cpu->env;
diff --git a/target/moxie/cpu.c b/target/moxie/cpu.c
index 24ab3f3708..44441b2cf2 100644
--- a/target/moxie/cpu.c
+++ b/target/moxie/cpu.c
@@ -83,7 +83,12 @@ static void moxie_cpu_initfn(Object *obj)
static ObjectClass *moxie_cpu_class_by_name(const char *cpu_model)
{
- ObjectClass *oc = object_class_by_name(cpu_model);
+ ObjectClass *oc;
+ char *typename;
+
+ typename = g_strdup_printf("%s-" TYPE_MOXIE_CPU, cpu_model);
+ oc = object_class_by_name(typename);
+ g_free(typename);
if (oc != NULL && (!object_class_dynamic_cast(oc, TYPE_MOXIE_CPU) ||
object_class_is_abstract(oc))) {
return NULL;