mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-26 20:03:54 -06:00
cpu: Add generic cpu_list()
Add generic cpu_list() to replace the individual target's implementation in the subsequent commits. Currently, there are 3 targets with no cpu_list() implementation: microblaze and nios2. With this applied, those two targets switch to the generic cpu_list(). [gshan@gshan q]$ ./build/qemu-system-microblaze -cpu ? Available CPUs: microblaze-cpu [gshan@gshan q]$ ./build/qemu-system-nios2 -cpu ? Available CPUs: nios2-cpu Suggested-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Gavin Shan <gshan@redhat.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-ID: <20231114235628.534334-7-gshan@redhat.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
parent
445946f4dd
commit
dfa4753131
2 changed files with 27 additions and 7 deletions
|
@ -378,10 +378,7 @@ int main(int argc, char **argv)
|
||||||
} else if (!strcmp(r, "cpu")) {
|
} else if (!strcmp(r, "cpu")) {
|
||||||
cpu_model = argv[optind++];
|
cpu_model = argv[optind++];
|
||||||
if (is_help_option(cpu_model)) {
|
if (is_help_option(cpu_model)) {
|
||||||
/* XXX: implement xxx_cpu_list for targets that still miss it */
|
list_cpus();
|
||||||
#if defined(cpu_list)
|
|
||||||
cpu_list();
|
|
||||||
#endif
|
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
} else if (!strcmp(r, "B")) {
|
} else if (!strcmp(r, "B")) {
|
||||||
|
|
29
cpu-target.c
29
cpu-target.c
|
@ -24,6 +24,7 @@
|
||||||
#include "hw/qdev-core.h"
|
#include "hw/qdev-core.h"
|
||||||
#include "hw/qdev-properties.h"
|
#include "hw/qdev-properties.h"
|
||||||
#include "qemu/error-report.h"
|
#include "qemu/error-report.h"
|
||||||
|
#include "qemu/qemu-print.h"
|
||||||
#include "migration/vmstate.h"
|
#include "migration/vmstate.h"
|
||||||
#ifdef CONFIG_USER_ONLY
|
#ifdef CONFIG_USER_ONLY
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
|
@ -283,12 +284,34 @@ const char *parse_cpu_option(const char *cpu_option)
|
||||||
return cpu_type;
|
return cpu_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef cpu_list
|
||||||
|
static void cpu_list_entry(gpointer data, gpointer user_data)
|
||||||
|
{
|
||||||
|
CPUClass *cc = CPU_CLASS(OBJECT_CLASS(data));
|
||||||
|
const char *typename = object_class_get_name(OBJECT_CLASS(data));
|
||||||
|
g_autofree char *model = cpu_model_from_type(typename);
|
||||||
|
|
||||||
|
if (cc->deprecation_note) {
|
||||||
|
qemu_printf(" %s (deprecated)\n", model);
|
||||||
|
} else {
|
||||||
|
qemu_printf(" %s\n", model);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void cpu_list(void)
|
||||||
|
{
|
||||||
|
GSList *list;
|
||||||
|
|
||||||
|
list = object_class_get_list_sorted(TYPE_CPU, false);
|
||||||
|
qemu_printf("Available CPUs:\n");
|
||||||
|
g_slist_foreach(list, cpu_list_entry, NULL);
|
||||||
|
g_slist_free(list);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void list_cpus(void)
|
void list_cpus(void)
|
||||||
{
|
{
|
||||||
/* XXX: implement xxx_cpu_list for targets that still miss it */
|
|
||||||
#if defined(cpu_list)
|
|
||||||
cpu_list();
|
cpu_list();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_USER_ONLY)
|
#if defined(CONFIG_USER_ONLY)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue