mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
accel/tcg: Name gen_goto_tb()'s TB slot index as @tb_slot_idx
tcg_gen_goto_tb() takes an unsigned index to the TB slot (0 or 1). Declare the argument as unsigned and rename it as @tb_slot_idx (which is more descriptive than @n) on all targets. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Message-Id: <20251010031745.37528-1-philmd@linaro.org>
This commit is contained in:
@@ -436,18 +436,18 @@ static DisasJumpType gen_store_conditional(DisasContext *ctx, int ra, int rb,
|
||||
return DISAS_NEXT;
|
||||
}
|
||||
|
||||
static void gen_goto_tb(DisasContext *ctx, int idx, int32_t disp)
|
||||
static void gen_goto_tb(DisasContext *ctx, unsigned tb_slot_idx, int32_t disp)
|
||||
{
|
||||
if (translator_use_goto_tb(&ctx->base, ctx->base.pc_next + disp)) {
|
||||
/* With PCREL, PC must always be up-to-date. */
|
||||
if (ctx->pcrel) {
|
||||
gen_pc_disp(ctx, cpu_pc, disp);
|
||||
tcg_gen_goto_tb(idx);
|
||||
tcg_gen_goto_tb(tb_slot_idx);
|
||||
} else {
|
||||
tcg_gen_goto_tb(idx);
|
||||
tcg_gen_goto_tb(tb_slot_idx);
|
||||
gen_pc_disp(ctx, cpu_pc, disp);
|
||||
}
|
||||
tcg_gen_exit_tb(ctx->base.tb, idx);
|
||||
tcg_gen_exit_tb(ctx->base.tb, tb_slot_idx);
|
||||
} else {
|
||||
gen_pc_disp(ctx, cpu_pc, disp);
|
||||
tcg_gen_lookup_and_goto_ptr();
|
||||
|
||||
@@ -528,7 +528,7 @@ static inline bool use_goto_tb(DisasContext *s, uint64_t dest)
|
||||
return translator_use_goto_tb(&s->base, dest);
|
||||
}
|
||||
|
||||
static void gen_goto_tb(DisasContext *s, int n, int64_t diff)
|
||||
static void gen_goto_tb(DisasContext *s, unsigned tb_slot_idx, int64_t diff)
|
||||
{
|
||||
if (use_goto_tb(s, s->pc_curr + diff)) {
|
||||
/*
|
||||
@@ -541,12 +541,12 @@ static void gen_goto_tb(DisasContext *s, int n, int64_t diff)
|
||||
*/
|
||||
if (tb_cflags(s->base.tb) & CF_PCREL) {
|
||||
gen_a64_update_pc(s, diff);
|
||||
tcg_gen_goto_tb(n);
|
||||
tcg_gen_goto_tb(tb_slot_idx);
|
||||
} else {
|
||||
tcg_gen_goto_tb(n);
|
||||
tcg_gen_goto_tb(tb_slot_idx);
|
||||
gen_a64_update_pc(s, diff);
|
||||
}
|
||||
tcg_gen_exit_tb(s->base.tb, n);
|
||||
tcg_gen_exit_tb(s->base.tb, tb_slot_idx);
|
||||
s->base.is_jmp = DISAS_NORETURN;
|
||||
} else {
|
||||
gen_a64_update_pc(s, diff);
|
||||
|
||||
@@ -1310,7 +1310,7 @@ static void gen_goto_ptr(void)
|
||||
* cpu_loop_exec. Any live exit_requests will be processed as we
|
||||
* enter the next TB.
|
||||
*/
|
||||
static void gen_goto_tb(DisasContext *s, int n, target_long diff)
|
||||
static void gen_goto_tb(DisasContext *s, unsigned tb_slot_idx, target_long diff)
|
||||
{
|
||||
if (translator_use_goto_tb(&s->base, s->pc_curr + diff)) {
|
||||
/*
|
||||
@@ -1323,12 +1323,12 @@ static void gen_goto_tb(DisasContext *s, int n, target_long diff)
|
||||
*/
|
||||
if (tb_cflags(s->base.tb) & CF_PCREL) {
|
||||
gen_update_pc(s, diff);
|
||||
tcg_gen_goto_tb(n);
|
||||
tcg_gen_goto_tb(tb_slot_idx);
|
||||
} else {
|
||||
tcg_gen_goto_tb(n);
|
||||
tcg_gen_goto_tb(tb_slot_idx);
|
||||
gen_update_pc(s, diff);
|
||||
}
|
||||
tcg_gen_exit_tb(s->base.tb, n);
|
||||
tcg_gen_exit_tb(s->base.tb, tb_slot_idx);
|
||||
} else {
|
||||
gen_update_pc(s, diff);
|
||||
gen_goto_ptr();
|
||||
|
||||
@@ -981,14 +981,15 @@ static void gen_pop_ret(DisasContext *ctx, TCGv ret)
|
||||
}
|
||||
}
|
||||
|
||||
static void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest)
|
||||
static void gen_goto_tb(DisasContext *ctx, unsigned tb_slot_idx,
|
||||
target_ulong dest)
|
||||
{
|
||||
const TranslationBlock *tb = ctx->base.tb;
|
||||
|
||||
if (translator_use_goto_tb(&ctx->base, dest)) {
|
||||
tcg_gen_goto_tb(n);
|
||||
tcg_gen_goto_tb(tb_slot_idx);
|
||||
tcg_gen_movi_i32(cpu_pc, dest);
|
||||
tcg_gen_exit_tb(tb, n);
|
||||
tcg_gen_exit_tb(tb, tb_slot_idx);
|
||||
} else {
|
||||
tcg_gen_movi_i32(cpu_pc, dest);
|
||||
tcg_gen_lookup_and_goto_ptr();
|
||||
|
||||
@@ -133,15 +133,15 @@ static bool use_goto_tb(DisasContext *ctx, target_ulong dest)
|
||||
return translator_use_goto_tb(&ctx->base, dest);
|
||||
}
|
||||
|
||||
static void gen_goto_tb(DisasContext *ctx, int idx, target_ulong dest, bool
|
||||
move_to_pc)
|
||||
static void gen_goto_tb(DisasContext *ctx, unsigned tb_slot_idx,
|
||||
target_ulong dest, bool move_to_pc)
|
||||
{
|
||||
if (use_goto_tb(ctx, dest)) {
|
||||
tcg_gen_goto_tb(idx);
|
||||
tcg_gen_goto_tb(tb_slot_idx);
|
||||
if (move_to_pc) {
|
||||
tcg_gen_movi_tl(hex_gpr[HEX_REG_PC], dest);
|
||||
}
|
||||
tcg_gen_exit_tb(ctx->base.tb, idx);
|
||||
tcg_gen_exit_tb(ctx->base.tb, tb_slot_idx);
|
||||
} else {
|
||||
if (move_to_pc) {
|
||||
tcg_gen_movi_tl(hex_gpr[HEX_REG_PC], dest);
|
||||
|
||||
@@ -99,16 +99,17 @@ void generate_exception(DisasContext *ctx, int excp)
|
||||
ctx->base.is_jmp = DISAS_NORETURN;
|
||||
}
|
||||
|
||||
static inline void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest)
|
||||
static void gen_goto_tb(DisasContext *ctx, unsigned tb_slot_idx,
|
||||
target_ulong dest)
|
||||
{
|
||||
if (ctx->va32) {
|
||||
dest = (uint32_t) dest;
|
||||
}
|
||||
|
||||
if (translator_use_goto_tb(&ctx->base, dest)) {
|
||||
tcg_gen_goto_tb(n);
|
||||
tcg_gen_goto_tb(tb_slot_idx);
|
||||
tcg_gen_movi_tl(cpu_pc, dest);
|
||||
tcg_gen_exit_tb(ctx->base.tb, n);
|
||||
tcg_gen_exit_tb(ctx->base.tb, tb_slot_idx);
|
||||
} else {
|
||||
tcg_gen_movi_tl(cpu_pc, dest);
|
||||
tcg_gen_lookup_and_goto_ptr();
|
||||
|
||||
@@ -116,12 +116,13 @@ static void gen_raise_hw_excp(DisasContext *dc, uint32_t esr_ec)
|
||||
gen_raise_exception_sync(dc, EXCP_HW_EXCP);
|
||||
}
|
||||
|
||||
static void gen_goto_tb(DisasContext *dc, int n, target_ulong dest)
|
||||
static void gen_goto_tb(DisasContext *dc, unsigned tb_slot_idx,
|
||||
target_ulong dest)
|
||||
{
|
||||
if (translator_use_goto_tb(&dc->base, dest)) {
|
||||
tcg_gen_goto_tb(n);
|
||||
tcg_gen_goto_tb(tb_slot_idx);
|
||||
tcg_gen_movi_i32(cpu_pc, dest);
|
||||
tcg_gen_exit_tb(dc->base.tb, n);
|
||||
tcg_gen_exit_tb(dc->base.tb, tb_slot_idx);
|
||||
} else {
|
||||
tcg_gen_movi_i32(cpu_pc, dest);
|
||||
tcg_gen_lookup_and_goto_ptr();
|
||||
|
||||
@@ -4362,12 +4362,13 @@ static void gen_trap(DisasContext *ctx, uint32_t opc,
|
||||
}
|
||||
}
|
||||
|
||||
static void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest)
|
||||
static void gen_goto_tb(DisasContext *ctx, unsigned tb_slot_idx,
|
||||
target_ulong dest)
|
||||
{
|
||||
if (translator_use_goto_tb(&ctx->base, dest)) {
|
||||
tcg_gen_goto_tb(n);
|
||||
tcg_gen_goto_tb(tb_slot_idx);
|
||||
gen_save_pc(dest);
|
||||
tcg_gen_exit_tb(ctx->base.tb, n);
|
||||
tcg_gen_exit_tb(ctx->base.tb, tb_slot_idx);
|
||||
} else {
|
||||
gen_save_pc(dest);
|
||||
tcg_gen_lookup_and_goto_ptr();
|
||||
|
||||
@@ -3668,16 +3668,17 @@ static void gen_lookup_and_goto_ptr(DisasContext *ctx)
|
||||
}
|
||||
|
||||
/*** Branch ***/
|
||||
static void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest)
|
||||
static void gen_goto_tb(DisasContext *ctx, unsigned tb_slot_idx,
|
||||
target_ulong dest)
|
||||
{
|
||||
if (NARROW_MODE(ctx)) {
|
||||
dest = (uint32_t) dest;
|
||||
}
|
||||
if (use_goto_tb(ctx, dest)) {
|
||||
pmu_count_insns(ctx);
|
||||
tcg_gen_goto_tb(n);
|
||||
tcg_gen_goto_tb(tb_slot_idx);
|
||||
tcg_gen_movi_tl(cpu_nip, dest & ~3);
|
||||
tcg_gen_exit_tb(ctx->base.tb, n);
|
||||
tcg_gen_exit_tb(ctx->base.tb, tb_slot_idx);
|
||||
} else {
|
||||
tcg_gen_movi_tl(cpu_nip, dest & ~3);
|
||||
gen_lookup_and_goto_ptr(ctx);
|
||||
|
||||
@@ -286,7 +286,8 @@ static void exit_tb(DisasContext *ctx)
|
||||
tcg_gen_exit_tb(NULL, 0);
|
||||
}
|
||||
|
||||
static void gen_goto_tb(DisasContext *ctx, int n, target_long diff)
|
||||
static void gen_goto_tb(DisasContext *ctx, unsigned tb_slot_idx,
|
||||
target_long diff)
|
||||
{
|
||||
target_ulong dest = ctx->base.pc_next + diff;
|
||||
|
||||
@@ -305,12 +306,12 @@ static void gen_goto_tb(DisasContext *ctx, int n, target_long diff)
|
||||
*/
|
||||
if (tb_cflags(ctx->base.tb) & CF_PCREL) {
|
||||
gen_update_pc(ctx, diff);
|
||||
tcg_gen_goto_tb(n);
|
||||
tcg_gen_goto_tb(tb_slot_idx);
|
||||
} else {
|
||||
tcg_gen_goto_tb(n);
|
||||
tcg_gen_goto_tb(tb_slot_idx);
|
||||
gen_update_pc(ctx, diff);
|
||||
}
|
||||
tcg_gen_exit_tb(ctx->base.tb, n);
|
||||
tcg_gen_exit_tb(ctx->base.tb, tb_slot_idx);
|
||||
} else {
|
||||
gen_update_pc(ctx, diff);
|
||||
lookup_and_goto_ptr(ctx);
|
||||
|
||||
@@ -147,12 +147,13 @@ void rx_cpu_dump_state(CPUState *cs, FILE *f, int flags)
|
||||
}
|
||||
}
|
||||
|
||||
static void gen_goto_tb(DisasContext *dc, int n, target_ulong dest)
|
||||
static void gen_goto_tb(DisasContext *dc, unsigned tb_slot_idx,
|
||||
target_ulong dest)
|
||||
{
|
||||
if (translator_use_goto_tb(&dc->base, dest)) {
|
||||
tcg_gen_goto_tb(n);
|
||||
tcg_gen_goto_tb(tb_slot_idx);
|
||||
tcg_gen_movi_i32(cpu_pc, dest);
|
||||
tcg_gen_exit_tb(dc->base.tb, n);
|
||||
tcg_gen_exit_tb(dc->base.tb, tb_slot_idx);
|
||||
} else {
|
||||
tcg_gen_movi_i32(cpu_pc, dest);
|
||||
tcg_gen_lookup_and_goto_ptr();
|
||||
|
||||
@@ -231,12 +231,13 @@ static bool use_goto_tb(DisasContext *ctx, target_ulong dest)
|
||||
return translator_use_goto_tb(&ctx->base, dest);
|
||||
}
|
||||
|
||||
static void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest)
|
||||
static void gen_goto_tb(DisasContext *ctx, unsigned tb_slot_idx,
|
||||
target_ulong dest)
|
||||
{
|
||||
if (use_goto_tb(ctx, dest)) {
|
||||
tcg_gen_goto_tb(n);
|
||||
tcg_gen_goto_tb(tb_slot_idx);
|
||||
tcg_gen_movi_i32(cpu_pc, dest);
|
||||
tcg_gen_exit_tb(ctx->base.tb, n);
|
||||
tcg_gen_exit_tb(ctx->base.tb, tb_slot_idx);
|
||||
} else {
|
||||
tcg_gen_movi_i32(cpu_pc, dest);
|
||||
if (use_exit_tb(ctx)) {
|
||||
|
||||
@@ -363,15 +363,15 @@ static bool use_goto_tb(DisasContext *s, target_ulong pc, target_ulong npc)
|
||||
translator_use_goto_tb(&s->base, npc);
|
||||
}
|
||||
|
||||
static void gen_goto_tb(DisasContext *s, int tb_num,
|
||||
static void gen_goto_tb(DisasContext *s, unsigned tb_slot_idx,
|
||||
target_ulong pc, target_ulong npc)
|
||||
{
|
||||
if (use_goto_tb(s, pc, npc)) {
|
||||
/* jump to same page: we can use a direct jump */
|
||||
tcg_gen_goto_tb(tb_num);
|
||||
tcg_gen_goto_tb(tb_slot_idx);
|
||||
tcg_gen_movi_tl(cpu_pc, pc);
|
||||
tcg_gen_movi_tl(cpu_npc, npc);
|
||||
tcg_gen_exit_tb(s->base.tb, tb_num);
|
||||
tcg_gen_exit_tb(s->base.tb, tb_slot_idx);
|
||||
} else {
|
||||
/* jump to another page: we can use an indirect jump */
|
||||
tcg_gen_movi_tl(cpu_pc, pc);
|
||||
|
||||
@@ -2816,12 +2816,13 @@ static inline void gen_save_pc(target_ulong pc)
|
||||
tcg_gen_movi_tl(cpu_PC, pc);
|
||||
}
|
||||
|
||||
static void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest)
|
||||
static void gen_goto_tb(DisasContext *ctx, unsigned tb_slot_index,
|
||||
target_ulong dest)
|
||||
{
|
||||
if (translator_use_goto_tb(&ctx->base, dest)) {
|
||||
tcg_gen_goto_tb(n);
|
||||
tcg_gen_goto_tb(tb_slot_index);
|
||||
gen_save_pc(dest);
|
||||
tcg_gen_exit_tb(ctx->base.tb, n);
|
||||
tcg_gen_exit_tb(ctx->base.tb, tb_slot_index);
|
||||
} else {
|
||||
gen_save_pc(dest);
|
||||
tcg_gen_lookup_and_goto_ptr();
|
||||
|
||||
Reference in New Issue
Block a user