target-arm: Add condexec state to insn_start
authorRichard Henderson <rth@twiddle.net>
Sun, 30 Aug 2015 16:22:06 +0000 (09:22 -0700)
committerRichard Henderson <rth@twiddle.net>
Wed, 7 Oct 2015 09:36:46 +0000 (20:36 +1100)
Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <rth@twiddle.net>
target-arm/cpu.h
target-arm/translate-a64.c
target-arm/translate.c

index cc1578c9e81539a71b6a5536f987c7085d5086e2..cebd46360e1b1494ec85f65cabc867d7e149c626 100644 (file)
@@ -95,6 +95,7 @@
 struct arm_boot_info;
 
 #define NB_MMU_MODES 7
+#define TARGET_INSN_START_EXTRA_WORDS 1
 
 /* We currently assume float and double are IEEE single and double
    precision respectively.
index bc2040e47bf87590d6b8335d84f5d5e2d7ea339b..654a58645c156a2d99b4818df768f0cfedef1862 100644 (file)
@@ -11090,7 +11090,7 @@ void gen_intermediate_code_internal_a64(ARMCPU *cpu,
             tcg_ctx.gen_opc_instr_start[lj] = 1;
             tcg_ctx.gen_opc_icount[lj] = num_insns;
         }
-        tcg_gen_insn_start(dc->pc);
+        tcg_gen_insn_start(dc->pc, 0);
         num_insns++;
 
         if (unlikely(!QTAILQ_EMPTY(&cs->breakpoints))) {
index 44468dca1f45ad82d821d898481a75d3ab4e199d..fb69ecb03d463c0305bcd51162a590ca66c81a64 100644 (file)
@@ -11317,7 +11317,8 @@ static inline void gen_intermediate_code_internal(ARMCPU *cpu,
             tcg_ctx.gen_opc_instr_start[lj] = 1;
             tcg_ctx.gen_opc_icount[lj] = num_insns;
         }
-        tcg_gen_insn_start(dc->pc);
+        tcg_gen_insn_start(dc->pc,
+                           (dc->condexec_cond << 4) | (dc->condexec_mask >> 1));
         num_insns++;
 
 #ifdef CONFIG_USER_ONLY