]> git.proxmox.com Git - qemu.git/commitdiff
mips: Break TBs after mfc0_count
authorEdgar E. Iglesias <edgar.iglesias@gmail.com>
Mon, 17 Jan 2011 22:00:08 +0000 (23:00 +0100)
committerEdgar E. Iglesias <edgar.iglesias@gmail.com>
Tue, 18 Jan 2011 11:32:46 +0000 (12:32 +0100)
Break the TB after reading the count register. This makes it
possible to take timer interrupts immediately after a read of
a possibly expired timer.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
target-mips/translate.c

index cce77be0d1c977ed4f7d42cf68dbb7b464c41697..187930e3d2a4b64560d69e543f62e6788470f530 100644 (file)
@@ -3410,8 +3410,10 @@ static void gen_mfc0 (CPUState *env, DisasContext *ctx, TCGv arg, int reg, int s
             gen_helper_mfc0_count(arg);
             if (use_icount) {
                 gen_io_end();
-                ctx->bstate = BS_STOP;
             }
+            /* Break the TB to be able to take timer interrupts immediately
+               after reading count.  */
+            ctx->bstate = BS_STOP;
             rn = "Count";
             break;
         /* 6,7 are implementation dependent */
@@ -4581,8 +4583,10 @@ static void gen_dmfc0 (CPUState *env, DisasContext *ctx, TCGv arg, int reg, int
             gen_helper_mfc0_count(arg);
             if (use_icount) {
                 gen_io_end();
-                ctx->bstate = BS_STOP;
             }
+            /* Break the TB to be able to take timer interrupts immediately
+               after reading count.  */
+            ctx->bstate = BS_STOP;
             rn = "Count";
             break;
         /* 6,7 are implementation dependent */