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: Andreas Färber <afaerber@suse.de> Reviewed-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
parent
494342b35b
commit
92a3136174
12
cpu-common.h
12
cpu-common.h
@ -12,6 +12,18 @@
|
|||||||
#include "bswap.h"
|
#include "bswap.h"
|
||||||
#include "qemu-queue.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)
|
#if !defined(CONFIG_USER_ONLY)
|
||||||
|
|
||||||
enum device_endian {
|
enum device_endian {
|
||||||
|
@ -33,11 +33,6 @@ static void alpha_cpu_realize(Object *obj, Error **errp)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct AlphaCPUListState {
|
|
||||||
fprintf_function cpu_fprintf;
|
|
||||||
FILE *file;
|
|
||||||
} AlphaCPUListState;
|
|
||||||
|
|
||||||
/* Sort alphabetically by type name. */
|
/* Sort alphabetically by type name. */
|
||||||
static gint alpha_cpu_list_compare(gconstpointer a, gconstpointer b)
|
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)
|
static void alpha_cpu_list_entry(gpointer data, gpointer user_data)
|
||||||
{
|
{
|
||||||
ObjectClass *oc = data;
|
ObjectClass *oc = data;
|
||||||
AlphaCPUListState *s = user_data;
|
CPUListState *s = user_data;
|
||||||
|
|
||||||
(*s->cpu_fprintf)(s->file, " %s\n",
|
(*s->cpu_fprintf)(s->file, " %s\n",
|
||||||
object_class_get_name(oc));
|
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)
|
void alpha_cpu_list(FILE *f, fprintf_function cpu_fprintf)
|
||||||
{
|
{
|
||||||
AlphaCPUListState s = {
|
CPUListState s = {
|
||||||
.file = f,
|
.file = f,
|
||||||
.cpu_fprintf = cpu_fprintf,
|
.cpu_fprintf = cpu_fprintf,
|
||||||
};
|
};
|
||||||
|
@ -1291,11 +1291,6 @@ ARMCPU *cpu_arm_init(const char *cpu_model)
|
|||||||
return cpu;
|
return cpu;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct ARMCPUListState {
|
|
||||||
fprintf_function cpu_fprintf;
|
|
||||||
FILE *file;
|
|
||||||
} ARMCPUListState;
|
|
||||||
|
|
||||||
/* Sort alphabetically by type name, except for "any". */
|
/* Sort alphabetically by type name, except for "any". */
|
||||||
static gint arm_cpu_list_compare(gconstpointer a, gconstpointer b)
|
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)
|
static void arm_cpu_list_entry(gpointer data, gpointer user_data)
|
||||||
{
|
{
|
||||||
ObjectClass *oc = data;
|
ObjectClass *oc = data;
|
||||||
ARMCPUListState *s = user_data;
|
CPUListState *s = user_data;
|
||||||
|
|
||||||
(*s->cpu_fprintf)(s->file, " %s\n",
|
(*s->cpu_fprintf)(s->file, " %s\n",
|
||||||
object_class_get_name(oc));
|
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)
|
void arm_cpu_list(FILE *f, fprintf_function cpu_fprintf)
|
||||||
{
|
{
|
||||||
ARMCPUListState s = {
|
CPUListState s = {
|
||||||
.file = f,
|
.file = f,
|
||||||
.cpu_fprintf = cpu_fprintf,
|
.cpu_fprintf = cpu_fprintf,
|
||||||
};
|
};
|
||||||
|
@ -25,11 +25,6 @@
|
|||||||
|
|
||||||
#define SIGNBIT (1u << 31)
|
#define SIGNBIT (1u << 31)
|
||||||
|
|
||||||
typedef struct M68kCPUListState {
|
|
||||||
fprintf_function cpu_fprintf;
|
|
||||||
FILE *file;
|
|
||||||
} M68kCPUListState;
|
|
||||||
|
|
||||||
/* Sort alphabetically, except for "any". */
|
/* Sort alphabetically, except for "any". */
|
||||||
static gint m68k_cpu_list_compare(gconstpointer a, gconstpointer b)
|
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)
|
static void m68k_cpu_list_entry(gpointer data, gpointer user_data)
|
||||||
{
|
{
|
||||||
ObjectClass *c = data;
|
ObjectClass *c = data;
|
||||||
M68kCPUListState *s = user_data;
|
CPUListState *s = user_data;
|
||||||
|
|
||||||
(*s->cpu_fprintf)(s->file, "%s\n",
|
(*s->cpu_fprintf)(s->file, "%s\n",
|
||||||
object_class_get_name(c));
|
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)
|
void m68k_cpu_list(FILE *f, fprintf_function cpu_fprintf)
|
||||||
{
|
{
|
||||||
M68kCPUListState s = {
|
CPUListState s = {
|
||||||
.file = f,
|
.file = f,
|
||||||
.cpu_fprintf = cpu_fprintf,
|
.cpu_fprintf = cpu_fprintf,
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user