From ee6c0b51e97c8bcad32181f42e63765b18c30354 Mon Sep 17 00:00:00 2001
From: bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Date: Wed, 21 Jun 2006 18:26:15 +0000
Subject: [PATCH] sparc branch fix (Blue Swirl)

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1999 c046a42c-6fe2-441c-8c8c-71466251a162
---
 target-sparc/translate.c | 10 +++++-----
 1 file 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;
 		}
-- 
2.30.2