target-s390: Tidy unconditional BRCL
authorRichard Henderson <rth@twiddle.net>
Sat, 22 Sep 2012 12:28:43 +0000 (05:28 -0700)
committerRichard Henderson <rth@twiddle.net>
Sat, 5 Jan 2013 20:00:27 +0000 (12:00 -0800)
Yes, we're about to rewrite all of this, but having this unconditional
jump recompute cc_op is a large source of "false diff errors" when
trying to examine before and after dumps.

Signed-off-by: Richard Henderson <rth@twiddle.net>
target-s390x/translate.c

index 79ab3e5344f0ee2fac331293159d3756ae6d83dc..b8f2ca8678a6dd63262c6ea093b4d9b7f437c785 100644 (file)
@@ -3706,6 +3706,11 @@ static void disas_c0(CPUS390XState *env, DisasContext *s, int op, int r1, int i2
         tcg_temp_free_i64(tmp);
         break;
     case 0x4: /* BRCL     M1,I2     [RIL] */
+        if (r1 == 15) { /* m1 == r1 */
+            gen_goto_tb(s, 0, target);
+            s->is_jmp = DISAS_TB_JUMP;
+            break;
+        }
         /* m1 & (1 << (3 - cc)) */
         tmp32_1 = tcg_const_i32(3);
         tmp32_2 = tcg_const_i32(1);