]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
First round of fixes: some cut'n paste errors. And the guest_IA in
authorFlorian Krohm <florian@eich-krohm.de>
Fri, 13 Apr 2012 21:14:24 +0000 (21:14 +0000)
committerFlorian Krohm <florian@eich-krohm.de>
Fri, 13 Apr 2012 21:14:24 +0000 (21:14 +0000)
a conditional jump.

git-svn-id: svn://svn.valgrind.org/vex/branches/TCHAIN@2281

VEX/priv/guest_s390_toIR.c
VEX/priv/host_s390_defs.c

index 5befc74fad06bbcebff11b92ff2a5633f6aeb0db..8a8b9fbe9470aa4df9442f6c6b087f9adf666434 100644 (file)
@@ -331,7 +331,7 @@ if_condition_goto(IRExpr *condition, Addr64 target)
    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;
index 0a3d98d38e60f1fd1be31f928bd46ca4880a9ea9..a42e24abe3c733056032650e1bc17b1d60232a18 100644 (file)
@@ -4539,12 +4539,12 @@ s390_insn_xindir(s390_cc_t cond, HReg dst, s390_amode *guest_IA)
 {
    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;
 }
@@ -7408,13 +7408,13 @@ s390_insn_xindir_emit(UChar *buf, const s390_insn *insn, void *disp_cp_xindir)
    }
 
    /* 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));