diff --git a/qemu/target/arm/translate.h b/qemu/target/arm/translate.h index 265a6649..0ffea2ac 100644 --- a/qemu/target/arm/translate.h +++ b/qemu/target/arm/translate.h @@ -117,7 +117,7 @@ static inline void disas_set_insn_syndrome(DisasContext *s, uint32_t syn) /* We check and clear insn_start_idx to catch multiple updates. */ assert(s->insn_start != NULL); - tcg_set_insn_param(s->insn_start, 2, syn); + tcg_set_insn_start_param(s->insn_start, 2, syn); s->insn_start = NULL; } diff --git a/qemu/tcg/tcg.h b/qemu/tcg/tcg.h index 60b69bc2..603ed76d 100644 --- a/qemu/tcg/tcg.h +++ b/qemu/tcg/tcg.h @@ -1036,6 +1036,16 @@ static inline void tcg_set_insn_param(TCGOp *op, int arg, TCGArg v) op->args[arg] = v; } +static inline void tcg_set_insn_start_param(TCGOp *op, int arg, target_ulong v) +{ +#if TARGET_LONG_BITS <= TCG_TARGET_REG_BITS + tcg_set_insn_param(op, arg, v); +#else + tcg_set_insn_param(op, arg * 2, v); + tcg_set_insn_param(op, arg * 2 + 1, v >> 32); +#endif +} + /* The last op that was emitted. */ static inline TCGOp *tcg_last_op(TCGContext *tcg_ctx) {