mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-07-10 15:07:26 +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);
|
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_archcpu(env)
|
||||||
* @env: The architecture environment
|
* @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);
|
ARMCPU *cpu = ARM_CPU(uc, obj);
|
||||||
uint32_t Aff1, Aff0;
|
uint32_t Aff1, Aff0;
|
||||||
|
|
||||||
cs->env_ptr = &cpu->env;
|
cpu_set_cpustate_pointers(cpu);
|
||||||
cpu_exec_init(cs, &error_abort, opaque);
|
cpu_exec_init(cs, &error_abort, opaque);
|
||||||
cpu->cp_regs = g_hash_table_new_full(g_int_hash, g_int_equal,
|
cpu->cp_regs = g_hash_table_new_full(g_int_hash, g_int_equal,
|
||||||
g_free, cpreg_hashtable_data_destroy);
|
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);
|
X86CPUClass *xcc = X86_CPU_GET_CLASS(uc, obj);
|
||||||
CPUX86State *env = &cpu->env;
|
CPUX86State *env = &cpu->env;
|
||||||
|
|
||||||
cs->env_ptr = env;
|
cpu_set_cpustate_pointers(cpu);
|
||||||
cpu_exec_init(cs, &error_abort, opaque);
|
cpu_exec_init(cs, &error_abort, opaque);
|
||||||
|
|
||||||
object_property_add(uc, obj, "family", "int",
|
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);
|
CPUState *cs = CPU(obj);
|
||||||
M68kCPU *cpu = M68K_CPU(uc, 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);
|
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;
|
CPUMIPSState *env = &cpu->env;
|
||||||
MIPSCPUClass *mcc = MIPS_CPU_GET_CLASS(uc, obj);
|
MIPSCPUClass *mcc = MIPS_CPU_GET_CLASS(uc, obj);
|
||||||
|
|
||||||
cs->env_ptr = env;
|
cpu_set_cpustate_pointers(cpu);
|
||||||
env->cpu_model = mcc->cpu_def;
|
env->cpu_model = mcc->cpu_def;
|
||||||
cpu_exec_init(cs, &error_abort, opaque);
|
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);
|
CPUState *cs = CPU(obj);
|
||||||
RISCVCPU *cpu = RISCV_CPU(uc, 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);
|
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);
|
SPARCCPUClass *scc = SPARC_CPU_GET_CLASS(uc, obj);
|
||||||
CPUSPARCState *env = &cpu->env;
|
CPUSPARCState *env = &cpu->env;
|
||||||
|
|
||||||
cs->env_ptr = env;
|
cpu_set_cpustate_pointers(cpu);
|
||||||
cpu_exec_init(cs, &error_abort, opaque);
|
cpu_exec_init(cs, &error_abort, opaque);
|
||||||
|
|
||||||
if (scc->cpu_def) {
|
if (scc->cpu_def) {
|
||||||
|
|
Loading…
Reference in a new issue