Implement nios2_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-nios2 -cpu ? Available CPUs: nios2-cpu Signed-off-by: Gavin Shan <gs...@redhat.com> --- target/nios2/cpu.c | 20 ++++++++++++++++++++ target/nios2/cpu.h | 3 +++ 2 files changed, 23 insertions(+) diff --git a/target/nios2/cpu.c b/target/nios2/cpu.c index bc5cbf81c2..80af24eb69 100644 --- a/target/nios2/cpu.c +++ b/target/nios2/cpu.c @@ -21,6 +21,7 @@ #include "qemu/osdep.h" #include "qemu/module.h" #include "qapi/error.h" +#include "qemu/qemu-print.h" #include "cpu.h" #include "exec/log.h" #include "gdbstub/helpers.h" @@ -111,6 +112,25 @@ static void iic_set_irq(void *opaque, int irq, int level) } #endif +static void nios2_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 nios2_cpu_list(void) +{ + GSList *list; + + list = object_class_get_list_sorted(TYPE_NIOS2_CPU, false); + qemu_printf("Available CPUs:\n"); + g_slist_foreach(list, nios2_cpu_list_entry, NULL); + g_slist_free(list); +} + static void nios2_cpu_initfn(Object *obj) { Nios2CPU *cpu = NIOS2_CPU(obj); diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index 477a3161fd..6d21b7e8f4 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -292,6 +292,9 @@ bool nios2_cpu_tlb_fill(CPUState *cs, vaddr address, int size, MMUAccessType access_type, int mmu_idx, bool probe, uintptr_t retaddr); #endif +void nios2_cpu_list(void); + +#define cpu_list nios2_cpu_list typedef CPUNios2State CPUArchState; typedef Nios2CPU ArchCPU; -- 2.41.0