diff --git a/target-mips/cpu.c b/target-mips/cpu.c index 18895da80e5054e3906406cb7b7a4b46253982c5..09d61723c5e33c3a0263ab4ba0165bb5de4b8fb1 100644 --- a/target-mips/cpu.c +++ b/target-mips/cpu.c @@ -59,6 +59,10 @@ static void mips_cpu_initfn(Object *obj) CPUMIPSState *env = &cpu->env; cpu_exec_init(env); + + if (tcg_enabled()) { + mips_tcg_init(); + } } static void mips_cpu_class_init(ObjectClass *c, void *data) diff --git a/target-mips/cpu.h b/target-mips/cpu.h index 5963d62973274a19ef43a3952e06c626b6b75067..0e198b12dbc84547e3535878633e794a2c76099c 100644 --- a/target-mips/cpu.h +++ b/target-mips/cpu.h @@ -629,6 +629,7 @@ enum { #define CPU_INTERRUPT_WAKE CPU_INTERRUPT_TGT_INT_0 int cpu_mips_exec(CPUMIPSState *s); +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); diff --git a/target-mips/translate.c b/target-mips/translate.c index d7f650e0bf130aacec081435ceee5719c4bbb284..4ee9615fdab07ed8cb624012b8c7d1e1ad00b07c 100644 --- a/target-mips/translate.c +++ b/target-mips/translate.c @@ -15836,7 +15836,7 @@ void cpu_dump_state (CPUMIPSState *env, FILE *f, fprintf_function cpu_fprintf, #endif } -static void mips_tcg_init(void) +void mips_tcg_init(void) { int i; static int inited; @@ -15915,7 +15915,6 @@ MIPSCPU *cpu_mips_init(const char *cpu_model) #endif fpu_init(env, def); mvp_init(env, def); - mips_tcg_init(); object_property_set_bool(OBJECT(cpu), true, "realized", NULL);