Fix logic bug which broke TLBL/TLBS handling somewhat.
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 29 Oct 2007 02:57:19 +0000 (02:57 +0000)
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 29 Oct 2007 02:57:19 +0000 (02:57 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3478 c046a42c-6fe2-441c-8c8c-71466251a162

target-mips/helper.c

index 708641c..933a6ac 100644 (file)
@@ -472,9 +472,6 @@ void do_interrupt (CPUState *env)
         goto set_EPC;
     case EXCP_TLBS:
         cause = 3;
-        goto set_EPC;
-    case EXCP_THREAD:
-        cause = 25;
         if (env->error_code == 1 && !(env->CP0_Status & (1 << CP0St_EXL))) {
 #if defined(TARGET_MIPSN32) || defined(TARGET_MIPS64)
             int R = env->CP0_BadVAddr >> 62;
@@ -488,6 +485,9 @@ void do_interrupt (CPUState *env)
 #endif
                 offset = 0x000;
         }
+        goto set_EPC;
+    case EXCP_THREAD:
+        cause = 25;
     set_EPC:
         if (!(env->CP0_Status & (1 << CP0St_EXL))) {
             if (env->hflags & MIPS_HFLAG_BMASK) {