summaryrefslogtreecommitdiff
path: root/target-sparc
diff options
context:
space:
mode:
authorBlue Swirl <blauwirbel@gmail.com>2009-08-22 11:46:10 +0000
committerBlue Swirl <blauwirbel@gmail.com>2009-08-22 11:46:10 +0000
commitc27e27528f9811f47a36c83189dab558f6c54248 (patch)
tree48917d4ed22da2b587575a513723ed027a82e3b9 /target-sparc
parent10ee2aaa417d8d8978cdb2bbed55ebb152df5f6b (diff)
downloadqemu-c27e27528f9811f47a36c83189dab558f6c54248.tar.gz
qemu-c27e27528f9811f47a36c83189dab558f6c54248.tar.bz2
qemu-c27e27528f9811f47a36c83189dab558f6c54248.zip
Sparc32/64: fix jmpl followed by branch
Fix a case where 'jmpl' instruction followed by a branch instruction was handled incorrectly. Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Diffstat (limited to 'target-sparc')
-rw-r--r--target-sparc/translate.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/target-sparc/translate.c b/target-sparc/translate.c
index 9bbfd3cd23..61578ecc3c 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -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);