提交 3e382bc8 编写于 作者: B bellard

consistent update of ERL and EXL

(Dirk Behme)


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2028 c046a42c-6fe2-441c-8c8c-71466251a162
上级 beac80cd
...@@ -332,7 +332,8 @@ void do_interrupt (CPUState *env) ...@@ -332,7 +332,8 @@ void do_interrupt (CPUState *env)
} else { } else {
env->CP0_ErrorEPC = env->PC; env->CP0_ErrorEPC = env->PC;
} }
env->hflags = MIPS_HFLAG_ERL; env->hflags |= MIPS_HFLAG_ERL;
env->CP0_Status |= (1 << CP0St_ERL);
pc = 0xBFC00000; pc = 0xBFC00000;
break; break;
case EXCP_MCHECK: case EXCP_MCHECK:
...@@ -396,6 +397,7 @@ void do_interrupt (CPUState *env) ...@@ -396,6 +397,7 @@ void do_interrupt (CPUState *env)
pc = 0x80000000; pc = 0x80000000;
} }
env->hflags |= MIPS_HFLAG_EXL; env->hflags |= MIPS_HFLAG_EXL;
env->CP0_Status |= (1 << CP0St_EXL);
pc += offset; pc += offset;
env->CP0_Cause = (env->CP0_Cause & ~0x7C) | (cause << 2); env->CP0_Cause = (env->CP0_Cause & ~0x7C) | (cause << 2);
if (env->hflags & MIPS_HFLAG_BMASK) { if (env->hflags & MIPS_HFLAG_BMASK) {
......
...@@ -1104,9 +1104,11 @@ void op_eret (void) ...@@ -1104,9 +1104,11 @@ void op_eret (void)
if (env->hflags & MIPS_HFLAG_ERL) { if (env->hflags & MIPS_HFLAG_ERL) {
env->PC = env->CP0_ErrorEPC; env->PC = env->CP0_ErrorEPC;
env->hflags &= ~MIPS_HFLAG_ERL; env->hflags &= ~MIPS_HFLAG_ERL;
env->CP0_Status &= ~(1 << CP0St_ERL);
} else { } else {
env->PC = env->CP0_EPC; env->PC = env->CP0_EPC;
env->hflags &= ~MIPS_HFLAG_EXL; env->hflags &= ~MIPS_HFLAG_EXL;
env->CP0_Status &= ~(1 << CP0St_EXL);
} }
env->CP0_LLAddr = 1; env->CP0_LLAddr = 1;
} }
......
...@@ -219,10 +219,6 @@ void do_mfc0 (int reg, int sel) ...@@ -219,10 +219,6 @@ void do_mfc0 (int reg, int sel)
T0 = env->CP0_Status; T0 = env->CP0_Status;
if (env->hflags & MIPS_HFLAG_UM) if (env->hflags & MIPS_HFLAG_UM)
T0 |= (1 << CP0St_UM); T0 |= (1 << CP0St_UM);
if (env->hflags & MIPS_HFLAG_ERL)
T0 |= (1 << CP0St_ERL);
if (env->hflags & MIPS_HFLAG_EXL)
T0 |= (1 << CP0St_EXL);
rn = "Status"; rn = "Status";
break; break;
case 13: case 13:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册