Commit ee6c0b51e97c8bcad32181f42e63765b18c30354

Authored by bellard
1 parent 48dc41eb

sparc branch fix (Blue Swirl)


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1999 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 5 additions and 5 deletions
target-sparc/translate.c
@@ -956,8 +956,8 @@ static void disas_sparc_insn(DisasContext * dc) @@ -956,8 +956,8 @@ static void disas_sparc_insn(DisasContext * dc)
956 int cc; 956 int cc;
957 957
958 target = GET_FIELD_SP(insn, 0, 18); 958 target = GET_FIELD_SP(insn, 0, 18);
959 - target <<= 2;  
960 target = sign_extend(target, 18); 959 target = sign_extend(target, 18);
  960 + target <<= 2;
961 cc = GET_FIELD_SP(insn, 20, 21); 961 cc = GET_FIELD_SP(insn, 20, 21);
962 if (cc == 0) 962 if (cc == 0)
963 do_branch(dc, target, insn, 0); 963 do_branch(dc, target, insn, 0);
@@ -971,8 +971,8 @@ static void disas_sparc_insn(DisasContext * dc) @@ -971,8 +971,8 @@ static void disas_sparc_insn(DisasContext * dc)
971 { 971 {
972 target = GET_FIELD_SP(insn, 0, 13) | 972 target = GET_FIELD_SP(insn, 0, 13) |
973 (GET_FIELD_SP(insn, 20, 21) >> 7); 973 (GET_FIELD_SP(insn, 20, 21) >> 7);
974 - target <<= 2;  
975 target = sign_extend(target, 16); 974 target = sign_extend(target, 16);
  975 + target <<= 2;
976 rs1 = GET_FIELD(insn, 13, 17); 976 rs1 = GET_FIELD(insn, 13, 17);
977 gen_movl_reg_T0(rs1); 977 gen_movl_reg_T0(rs1);
978 do_branch_reg(dc, target, insn); 978 do_branch_reg(dc, target, insn);
@@ -986,8 +986,8 @@ static void disas_sparc_insn(DisasContext * dc) @@ -986,8 +986,8 @@ static void disas_sparc_insn(DisasContext * dc)
986 gen_op_trap_ifnofpu(); 986 gen_op_trap_ifnofpu();
987 #endif 987 #endif
988 target = GET_FIELD_SP(insn, 0, 18); 988 target = GET_FIELD_SP(insn, 0, 18);
989 - target <<= 2;  
990 target = sign_extend(target, 19); 989 target = sign_extend(target, 19);
  990 + target <<= 2;
991 do_fbranch(dc, target, insn, cc); 991 do_fbranch(dc, target, insn, cc);
992 goto jmp_insn; 992 goto jmp_insn;
993 } 993 }
@@ -995,8 +995,8 @@ static void disas_sparc_insn(DisasContext * dc) @@ -995,8 +995,8 @@ static void disas_sparc_insn(DisasContext * dc)
995 case 0x2: /* BN+x */ 995 case 0x2: /* BN+x */
996 { 996 {
997 target = GET_FIELD(insn, 10, 31); 997 target = GET_FIELD(insn, 10, 31);
998 - target <<= 2;  
999 target = sign_extend(target, 22); 998 target = sign_extend(target, 22);
  999 + target <<= 2;
1000 do_branch(dc, target, insn, 0); 1000 do_branch(dc, target, insn, 0);
1001 goto jmp_insn; 1001 goto jmp_insn;
1002 } 1002 }
@@ -1007,8 +1007,8 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1007,8 +1007,8 @@ static void disas_sparc_insn(DisasContext * dc)
1007 gen_op_trap_ifnofpu(); 1007 gen_op_trap_ifnofpu();
1008 #endif 1008 #endif
1009 target = GET_FIELD(insn, 10, 31); 1009 target = GET_FIELD(insn, 10, 31);
1010 - target <<= 2;  
1011 target = sign_extend(target, 22); 1010 target = sign_extend(target, 22);
  1011 + target <<= 2;
1012 do_fbranch(dc, target, insn, 0); 1012 do_fbranch(dc, target, insn, 0);
1013 goto jmp_insn; 1013 goto jmp_insn;
1014 } 1014 }