mirror of https://github.com/xqemu/xqemu.git
sparc branch fix (Blue Swirl)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1999 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
48dc41eb8b
commit
ee6c0b51e9
|
@ -956,8 +956,8 @@ static void disas_sparc_insn(DisasContext * dc)
|
||||||
int cc;
|
int cc;
|
||||||
|
|
||||||
target = GET_FIELD_SP(insn, 0, 18);
|
target = GET_FIELD_SP(insn, 0, 18);
|
||||||
target <<= 2;
|
|
||||||
target = sign_extend(target, 18);
|
target = sign_extend(target, 18);
|
||||||
|
target <<= 2;
|
||||||
cc = GET_FIELD_SP(insn, 20, 21);
|
cc = GET_FIELD_SP(insn, 20, 21);
|
||||||
if (cc == 0)
|
if (cc == 0)
|
||||||
do_branch(dc, target, insn, 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) |
|
target = GET_FIELD_SP(insn, 0, 13) |
|
||||||
(GET_FIELD_SP(insn, 20, 21) >> 7);
|
(GET_FIELD_SP(insn, 20, 21) >> 7);
|
||||||
target <<= 2;
|
|
||||||
target = sign_extend(target, 16);
|
target = sign_extend(target, 16);
|
||||||
|
target <<= 2;
|
||||||
rs1 = GET_FIELD(insn, 13, 17);
|
rs1 = GET_FIELD(insn, 13, 17);
|
||||||
gen_movl_reg_T0(rs1);
|
gen_movl_reg_T0(rs1);
|
||||||
do_branch_reg(dc, target, insn);
|
do_branch_reg(dc, target, insn);
|
||||||
|
@ -986,8 +986,8 @@ static void disas_sparc_insn(DisasContext * dc)
|
||||||
gen_op_trap_ifnofpu();
|
gen_op_trap_ifnofpu();
|
||||||
#endif
|
#endif
|
||||||
target = GET_FIELD_SP(insn, 0, 18);
|
target = GET_FIELD_SP(insn, 0, 18);
|
||||||
target <<= 2;
|
|
||||||
target = sign_extend(target, 19);
|
target = sign_extend(target, 19);
|
||||||
|
target <<= 2;
|
||||||
do_fbranch(dc, target, insn, cc);
|
do_fbranch(dc, target, insn, cc);
|
||||||
goto jmp_insn;
|
goto jmp_insn;
|
||||||
}
|
}
|
||||||
|
@ -995,8 +995,8 @@ static void disas_sparc_insn(DisasContext * dc)
|
||||||
case 0x2: /* BN+x */
|
case 0x2: /* BN+x */
|
||||||
{
|
{
|
||||||
target = GET_FIELD(insn, 10, 31);
|
target = GET_FIELD(insn, 10, 31);
|
||||||
target <<= 2;
|
|
||||||
target = sign_extend(target, 22);
|
target = sign_extend(target, 22);
|
||||||
|
target <<= 2;
|
||||||
do_branch(dc, target, insn, 0);
|
do_branch(dc, target, insn, 0);
|
||||||
goto jmp_insn;
|
goto jmp_insn;
|
||||||
}
|
}
|
||||||
|
@ -1007,8 +1007,8 @@ static void disas_sparc_insn(DisasContext * dc)
|
||||||
gen_op_trap_ifnofpu();
|
gen_op_trap_ifnofpu();
|
||||||
#endif
|
#endif
|
||||||
target = GET_FIELD(insn, 10, 31);
|
target = GET_FIELD(insn, 10, 31);
|
||||||
target <<= 2;
|
|
||||||
target = sign_extend(target, 22);
|
target = sign_extend(target, 22);
|
||||||
|
target <<= 2;
|
||||||
do_fbranch(dc, target, insn, 0);
|
do_fbranch(dc, target, insn, 0);
|
||||||
goto jmp_insn;
|
goto jmp_insn;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue