stmt(IRStmt_Exit(condition, Ijk_Boring, IRConst_U64(target),
S390X_GUEST_OFFSET(guest_IA)));
- put_IA(mkaddr_expr(target));
+ put_IA(mkaddr_expr(guest_IA_next_instr));
dis_res->whatNext = Dis_StopHere;
dis_res->jk_StopHere = Ijk_Boring;
{
s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
- insn->tag = S390_INSN_XASSISTED;
+ insn->tag = S390_INSN_XINDIR;
insn->size = 0; /* does not matter */
- insn->variant.xdirect.cond = cond;
- insn->variant.xdirect.dst = dst;
- insn->variant.xdirect.guest_IA = guest_IA;
+ insn->variant.xindir.cond = cond;
+ insn->variant.xindir.dst = dst;
+ insn->variant.xindir.guest_IA = guest_IA;
return insn;
}
}
/* Update the guest IA with the address in xdirect.dst. */
- const s390_amode *amode = insn->variant.xdirect.guest_IA;
+ const s390_amode *amode = insn->variant.xindir.guest_IA;
vassert(amode->tag == S390_AMODE_B12 || amode->tag == S390_AMODE_BX12);
UInt b = hregNumber(amode->b);
UInt x = hregNumber(amode->x); /* 0 for B12 and B20 */
UInt d = amode->d;
- UInt regno = hregNumber(insn->variant.xdirect.dst);
+ UInt regno = hregNumber(insn->variant.xindir.dst);
buf = s390_emit_STG(buf, regno, x, b, DISP20(d));