Revision 3e382bc8

b/target-mips/helper.c
332 332
        } else {
333 333
            env->CP0_ErrorEPC = env->PC;
334 334
        }
335
        env->hflags = MIPS_HFLAG_ERL;
335
        env->hflags |= MIPS_HFLAG_ERL;
336
	env->CP0_Status |= (1 << CP0St_ERL);
336 337
        pc = 0xBFC00000;
337 338
        break;
338 339
    case EXCP_MCHECK:
......
396 397
            pc = 0x80000000;
397 398
        }
398 399
        env->hflags |= MIPS_HFLAG_EXL;
400
	env->CP0_Status |= (1 << CP0St_EXL);
399 401
        pc += offset;
400 402
        env->CP0_Cause = (env->CP0_Cause & ~0x7C) | (cause << 2);
401 403
        if (env->hflags & MIPS_HFLAG_BMASK) {
b/target-mips/op.c
1104 1104
    if (env->hflags & MIPS_HFLAG_ERL) {
1105 1105
        env->PC = env->CP0_ErrorEPC;
1106 1106
        env->hflags &= ~MIPS_HFLAG_ERL;
1107
	env->CP0_Status &= ~(1 << CP0St_ERL);
1107 1108
    } else {
1108 1109
        env->PC = env->CP0_EPC;
1109 1110
        env->hflags &= ~MIPS_HFLAG_EXL;
1111
	env->CP0_Status &= ~(1 << CP0St_EXL);
1110 1112
    }
1111 1113
    env->CP0_LLAddr = 1;
1112 1114
}
b/target-mips/op_helper.c
219 219
        T0 = env->CP0_Status;
220 220
        if (env->hflags & MIPS_HFLAG_UM)
221 221
            T0 |= (1 << CP0St_UM);
222
        if (env->hflags & MIPS_HFLAG_ERL)
223
            T0 |= (1 << CP0St_ERL);
224
        if (env->hflags & MIPS_HFLAG_EXL)
225
            T0 |= (1 << CP0St_EXL);
226 222
        rn = "Status";
227 223
        break;
228 224
    case 13:

Also available in: Unified diff