mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-25 04:30:02 +00:00
target/alpha: Remove use_exit_tb
We have not needed to end a TB for I/O since ba3e792669
("icount: clean up cpu_can_io at the entry to the block").
We do not need to use exit_tb for singlestep, which only
means generate one insn per TB.
Which leaves only singlestep_enabled, which means raise a
debug trap after every TB, which does not use exit_tb,
which would leave the function mis-named.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
d3a2a1d803
commit
cba201f4c7
@ -449,19 +449,8 @@ static bool in_superpage(DisasContext *ctx, int64_t addr)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool use_exit_tb(DisasContext *ctx)
|
|
||||||
{
|
|
||||||
return ((tb_cflags(ctx->base.tb) & CF_LAST_IO)
|
|
||||||
|| ctx->base.singlestep_enabled
|
|
||||||
|| singlestep);
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool use_goto_tb(DisasContext *ctx, uint64_t dest)
|
static bool use_goto_tb(DisasContext *ctx, uint64_t dest)
|
||||||
{
|
{
|
||||||
/* Suppress goto_tb in the case of single-steping and IO. */
|
|
||||||
if (unlikely(use_exit_tb(ctx))) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#ifndef CONFIG_USER_ONLY
|
#ifndef CONFIG_USER_ONLY
|
||||||
/* If the destination is in the superpage, the page perms can't change. */
|
/* If the destination is in the superpage, the page perms can't change. */
|
||||||
if (in_superpage(ctx, dest)) {
|
if (in_superpage(ctx, dest)) {
|
||||||
@ -1270,7 +1259,7 @@ static DisasJumpType gen_call_pal(DisasContext *ctx, int palcode)
|
|||||||
need the page permissions check. We'll see the existence of
|
need the page permissions check. We'll see the existence of
|
||||||
the page when we create the TB, and we'll flush all TBs if
|
the page when we create the TB, and we'll flush all TBs if
|
||||||
we change the PAL base register. */
|
we change the PAL base register. */
|
||||||
if (!use_exit_tb(ctx)) {
|
if (!ctx->base.singlestep_enabled) {
|
||||||
tcg_gen_goto_tb(0);
|
tcg_gen_goto_tb(0);
|
||||||
tcg_gen_movi_i64(cpu_pc, entry);
|
tcg_gen_movi_i64(cpu_pc, entry);
|
||||||
tcg_gen_exit_tb(ctx->base.tb, 0);
|
tcg_gen_exit_tb(ctx->base.tb, 0);
|
||||||
@ -3094,7 +3083,7 @@ static void alpha_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu)
|
|||||||
tcg_gen_movi_i64(cpu_pc, ctx->base.pc_next);
|
tcg_gen_movi_i64(cpu_pc, ctx->base.pc_next);
|
||||||
/* FALLTHRU */
|
/* FALLTHRU */
|
||||||
case DISAS_PC_UPDATED:
|
case DISAS_PC_UPDATED:
|
||||||
if (!use_exit_tb(ctx)) {
|
if (!ctx->base.singlestep_enabled) {
|
||||||
tcg_gen_lookup_and_goto_ptr();
|
tcg_gen_lookup_and_goto_ptr();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user