cpu: Make cpu_init() return QOM CPUState object
Instead of making cpu_init() return CPUArchState, return CPUState. Changes were made using the Coccinelle semantic patch below. @@ typedef CPUState; identifier e; expression args; type CPUArchState; @@ - e = + cpu = cpu_init(args); - if (!e) { + if (!cpu) { ... } - cpu = ENV_GET_CPU(env); + e = cpu->env_ptr; @@ identifier new_env, new_cpu, env, cpu; type CPUArchState; expression args; @@ -{ - CPUState *cpu = ENV_GET_CPU(env); - CPUArchState *new_env = cpu_init(args); - CPUState *new_cpu = ENV_GET_CPU(new_env); +{ + CPUState *cpu = ENV_GET_CPU(env); + CPUState *new_cpu = cpu_init(args); + CPUArchState *new_env = new_cpu->env_ptr; ... } @@ identifier c, cpu_init_func, cpu_model; type StateType, CPUType; @@ -static inline StateType* cpu_init(const char *cpu_model) -{ - CPUType *c = cpu_init_func(cpu_model); ( - if (c == NULL) { - return NULL; - } - return &c->env; | - if (c) { - return &c->env; - } - return NULL; ) -} +#define cpu_init(cpu_model) CPU(cpu_init_func(cpu_model)) @@ identifier cpu_init_func; identifier model; @@ -#define cpu_init(model) (&cpu_init_func(model)->env) +#define cpu_init(model) CPU(cpu_init_func(model)) Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> Cc: Blue Swirl <blauwirbel@gmail.com> Cc: Guan Xuetao <gxt@mprc.pku.edu.cn> Cc: Riku Voipio <riku.voipio@iki.fi> Cc: Richard Henderson <rth@twiddle.net> Cc: Peter Maydell <peter.maydell@linaro.org> Cc: "Edgar E. Iglesias" <edgar.iglesias@gmail.com> Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Michael Walle <michael@walle.cc> Cc: Aurelien Jarno <aurelien@aurel32.net> Cc: Leon Alrae <leon.alrae@imgtec.com> Cc: Anthony Green <green@moxielogic.com> Cc: Jia Liu <proljc@gmail.com> Cc: Alexander Graf <agraf@suse.de> Cc: Bastian Koppelmann <kbastian@mail.uni-paderborn.de> Cc: Max Filippov <jcmvbkbc@gmail.com> [AF: Fixed up cpu_copy() manually] Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
c3898f770b
commit
2994fd96d9
@ -908,12 +908,12 @@ int main(int argc, char **argv)
|
||||
cpu_exec_init_all();
|
||||
/* NOTE: we need to init the CPU at this stage to get
|
||||
qemu_host_page_size */
|
||||
env = cpu_init(cpu_model);
|
||||
if (!env) {
|
||||
cpu = cpu_init(cpu_model);
|
||||
if (!cpu) {
|
||||
fprintf(stderr, "Unable to find CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
cpu = ENV_GET_CPU(env);
|
||||
env = cpu->env_ptr;
|
||||
#if defined(TARGET_SPARC) || defined(TARGET_PPC)
|
||||
cpu_reset(cpu);
|
||||
#endif
|
||||
|
@ -3452,8 +3452,8 @@ void init_task_state(TaskState *ts)
|
||||
CPUArchState *cpu_copy(CPUArchState *env)
|
||||
{
|
||||
CPUState *cpu = ENV_GET_CPU(env);
|
||||
CPUArchState *new_env = cpu_init(cpu_model);
|
||||
CPUState *new_cpu = ENV_GET_CPU(new_env);
|
||||
CPUState *new_cpu = cpu_init(cpu_model);
|
||||
CPUArchState *new_env = cpu->env_ptr;
|
||||
CPUBreakpoint *bp;
|
||||
CPUWatchpoint *wp;
|
||||
|
||||
@ -3939,12 +3939,12 @@ int main(int argc, char **argv, char **envp)
|
||||
cpu_exec_init_all();
|
||||
/* NOTE: we need to init the CPU at this stage to get
|
||||
qemu_host_page_size */
|
||||
env = cpu_init(cpu_model);
|
||||
if (!env) {
|
||||
cpu = cpu_init(cpu_model);
|
||||
if (!cpu) {
|
||||
fprintf(stderr, "Unable to find CPU definition\n");
|
||||
exit(1);
|
||||
}
|
||||
cpu = ENV_GET_CPU(env);
|
||||
env = cpu->env_ptr;
|
||||
cpu_reset(cpu);
|
||||
|
||||
thread_cpu = cpu;
|
||||
|
@ -429,14 +429,7 @@ void alpha_translate_init(void);
|
||||
|
||||
AlphaCPU *cpu_alpha_init(const char *cpu_model);
|
||||
|
||||
static inline CPUAlphaState *cpu_init(const char *cpu_model)
|
||||
{
|
||||
AlphaCPU *cpu = cpu_alpha_init(cpu_model);
|
||||
if (cpu == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return &cpu->env;
|
||||
}
|
||||
#define cpu_init(cpu_model) CPU(cpu_alpha_init(cpu_model))
|
||||
|
||||
void alpha_cpu_list(FILE *f, fprintf_function cpu_fprintf);
|
||||
int cpu_alpha_exec(CPUAlphaState *s);
|
||||
|
@ -1569,14 +1569,7 @@ static inline bool arm_excp_unmasked(CPUState *cs, unsigned int excp_idx)
|
||||
return unmasked || pstate_unmasked;
|
||||
}
|
||||
|
||||
static inline CPUARMState *cpu_init(const char *cpu_model)
|
||||
{
|
||||
ARMCPU *cpu = cpu_arm_init(cpu_model);
|
||||
if (cpu) {
|
||||
return &cpu->env;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
#define cpu_init(cpu_model) CPU(cpu_arm_init(cpu_model))
|
||||
|
||||
#define cpu_exec cpu_arm_exec
|
||||
#define cpu_gen_code cpu_arm_gen_code
|
||||
|
@ -221,14 +221,7 @@ enum {
|
||||
#define TARGET_PHYS_ADDR_SPACE_BITS 32
|
||||
#define TARGET_VIRT_ADDR_SPACE_BITS 32
|
||||
|
||||
static inline CPUCRISState *cpu_init(const char *cpu_model)
|
||||
{
|
||||
CRISCPU *cpu = cpu_cris_init(cpu_model);
|
||||
if (cpu == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return &cpu->env;
|
||||
}
|
||||
#define cpu_init(cpu_model) CPU(cpu_cris_init(cpu_model))
|
||||
|
||||
#define cpu_exec cpu_cris_exec
|
||||
#define cpu_gen_code cpu_cris_gen_code
|
||||
|
@ -1171,14 +1171,7 @@ uint64_t cpu_get_tsc(CPUX86State *env);
|
||||
# define PHYS_ADDR_MASK 0xfffffffffLL
|
||||
# endif
|
||||
|
||||
static inline CPUX86State *cpu_init(const char *cpu_model)
|
||||
{
|
||||
X86CPU *cpu = cpu_x86_init(cpu_model);
|
||||
if (cpu == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return &cpu->env;
|
||||
}
|
||||
#define cpu_init(cpu_model) CPU(cpu_x86_init(cpu_model))
|
||||
|
||||
#define cpu_exec cpu_x86_exec
|
||||
#define cpu_gen_code cpu_x86_gen_code
|
||||
|
@ -217,14 +217,7 @@ void lm32_watchpoint_insert(CPULM32State *env, int index, target_ulong address,
|
||||
void lm32_watchpoint_remove(CPULM32State *env, int index);
|
||||
bool lm32_cpu_do_semihosting(CPUState *cs);
|
||||
|
||||
static inline CPULM32State *cpu_init(const char *cpu_model)
|
||||
{
|
||||
LM32CPU *cpu = cpu_lm32_init(cpu_model);
|
||||
if (cpu == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return &cpu->env;
|
||||
}
|
||||
#define cpu_init(cpu_model) CPU(cpu_lm32_init(cpu_model))
|
||||
|
||||
#define cpu_list lm32_cpu_list
|
||||
#define cpu_exec cpu_lm32_exec
|
||||
|
@ -212,14 +212,7 @@ void register_m68k_insns (CPUM68KState *env);
|
||||
#define TARGET_PHYS_ADDR_SPACE_BITS 32
|
||||
#define TARGET_VIRT_ADDR_SPACE_BITS 32
|
||||
|
||||
static inline CPUM68KState *cpu_init(const char *cpu_model)
|
||||
{
|
||||
M68kCPU *cpu = cpu_m68k_init(cpu_model);
|
||||
if (cpu == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return &cpu->env;
|
||||
}
|
||||
#define cpu_init(cpu_model) CPU(cpu_m68k_init(cpu_model))
|
||||
|
||||
#define cpu_exec cpu_m68k_exec
|
||||
#define cpu_gen_code cpu_m68k_gen_code
|
||||
|
@ -297,14 +297,7 @@ enum {
|
||||
#define TARGET_PHYS_ADDR_SPACE_BITS 32
|
||||
#define TARGET_VIRT_ADDR_SPACE_BITS 32
|
||||
|
||||
static inline CPUMBState *cpu_init(const char *cpu_model)
|
||||
{
|
||||
MicroBlazeCPU *cpu = cpu_mb_init(cpu_model);
|
||||
if (cpu == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return &cpu->env;
|
||||
}
|
||||
#define cpu_init(cpu_model) CPU(cpu_mb_init(cpu_model))
|
||||
|
||||
#define cpu_exec cpu_mb_exec
|
||||
#define cpu_gen_code cpu_mb_gen_code
|
||||
|
@ -739,14 +739,7 @@ void mips_tcg_init(void);
|
||||
MIPSCPU *cpu_mips_init(const char *cpu_model);
|
||||
int cpu_mips_signal_handler(int host_signum, void *pinfo, void *puc);
|
||||
|
||||
static inline CPUMIPSState *cpu_init(const char *cpu_model)
|
||||
{
|
||||
MIPSCPU *cpu = cpu_mips_init(cpu_model);
|
||||
if (cpu == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return &cpu->env;
|
||||
}
|
||||
#define cpu_init(cpu_model) CPU(cpu_mips_init(cpu_model))
|
||||
|
||||
/* TODO QOM'ify CPU reset and remove */
|
||||
void cpu_state_reset(CPUMIPSState *s);
|
||||
|
@ -121,14 +121,7 @@ void moxie_translate_init(void);
|
||||
int cpu_moxie_signal_handler(int host_signum, void *pinfo,
|
||||
void *puc);
|
||||
|
||||
static inline CPUMoxieState *cpu_init(const char *cpu_model)
|
||||
{
|
||||
MoxieCPU *cpu = cpu_moxie_init(cpu_model);
|
||||
if (cpu == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return &cpu->env;
|
||||
}
|
||||
#define cpu_init(cpu_model) CPU(cpu_moxie_init(cpu_model))
|
||||
|
||||
#define cpu_exec cpu_moxie_exec
|
||||
#define cpu_gen_code cpu_moxie_gen_code
|
||||
|
@ -389,14 +389,7 @@ int cpu_openrisc_get_phys_data(OpenRISCCPU *cpu,
|
||||
int *prot, target_ulong address, int rw);
|
||||
#endif
|
||||
|
||||
static inline CPUOpenRISCState *cpu_init(const char *cpu_model)
|
||||
{
|
||||
OpenRISCCPU *cpu = cpu_openrisc_init(cpu_model);
|
||||
if (cpu) {
|
||||
return &cpu->env;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
#define cpu_init(cpu_model) CPU(cpu_openrisc_init(cpu_model))
|
||||
|
||||
#include "exec/cpu-all.h"
|
||||
|
||||
|
@ -1238,14 +1238,7 @@ static inline uint64_t ppc_dump_gpr(CPUPPCState *env, int gprn)
|
||||
int ppc_dcr_read (ppc_dcr_t *dcr_env, int dcrn, uint32_t *valp);
|
||||
int ppc_dcr_write (ppc_dcr_t *dcr_env, int dcrn, uint32_t val);
|
||||
|
||||
static inline CPUPPCState *cpu_init(const char *cpu_model)
|
||||
{
|
||||
PowerPCCPU *cpu = cpu_ppc_init(cpu_model);
|
||||
if (cpu == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return &cpu->env;
|
||||
}
|
||||
#define cpu_init(cpu_model) CPU(cpu_ppc_init(cpu_model))
|
||||
|
||||
#define cpu_exec cpu_ppc_exec
|
||||
#define cpu_gen_code cpu_ppc_gen_code
|
||||
|
@ -466,7 +466,7 @@ int css_do_rchp(uint8_t cssid, uint8_t chpid);
|
||||
bool css_present(uint8_t cssid);
|
||||
#endif
|
||||
|
||||
#define cpu_init(model) (&cpu_s390x_init(model)->env)
|
||||
#define cpu_init(model) CPU(cpu_s390x_init(model))
|
||||
#define cpu_exec cpu_s390x_exec
|
||||
#define cpu_gen_code cpu_s390x_gen_code
|
||||
#define cpu_signal_handler cpu_s390x_signal_handler
|
||||
|
@ -221,14 +221,7 @@ int cpu_sh4_is_cached(CPUSH4State * env, target_ulong addr);
|
||||
|
||||
void cpu_load_tlb(CPUSH4State * env);
|
||||
|
||||
static inline CPUSH4State *cpu_init(const char *cpu_model)
|
||||
{
|
||||
SuperHCPU *cpu = cpu_sh4_init(cpu_model);
|
||||
if (cpu == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return &cpu->env;
|
||||
}
|
||||
#define cpu_init(cpu_model) CPU(cpu_sh4_init(cpu_model))
|
||||
|
||||
#define cpu_exec cpu_sh4_exec
|
||||
#define cpu_gen_code cpu_sh4_gen_code
|
||||
|
@ -594,14 +594,7 @@ hwaddr cpu_get_phys_page_nofault(CPUSPARCState *env, target_ulong addr,
|
||||
int cpu_sparc_signal_handler(int host_signum, void *pinfo, void *puc);
|
||||
|
||||
#ifndef NO_CPU_IO_DEFS
|
||||
static inline CPUSPARCState *cpu_init(const char *cpu_model)
|
||||
{
|
||||
SPARCCPU *cpu = cpu_sparc_init(cpu_model);
|
||||
if (cpu == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return &cpu->env;
|
||||
}
|
||||
#define cpu_init(cpu_model) CPU(cpu_sparc_init(cpu_model))
|
||||
#endif
|
||||
|
||||
#define cpu_exec cpu_sparc_exec
|
||||
|
@ -378,15 +378,7 @@ static inline void cpu_get_tb_cpu_state(CPUTriCoreState *env, target_ulong *pc,
|
||||
|
||||
TriCoreCPU *cpu_tricore_init(const char *cpu_model);
|
||||
|
||||
static inline CPUTriCoreState *cpu_init(const char *cpu_model)
|
||||
{
|
||||
TriCoreCPU *cpu = cpu_tricore_init(cpu_model);
|
||||
if (cpu == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return &cpu->env;
|
||||
|
||||
}
|
||||
#define cpu_init(cpu_model) CPU(cpu_tricore_init(cpu_model))
|
||||
|
||||
|
||||
/* helpers.c */
|
||||
|
@ -143,15 +143,7 @@ static inline int cpu_mmu_index(CPUUniCore32State *env)
|
||||
|
||||
UniCore32CPU *uc32_cpu_init(const char *cpu_model);
|
||||
|
||||
static inline CPUUniCore32State *cpu_init(const char *cpu_model)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_cpu_init(cpu_model);
|
||||
if (cpu == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return &cpu->env;
|
||||
|
||||
}
|
||||
#define cpu_init(cpu_model) CPU(uc32_cpu_init(cpu_model))
|
||||
|
||||
static inline void cpu_get_tb_cpu_state(CPUUniCore32State *env, target_ulong *pc,
|
||||
target_ulong *cs_base, int *flags)
|
||||
|
@ -379,14 +379,7 @@ typedef struct CPUXtensaState {
|
||||
|
||||
XtensaCPU *cpu_xtensa_init(const char *cpu_model);
|
||||
|
||||
static inline CPUXtensaState *cpu_init(const char *cpu_model)
|
||||
{
|
||||
XtensaCPU *cpu = cpu_xtensa_init(cpu_model);
|
||||
if (cpu == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return &cpu->env;
|
||||
}
|
||||
#define cpu_init(cpu_model) CPU(cpu_xtensa_init(cpu_model))
|
||||
|
||||
void xtensa_translate_init(void);
|
||||
void xtensa_breakpoint_handler(CPUState *cs);
|
||||
|
Loading…
Reference in New Issue
Block a user