Revision aa328add target-mips/translate.c

b/target-mips/translate.c
2817 2817
{
2818 2818
    const char *opn = "unk";
2819 2819

  
2820
    if (!(ctx->CP0_Status & (1 << CP0St_CU0)) &&
2821
        (ctx->hflags & MIPS_HFLAG_UM) &&
2820
    if ((!ctx->CP0_Status & (1 << CP0St_CU0) &&
2821
          (ctx->hflags & MIPS_HFLAG_UM)) &&
2822 2822
        !(ctx->hflags & MIPS_HFLAG_ERL) &&
2823 2823
        !(ctx->hflags & MIPS_HFLAG_EXL)) {
2824 2824
        if (loglevel & CPU_LOG_TB_IN_ASM) {
......
4048 4048
    tlb_flush(env, 1);
4049 4049

  
4050 4050
    /* Minimal init */
4051
    if (env->hflags & MIPS_HFLAG_BMASK) {
4052
        /* If the exception was raised from a delay slot,
4053
         * come back to the jump.  */
4054
        env->CP0_ErrorEPC = env->PC - 4;
4055
        env->hflags &= ~MIPS_HFLAG_BMASK;
4056
    } else {
4057
        env->CP0_ErrorEPC = env->PC;
4058
    }
4051 4059
    env->PC = 0xBFC00000;
4052 4060
#if defined (MIPS_USES_R4K_TLB)
4053 4061
    env->CP0_random = MIPS_TLB_NB - 1;
......
4060 4068
    env->CP0_Config1 = MIPS_CONFIG1;
4061 4069
    env->CP0_Config2 = MIPS_CONFIG2;
4062 4070
    env->CP0_Config3 = MIPS_CONFIG3;
4063
    env->CP0_Status = (1 << CP0St_CU0) | (1 << CP0St_BEV);
4071
    env->CP0_Status = (1 << CP0St_BEV) | (1 << CP0St_ERL);
4064 4072
    env->CP0_WatchLo = 0;
4065 4073
    env->hflags = MIPS_HFLAG_ERL;
4066 4074
    /* Count register increments in debug mode, EJTAG version 1 */

Also available in: Unified diff