@@ -172,8 +172,10 @@ static void gen_psw_addr_disp(DisasContext *s, TCGv_i64 dest, int64_t disp)
tcg_gen_movi_i64(dest, s->base.pc_next + disp);
}
-static void pc_to_link_info(TCGv_i64 out, DisasContext *s, uint64_t pc)
+static void pc_to_link_info(TCGv_i64 out, DisasContext *s)
{
+ uint64_t pc = s->pc_tmp;
+
if (s->base.tb->flags & FLAG_MASK_32) {
if (s->base.tb->flags & FLAG_MASK_64) {
tcg_gen_movi_i64(out, pc);
@@ -1404,7 +1406,7 @@ static DisasJumpType op_ni(DisasContext *s, DisasOps *o)
static DisasJumpType op_bas(DisasContext *s, DisasOps *o)
{
- pc_to_link_info(o->out, s, s->pc_tmp);
+ pc_to_link_info(o->out, s);
if (o->in2) {
return help_goto_indirect(s, o->in2);
} else {
@@ -1417,7 +1419,7 @@ static void save_link_info(DisasContext *s, DisasOps *o)
TCGv_i64 t;
if (s->base.tb->flags & (FLAG_MASK_32 | FLAG_MASK_64)) {
- pc_to_link_info(o->out, s, s->pc_tmp);
+ pc_to_link_info(o->out, s);
return;
}
gen_op_calc_cc(s);
@@ -1474,7 +1476,7 @@ static DisasJumpType op_basi(DisasContext *s, DisasOps *o)
bool is_imm;
int imm;
- pc_to_link_info(o->out, s, s->pc_tmp);
+ pc_to_link_info(o->out, s);
disas_jdest(s, i2, is_imm, imm, o->in2);
disas_jcc(s, &c, 0xf);