Commit 92a31361 authored by Andreas Färber's avatar Andreas Färber
Browse files

cpu: Introduce CPUListState struct



This generalizes {ARM,M68k,Alpha}CPUListState to avoid declaring it for
each target. Place it in cpu-common.h to avoid circular dependencies.

Signed-off-by: default avatarAndreas Färber <afaerber@suse.de>
Reviewed-by: default avatarIgor Mammedov <imammedo@redhat.com>
Reviewed-by: default avatarEduardo Habkost <ehabkost@redhat.com>
parent 494342b3
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -12,6 +12,18 @@
#include "bswap.h"
#include "qemu-queue.h"

/**
 * CPUListState:
 * @cpu_fprintf: Print function.
 * @file: File to print to using @cpu_fprint.
 *
 * State commonly used for iterating over CPU models.
 */
typedef struct CPUListState {
    fprintf_function cpu_fprintf;
    FILE *file;
} CPUListState;

#if !defined(CONFIG_USER_ONLY)

enum device_endian {
+2 −7
Original line number Diff line number Diff line
@@ -33,11 +33,6 @@ static void alpha_cpu_realize(Object *obj, Error **errp)
#endif
}

typedef struct AlphaCPUListState {
    fprintf_function cpu_fprintf;
    FILE *file;
} AlphaCPUListState;

/* Sort alphabetically by type name. */
static gint alpha_cpu_list_compare(gconstpointer a, gconstpointer b)
{
@@ -53,7 +48,7 @@ static gint alpha_cpu_list_compare(gconstpointer a, gconstpointer b)
static void alpha_cpu_list_entry(gpointer data, gpointer user_data)
{
    ObjectClass *oc = data;
    AlphaCPUListState *s = user_data;
    CPUListState *s = user_data;

    (*s->cpu_fprintf)(s->file, "  %s\n",
                      object_class_get_name(oc));
@@ -61,7 +56,7 @@ static void alpha_cpu_list_entry(gpointer data, gpointer user_data)

void alpha_cpu_list(FILE *f, fprintf_function cpu_fprintf)
{
    AlphaCPUListState s = {
    CPUListState s = {
        .file = f,
        .cpu_fprintf = cpu_fprintf,
    };
+2 −7
Original line number Diff line number Diff line
@@ -1291,11 +1291,6 @@ ARMCPU *cpu_arm_init(const char *cpu_model)
    return cpu;
}

typedef struct ARMCPUListState {
    fprintf_function cpu_fprintf;
    FILE *file;
} ARMCPUListState;

/* Sort alphabetically by type name, except for "any". */
static gint arm_cpu_list_compare(gconstpointer a, gconstpointer b)
{
@@ -1317,7 +1312,7 @@ static gint arm_cpu_list_compare(gconstpointer a, gconstpointer b)
static void arm_cpu_list_entry(gpointer data, gpointer user_data)
{
    ObjectClass *oc = data;
    ARMCPUListState *s = user_data;
    CPUListState *s = user_data;

    (*s->cpu_fprintf)(s->file, "  %s\n",
                      object_class_get_name(oc));
@@ -1325,7 +1320,7 @@ static void arm_cpu_list_entry(gpointer data, gpointer user_data)

void arm_cpu_list(FILE *f, fprintf_function cpu_fprintf)
{
    ARMCPUListState s = {
    CPUListState s = {
        .file = f,
        .cpu_fprintf = cpu_fprintf,
    };
+2 −7
Original line number Diff line number Diff line
@@ -25,11 +25,6 @@

#define SIGNBIT (1u << 31)

typedef struct M68kCPUListState {
    fprintf_function cpu_fprintf;
    FILE *file;
} M68kCPUListState;

/* Sort alphabetically, except for "any". */
static gint m68k_cpu_list_compare(gconstpointer a, gconstpointer b)
{
@@ -51,7 +46,7 @@ static gint m68k_cpu_list_compare(gconstpointer a, gconstpointer b)
static void m68k_cpu_list_entry(gpointer data, gpointer user_data)
{
    ObjectClass *c = data;
    M68kCPUListState *s = user_data;
    CPUListState *s = user_data;

    (*s->cpu_fprintf)(s->file, "%s\n",
                      object_class_get_name(c));
@@ -59,7 +54,7 @@ static void m68k_cpu_list_entry(gpointer data, gpointer user_data)

void m68k_cpu_list(FILE *f, fprintf_function cpu_fprintf)
{
    M68kCPUListState s = {
    CPUListState s = {
        .file = f,
        .cpu_fprintf = cpu_fprintf,
    };