diff options
Diffstat (limited to 'target-mips/translate_init.c')
-rw-r--r-- | target-mips/translate_init.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/target-mips/translate_init.c b/target-mips/translate_init.c index 8270c59901..0026cd06ff 100644 --- a/target-mips/translate_init.c +++ b/target-mips/translate_init.c @@ -489,14 +489,17 @@ static void mmu_init (CPUMIPSState *env, const mips_def_t *def) static void fpu_init (CPUMIPSState *env, const mips_def_t *def) { - env->fpu = qemu_mallocz(sizeof(CPUMIPSFPUContext)); + int i; + + for (i = 0; i < MIPS_FPU_MAX; i++) + env->fpus[i].fcr0 = def->CP1_fcr0; - env->fpu->fcr0 = def->CP1_fcr0; + memcpy(&env->active_fpu, &env->fpus[0], sizeof(env->active_fpu)); if (env->user_mode_only) { if (env->CP0_Config1 & (1 << CP0C1_FP)) env->hflags |= MIPS_HFLAG_FPU; #ifdef TARGET_MIPS64 - if (env->fpu->fcr0 & (1 << FCR0_F64)) + if (env->active_fpu.fcr0 & (1 << FCR0_F64)) env->hflags |= MIPS_HFLAG_F64; #endif } |