Revision 41db4607 target-mips/translate.c

b/target-mips/translate.c
429 429
static TCGv_ptr cpu_env;
430 430
static TCGv cpu_gpr[32], cpu_PC;
431 431
static TCGv cpu_HI[MIPS_DSP_ACC], cpu_LO[MIPS_DSP_ACC], cpu_ACX[MIPS_DSP_ACC];
432
static TCGv cpu_dspctrl, btarget;
433
static TCGv bcond;
432
static TCGv cpu_dspctrl, btarget, bcond;
433
static TCGv_i32 hflags;
434 434
static TCGv_i32 fpu_fpr32[32], fpu_fpr32h[32];
435 435
static TCGv_i32 fpu_fcr0, fpu_fcr31;
436 436

  
......
758 758
        ctx->saved_pc = ctx->pc;
759 759
    }
760 760
    if (ctx->hflags != ctx->saved_hflags) {
761
        TCGv_i32 r_tmp = tcg_temp_new_i32();
762

  
763
        tcg_gen_movi_i32(r_tmp, ctx->hflags);
764
        tcg_gen_st_i32(r_tmp, cpu_env, offsetof(CPUState, hflags));
765
        tcg_temp_free_i32(r_tmp);
761
        tcg_gen_movi_i32(hflags, ctx->hflags);
766 762
        ctx->saved_hflags = ctx->hflags;
767 763
        switch (ctx->hflags & MIPS_HFLAG_BMASK) {
768 764
        case MIPS_HFLAG_BR:
......
7555 7551

  
7556 7552
        MIPS_DEBUG("blikely condition (" TARGET_FMT_lx ")", ctx->pc + 4);
7557 7553
        tcg_gen_brcondi_tl(TCG_COND_NE, bcond, 0, l1);
7558
        {
7559
            TCGv_i32 r_tmp = tcg_temp_new_i32();
7560

  
7561
            tcg_gen_movi_i32(r_tmp, ctx->hflags & ~MIPS_HFLAG_BMASK);
7562
            tcg_gen_st_i32(r_tmp, cpu_env, offsetof(CPUState, hflags));
7563
            tcg_temp_free_i32(r_tmp);
7564
        }
7554
        tcg_gen_movi_i32(hflags, ctx->hflags & ~MIPS_HFLAG_BMASK);
7565 7555
        gen_goto_tb(ctx, 1, ctx->pc + 4);
7566 7556
        gen_set_label(l1);
7567 7557
    }
......
8413 8403
                               offsetof(CPUState, bcond), "bcond");
8414 8404
    btarget = tcg_global_mem_new(TCG_AREG0,
8415 8405
                                 offsetof(CPUState, btarget), "btarget");
8406
    hflags = tcg_global_mem_new_i32(TCG_AREG0,
8407
                                    offsetof(CPUState, hflags), "hflags");
8408

  
8416 8409
    for (i = 0; i < 32; i++)
8417 8410
        fpu_fpr32[i] = tcg_global_mem_new_i32(TCG_AREG0,
8418 8411
            offsetof(CPUState, active_fpu.fpr[i].w[FP_ENDIAN_IDX]),

Also available in: Unified diff