]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
For a special opcode the address of the next insn was
authorFlorian Krohm <florian@eich-krohm.de>
Mon, 1 Aug 2011 22:07:51 +0000 (22:07 +0000)
committerFlorian Krohm <florian@eich-krohm.de>
Mon, 1 Aug 2011 22:07:51 +0000 (22:07 +0000)
not computed correctly. It would point to an insn in
the middle of the the pattern that identifies a special opcode.
That didn't hurt much but was confusing. Now fixed.

git-svn-id: svn://svn.valgrind.org/vex/trunk@2187

VEX/priv/guest_s390_toIR.c

index 8ec201b227fecff5ff1f5d80851f1cdee42d7399..ce0722c708665f63e5c8569616a45e5a2abf5c2a 100644 (file)
@@ -12943,9 +12943,12 @@ s390_decode_and_irgen(UChar *bytes, UInt insn_length, DisResult *dres)
 
       /* Handle special instruction that follows that preamble. */
       if (0) vex_printf("special function handling...\n");
-      bytes += S390_SPECIAL_OP_PREAMBLE_SIZE;
-      status = s390_decode_special_and_irgen(bytes);
-      insn_length = S390_SPECIAL_OP_SIZE;
+
+      insn_length = S390_SPECIAL_OP_PREAMBLE_SIZE + S390_SPECIAL_OP_SIZE;
+      guest_IA_next_instr = guest_IA_curr_instr + insn_length;
+
+      status =
+         s390_decode_special_and_irgen(bytes + S390_SPECIAL_OP_PREAMBLE_SIZE);
    } else {
       /* Handle normal instructions. */
       switch (insn_length) {