On Tue, Oct 30, 2018 at 12:30:31PM +0300, Pavel Dovgalyuk wrote: > This patch fixes processing of mtmsr instructions in icount mode. > In this mode writing to interrupt/peripheral state is controlled > by can_do_io flag. This flag must be set explicitly before helper > function invocation. > > Signed-off-by: Maria Klimushenkova <maria.klimushenk...@ispras.ru> > Signed-off-by: Pavel Dovgalyuk <pavel.dovga...@ispras.ru>
Applied to ppc-for-3.1, thanks. > --- > target/ppc/translate.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/target/ppc/translate.c b/target/ppc/translate.c > index 4e59dd5..987ce6e 100644 > --- a/target/ppc/translate.c > +++ b/target/ppc/translate.c > @@ -4257,11 +4257,17 @@ static void gen_mtmsrd(DisasContext *ctx) > * if we enter power saving mode, we will exit the loop > * directly from ppc_store_msr > */ > + if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) { > + gen_io_start(); > + } > gen_update_nip(ctx, ctx->base.pc_next); > gen_helper_store_msr(cpu_env, cpu_gpr[rS(ctx->opcode)]); > /* Must stop the translation as machine state (may have) changed */ > /* Note that mtmsr is not always defined as context-synchronizing */ > gen_stop_exception(ctx); > + if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) { > + gen_io_end(); > + } > } > #endif /* !defined(CONFIG_USER_ONLY) */ > } > @@ -4286,6 +4292,9 @@ static void gen_mtmsr(DisasContext *ctx) > * if we enter power saving mode, we will exit the loop > * directly from ppc_store_msr > */ > + if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) { > + gen_io_start(); > + } > gen_update_nip(ctx, ctx->base.pc_next); > #if defined(TARGET_PPC64) > tcg_gen_deposit_tl(msr, cpu_msr, cpu_gpr[rS(ctx->opcode)], 0, 32); > @@ -4293,6 +4302,9 @@ static void gen_mtmsr(DisasContext *ctx) > tcg_gen_mov_tl(msr, cpu_gpr[rS(ctx->opcode)]); > #endif > gen_helper_store_msr(cpu_env, msr); > + if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) { > + gen_io_end(); > + } > tcg_temp_free(msr); > /* Must stop the translation as machine state (may have) changed */ > /* Note that mtmsr is not always defined as context-synchronizing */ > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature