Implement microblaze_cpu_list() to support cpu_list(). With this applied, the available CPU model names, same to the CPU type names, are shown as below.
$ ./build/qemu-system-hppa -cpu ? Available CPUs: microblaze-cpu Signed-off-by: Gavin Shan <gs...@redhat.com> --- target/microblaze/cpu.c | 20 ++++++++++++++++++++ target/microblaze/cpu.h | 3 +++ 2 files changed, 23 insertions(+) diff --git a/target/microblaze/cpu.c b/target/microblaze/cpu.c index 03c2c4db1f..fc7a5dee5b 100644 --- a/target/microblaze/cpu.c +++ b/target/microblaze/cpu.c @@ -24,6 +24,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "qapi/error.h" +#include "qemu/qemu-print.h" #include "cpu.h" #include "qemu/module.h" #include "hw/qdev-properties.h" @@ -291,6 +292,25 @@ static void mb_cpu_realizefn(DeviceState *dev, Error **errp) mcc->parent_realize(dev, errp); } +static void microblaze_cpu_list_entry(gpointer data, gpointer user_data) +{ + 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 microblaze_cpu_list(void) +{ + GSList *list; + + list = object_class_get_list_sorted(TYPE_MICROBLAZE_CPU, false); + qemu_printf("Available CPUs:\n"); + g_slist_foreach(list, microblaze_cpu_list_entry, NULL); + g_slist_free(list); +} + static void mb_cpu_initfn(Object *obj) { MicroBlazeCPU *cpu = MICROBLAZE_CPU(obj); diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h index f6cab6ce19..b5775c2966 100644 --- a/target/microblaze/cpu.h +++ b/target/microblaze/cpu.h @@ -372,6 +372,9 @@ int mb_cpu_gdb_read_register(CPUState *cpu, GByteArray *buf, int reg); int mb_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg); int mb_cpu_gdb_read_stack_protect(CPUArchState *cpu, GByteArray *buf, int reg); int mb_cpu_gdb_write_stack_protect(CPUArchState *cpu, uint8_t *buf, int reg); +void microblaze_cpu_list(void); + +#define cpu_list microblaze_cpu_list static inline uint32_t mb_cpu_read_msr(const CPUMBState *env) { -- 2.41.0