Clear BD slot on next exception if appropriate.
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 7 May 2007 12:46:25 +0000 (12:46 +0000)
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 7 May 2007 12:46:25 +0000 (12:46 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2777 c046a42c-6fe2-441c-8c8c-71466251a162

target-mips/helper.c

index 71a9723..8d9435a 100644 (file)
@@ -302,6 +302,8 @@ void do_interrupt (CPUState *env)
         env->hflags |= MIPS_HFLAG_DM;
         env->hflags &= ~MIPS_HFLAG_UM;
         /* EJTAG probe trap enable is not implemented... */
+        if (!(env->CP0_Status & (1 << CP0St_EXL)))
+            env->CP0_Cause &= ~(1 << CP0Ca_BD);
         env->PC = (int32_t)0xBFC00480;
         break;
     case EXCP_RESET:
@@ -324,6 +326,8 @@ void do_interrupt (CPUState *env)
         }
         env->CP0_Status |= (1 << CP0St_ERL) | (1 << CP0St_BEV);
         env->hflags &= ~MIPS_HFLAG_UM;
+        if (!(env->CP0_Status & (1 << CP0St_EXL)))
+            env->CP0_Cause &= ~(1 << CP0Ca_BD);
         env->PC = (int32_t)0xBFC00000;
         break;
     case EXCP_MCHECK: