@@ -174,8 +174,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);
@@ -1549,7 +1551,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) {
tcg_gen_mov_i64(psw_addr, o->in2);
per_branch(s, false);
@@ -1564,7 +1566,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);
@@ -1594,7 +1596,7 @@ static DisasJumpType op_bal(DisasContext *s, DisasOps *o)
static DisasJumpType op_basi(DisasContext *s, DisasOps *o)
{
- pc_to_link_info(o->out, s, s->pc_tmp);
+ pc_to_link_info(o->out, s);
return help_goto_direct(s, (int64_t)get_field(s, i2) * 2);
}