aboutsummaryrefslogtreecommitdiff
path: root/target-sparc
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2006-06-21 18:26:15 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2006-06-21 18:26:15 +0000
commitee6c0b51e97c8bcad32181f42e63765b18c30354 (patch)
treea855a03cf50295c478b60fa842f6a1124dd680e7 /target-sparc
parent48dc41eb8bdccef274172ba8148c324d1ae9782b (diff)
sparc branch fix (Blue Swirl)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1999 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-sparc')
-rw-r--r--target-sparc/translate.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/target-sparc/translate.c b/target-sparc/translate.c
index 22d3ebcb2d..c19797e3bd 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -956,8 +956,8 @@ static void disas_sparc_insn(DisasContext * dc)
int cc;
target = GET_FIELD_SP(insn, 0, 18);
- target <<= 2;
target = sign_extend(target, 18);
+ target <<= 2;
cc = GET_FIELD_SP(insn, 20, 21);
if (cc == 0)
do_branch(dc, target, insn, 0);
@@ -971,8 +971,8 @@ static void disas_sparc_insn(DisasContext * dc)
{
target = GET_FIELD_SP(insn, 0, 13) |
(GET_FIELD_SP(insn, 20, 21) >> 7);
- target <<= 2;
target = sign_extend(target, 16);
+ target <<= 2;
rs1 = GET_FIELD(insn, 13, 17);
gen_movl_reg_T0(rs1);
do_branch_reg(dc, target, insn);
@@ -986,8 +986,8 @@ static void disas_sparc_insn(DisasContext * dc)
gen_op_trap_ifnofpu();
#endif
target = GET_FIELD_SP(insn, 0, 18);
- target <<= 2;
target = sign_extend(target, 19);
+ target <<= 2;
do_fbranch(dc, target, insn, cc);
goto jmp_insn;
}
@@ -995,8 +995,8 @@ static void disas_sparc_insn(DisasContext * dc)
case 0x2: /* BN+x */
{
target = GET_FIELD(insn, 10, 31);
- target <<= 2;
target = sign_extend(target, 22);
+ target <<= 2;
do_branch(dc, target, insn, 0);
goto jmp_insn;
}
@@ -1007,8 +1007,8 @@ static void disas_sparc_insn(DisasContext * dc)
gen_op_trap_ifnofpu();
#endif
target = GET_FIELD(insn, 10, 31);
- target <<= 2;
target = sign_extend(target, 22);
+ target <<= 2;
do_fbranch(dc, target, insn, 0);
goto jmp_insn;
}