Ver Fonte

target/hppa: Implement hppa_cpu_class_by_name

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Richard Henderson há 1 ano atrás
pai
commit
ca4c2008f5
2 ficheiros alterados com 10 adições e 2 exclusões
  1. 1 1
      linux-user/hppa/target_elf.h
  2. 9 1
      target/hppa/cpu.c

+ 1 - 1
linux-user/hppa/target_elf.h

@@ -9,6 +9,6 @@
 #define HPPA_TARGET_ELF_H
 #define HPPA_TARGET_ELF_H
 static inline const char *cpu_get_model(uint32_t eflags)
 static inline const char *cpu_get_model(uint32_t eflags)
 {
 {
-    return "any";
+    return "hppa";
 }
 }
 #endif
 #endif

+ 9 - 1
target/hppa/cpu.c

@@ -158,7 +158,15 @@ static void hppa_cpu_initfn(Object *obj)
 
 
 static ObjectClass *hppa_cpu_class_by_name(const char *cpu_model)
 static ObjectClass *hppa_cpu_class_by_name(const char *cpu_model)
 {
 {
-    return object_class_by_name(TYPE_HPPA_CPU);
+    g_autofree char *typename = g_strconcat(cpu_model, "-cpu", NULL);
+    ObjectClass *oc = object_class_by_name(typename);
+
+    if (oc &&
+        !object_class_is_abstract(oc) &&
+        object_class_dynamic_cast(oc, TYPE_HPPA_CPU)) {
+        return oc;
+    }
+    return NULL;
 }
 }
 
 
 static void hppa_cpu_list_entry(gpointer data, gpointer user_data)
 static void hppa_cpu_list_entry(gpointer data, gpointer user_data)