mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-02-25 09:26:53 +00:00
cpu: Introduce cpu_set_cpustate_pointers
Consolidate some boilerplate from foo_cpu_initfn. Backports commit 7506ed902eb97fe4e2a1dd16766c621d32ecc40d from qemu
This commit is contained in:
parent
ac176ccb38
commit
a672b89e3b
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue