Sparc32/64: fix jmpl followed by branch
authorBlue Swirl <blauwirbel@gmail.com>
Sat, 22 Aug 2009 11:46:10 +0000 (11:46 +0000)
committerBlue Swirl <blauwirbel@gmail.com>
Sat, 22 Aug 2009 11:46:10 +0000 (11:46 +0000)
Fix a case where 'jmpl' instruction followed by a branch instruction was
handled incorrectly.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>

target-sparc/translate.c

index 9bbfd3c..61578ec 100644 (file)
@@ -1134,6 +1134,7 @@ static void do_branch(DisasContext *dc, int32_t offset, uint32_t insn, int cc,
         } else {
             dc->pc = dc->npc;
             dc->npc = target;
+            tcg_gen_mov_tl(cpu_pc, cpu_npc);
         }
     } else {
         flush_cond(dc, r_cond);
@@ -1174,6 +1175,7 @@ static void do_fbranch(DisasContext *dc, int32_t offset, uint32_t insn, int cc,
         } else {
             dc->pc = dc->npc;
             dc->npc = target;
+            tcg_gen_mov_tl(cpu_pc, cpu_npc);
         }
     } else {
         flush_cond(dc, r_cond);