cpu: Introduce cpu_set_cpustate_pointers

Consolidate some boilerplate from foo_cpu_initfn.

Backports commit 7506ed902eb97fe4e2a1dd16766c621d32ecc40d from qemu
This commit is contained in:
Richard Henderson 2019-06-12 12:27:11 -04:00 committed by Lioncash
parent ac176ccb38
commit a672b89e3b
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7
7 changed files with 17 additions and 8 deletions

View file

@ -375,6 +375,17 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
int cpu_exec(struct uc_struct *uc, CPUState *cpu);
/**
* cpu_set_cpustate_pointers(cpu)
* @cpu: The cpu object
*
* Set the generic pointers in CPUState into the outer object.
*/
static inline void cpu_set_cpustate_pointers(ArchCPU *cpu)
{
cpu->parent_obj.env_ptr = &cpu->env;
}
/**
* env_archcpu(env)
* @env: The architecture environment

View file

@ -568,7 +568,7 @@ static void arm_cpu_initfn(struct uc_struct *uc, Object *obj, void *opaque)
ARMCPU *cpu = ARM_CPU(uc, obj);
uint32_t Aff1, Aff0;
cs->env_ptr = &cpu->env;
cpu_set_cpustate_pointers(cpu);
cpu_exec_init(cs, &error_abort, opaque);
cpu->cp_regs = g_hash_table_new_full(g_int_hash, g_int_equal,
g_free, cpreg_hashtable_data_destroy);

View file

@ -4783,7 +4783,7 @@ static void x86_cpu_initfn(struct uc_struct *uc, Object *obj, void *opaque)
X86CPUClass *xcc = X86_CPU_GET_CLASS(uc, obj);
CPUX86State *env = &cpu->env;
cs->env_ptr = env;
cpu_set_cpustate_pointers(cpu);
cpu_exec_init(cs, &error_abort, opaque);
object_property_add(uc, obj, "family", "int",

View file

@ -228,9 +228,8 @@ static void m68k_cpu_initfn(struct uc_struct *uc, Object *obj, void *opaque)
{
CPUState *cs = CPU(obj);
M68kCPU *cpu = M68K_CPU(uc, obj);
CPUM68KState *env = &cpu->env;
cs->env_ptr = env;
cpu_set_cpustate_pointers(cpu);
cpu_exec_init(cs, &error_abort, opaque);
}

View file

@ -128,7 +128,7 @@ static void mips_cpu_initfn(struct uc_struct *uc, Object *obj, void *opaque)
CPUMIPSState *env = &cpu->env;
MIPSCPUClass *mcc = MIPS_CPU_GET_CLASS(uc, obj);
cs->env_ptr = env;
cpu_set_cpustate_pointers(cpu);
env->cpu_model = mcc->cpu_def;
cpu_exec_init(cs, &error_abort, opaque);
}

View file

@ -326,9 +326,8 @@ static void riscv_cpu_init(struct uc_struct *uc, Object *obj, void *opaque)
{
CPUState *cs = CPU(obj);
RISCVCPU *cpu = RISCV_CPU(uc, obj);
CPURISCVState *env = &cpu->env;
cs->env_ptr = env;
cpu_set_cpustate_pointers(cpu);
cpu_exec_init(cs, &error_abort, opaque);
}

View file

@ -817,7 +817,7 @@ static void sparc_cpu_initfn(struct uc_struct *uc, Object *obj, void *opaque)
SPARCCPUClass *scc = SPARC_CPU_GET_CLASS(uc, obj);
CPUSPARCState *env = &cpu->env;
cs->env_ptr = env;
cpu_set_cpustate_pointers(cpu);
cpu_exec_init(cs, &error_abort, opaque);
if (scc->cpu_def) {