gen_op_load_gpr_T0(rS(ctx->opcode));
gen_op_store_msr();
/* Must stop the translation as machine state (may have) changed */
- GEN_SYNC(ctx);
+ /* Note that mtmsr is not always defined as context-synchronizing */
+ GEN_STOP(ctx);
#endif
}
#endif
#endif
gen_op_store_msr();
/* Must stop the translation as machine state (may have) changed */
- GEN_SYNC(ctx);
+ /* Note that mtmsrd is not always defined as context-synchronizing */
+ GEN_STOP(ctx);
#endif
}
}
gen_op_load_gpr_T0(rD(ctx->opcode));
gen_op_wrte();
+ /* Stop translation to have a chance to raise an exception
+ * if we just set msr_ee to 1
+ */
GEN_STOP(ctx);
#endif
}
}
gen_op_set_T0(ctx->opcode & 0x00010000);
gen_op_wrte();
+ /* Stop translation to have a chance to raise an exception
+ * if we just set msr_ee to 1
+ */
GEN_STOP(ctx);
#endif
}
static void spr_write_ibatu (void *opaque, int sprn)
{
- DisasContext *ctx = opaque;
-
gen_op_store_ibatu((sprn - SPR_IBAT0U) / 2);
- GEN_STOP(ctx);
}
static void spr_write_ibatu_h (void *opaque, int sprn)
{
- DisasContext *ctx = opaque;
-
gen_op_store_ibatu((sprn - SPR_IBAT4U) / 2);
- GEN_STOP(ctx);
}
static void spr_write_ibatl (void *opaque, int sprn)
{
- DisasContext *ctx = opaque;
-
gen_op_store_ibatl((sprn - SPR_IBAT0L) / 2);
- GEN_STOP(ctx);
}
static void spr_write_ibatl_h (void *opaque, int sprn)
{
- DisasContext *ctx = opaque;
-
gen_op_store_ibatl((sprn - SPR_IBAT4L) / 2);
- GEN_STOP(ctx);
}
/* DBAT0U...DBAT7U */
static void spr_write_dbatu (void *opaque, int sprn)
{
- DisasContext *ctx = opaque;
-
gen_op_store_dbatu((sprn - SPR_DBAT0U) / 2);
- GEN_STOP(ctx);
}
static void spr_write_dbatu_h (void *opaque, int sprn)
{
- DisasContext *ctx = opaque;
-
gen_op_store_dbatu((sprn - SPR_DBAT4U) / 2);
- GEN_STOP(ctx);
}
static void spr_write_dbatl (void *opaque, int sprn)
{
- DisasContext *ctx = opaque;
-
gen_op_store_dbatl((sprn - SPR_DBAT0L) / 2);
- GEN_STOP(ctx);
}
static void spr_write_dbatl_h (void *opaque, int sprn)
{
- DisasContext *ctx = opaque;
-
gen_op_store_dbatl((sprn - SPR_DBAT4L) / 2);
- GEN_STOP(ctx);
}
/* SDR1 */
static void spr_write_sdr1 (void *opaque, int sprn)
{
- DisasContext *ctx = opaque;
-
gen_op_store_sdr1();
- GEN_STOP(ctx);
}
/* 64 bits PowerPC specific SPRs */
DisasContext *ctx = opaque;
gen_op_store_asr();
- GEN_STOP(ctx);
}
#endif
#endif
static void spr_write_601_ubatu (void *opaque, int sprn)
{
- DisasContext *ctx = opaque;
-
gen_op_store_601_batu((sprn - SPR_IBAT0U) / 2);
- GEN_STOP(ctx);
}
static void spr_write_601_ubatl (void *opaque, int sprn)
{
- DisasContext *ctx = opaque;
-
gen_op_store_601_batl((sprn - SPR_IBAT0L) / 2);
- GEN_STOP(ctx);
}
#endif
static void spr_write_40x_sler (void *opaque, int sprn)
{
- DisasContext *ctx = opaque;
-
gen_op_store_40x_sler();
- /* We must stop the translation as we may have changed
- * some regions endianness
- */
- GEN_STOP(ctx);
}
static void spr_write_booke_tcr (void *opaque, int sprn)
static void spr_write_403_pbr (void *opaque, int sprn)
{
- DisasContext *ctx = opaque;
-
gen_op_store_403_pb(sprn - SPR_403_PBL1);
- GEN_STOP(ctx);
}
static void spr_write_pir (void *opaque, int sprn)