For target/openrisc, the CPU type name is always the combination of the CPU model name and suffix. The CPU model names have been correctly shown in openrisc_cpu_list_entry().
Use generic helper cpu_model_from_type() to show the CPU model names in openrisc_cpu_list_entry(), and @name is renamed to @model since it points to the CPU model name instead of the CPU type name. Besides, openrisc_cpu_class_by_name() is simplified since the condtion of '@oc == NULL' has been covered by object_class_dynamic_cast(). Signed-off-by: Gavin Shan <gs...@redhat.com> --- target/openrisc/cpu.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/target/openrisc/cpu.c b/target/openrisc/cpu.c index 61d748cfdc..2284c0187b 100644 --- a/target/openrisc/cpu.c +++ b/target/openrisc/cpu.c @@ -168,11 +168,12 @@ static ObjectClass *openrisc_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(OPENRISC_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (oc != NULL && (!object_class_dynamic_cast(oc, TYPE_OPENRISC_CPU) || - object_class_is_abstract(oc))) { - return NULL; + if (object_class_dynamic_cast(oc, TYPE_OPENRISC_CPU) && + !object_class_is_abstract(oc)) { + return oc; } - return oc; + + return NULL; } static void or1200_initfn(Object *obj) @@ -280,15 +281,11 @@ static gint openrisc_cpu_list_compare(gconstpointer a, gconstpointer b) static void openrisc_cpu_list_entry(gpointer data, gpointer user_data) { - ObjectClass *oc = data; - const char *typename; - char *name; - - typename = object_class_get_name(oc); - name = g_strndup(typename, - strlen(typename) - strlen("-" TYPE_OPENRISC_CPU)); - qemu_printf(" %s\n", name); - g_free(name); + const char *typename = object_class_get_name(OBJECT_CLASS(data)); + char *model = cpu_model_from_type(typename); + + qemu_printf(" %s\n", model); + g_free(model); } void cpu_openrisc_list(void) -- 2.41.0