mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 01:33:56 -06:00
tcg: Add gen_tb to TCGContext
This can replace four other variables that are references into the TranslationBlock structure. Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
3a50f424c9
commit
b7e4afbd9f
4 changed files with 14 additions and 27 deletions
14
tcg/tcg.c
14
tcg/tcg.c
|
@ -311,7 +311,7 @@ static void set_jmp_reset_offset(TCGContext *s, int which)
|
|||
* We will check for overflow at the end of the opcode loop in
|
||||
* tcg_gen_code, where we bound tcg_current_code_size to UINT16_MAX.
|
||||
*/
|
||||
s->tb_jmp_reset_offset[which] = tcg_current_code_size(s);
|
||||
s->gen_tb->jmp_reset_offset[which] = tcg_current_code_size(s);
|
||||
}
|
||||
|
||||
static void G_GNUC_UNUSED set_jmp_insn_offset(TCGContext *s, int which)
|
||||
|
@ -321,7 +321,7 @@ static void G_GNUC_UNUSED set_jmp_insn_offset(TCGContext *s, int which)
|
|||
* tcg_gen_code, where we bound tcg_current_code_size to UINT16_MAX.
|
||||
*/
|
||||
tcg_debug_assert(TCG_TARGET_HAS_direct_jump);
|
||||
s->tb_jmp_insn_offset[which] = tcg_current_code_size(s);
|
||||
s->gen_tb->jmp_target_arg[which] = tcg_current_code_size(s);
|
||||
}
|
||||
|
||||
static uintptr_t G_GNUC_UNUSED get_jmp_target_addr(TCGContext *s, int which)
|
||||
|
@ -330,7 +330,7 @@ static uintptr_t G_GNUC_UNUSED get_jmp_target_addr(TCGContext *s, int which)
|
|||
* Return the read-execute version of the pointer, for the benefit
|
||||
* of any pc-relative addressing mode.
|
||||
*/
|
||||
return (uintptr_t)tcg_splitwx_to_rx(&s->tb_jmp_target_addr[which]);
|
||||
return (uintptr_t)tcg_splitwx_to_rx(s->gen_tb->jmp_target_arg + which);
|
||||
}
|
||||
|
||||
/* Signal overflow, starting over with fewer guest insns. */
|
||||
|
@ -4668,14 +4668,6 @@ int tcg_gen_code(TCGContext *s, TranslationBlock *tb, target_ulong pc_start)
|
|||
/* Initialize goto_tb jump offsets. */
|
||||
tb->jmp_reset_offset[0] = TB_JMP_OFFSET_INVALID;
|
||||
tb->jmp_reset_offset[1] = TB_JMP_OFFSET_INVALID;
|
||||
tcg_ctx->tb_jmp_reset_offset = tb->jmp_reset_offset;
|
||||
if (TCG_TARGET_HAS_direct_jump) {
|
||||
tcg_ctx->tb_jmp_insn_offset = tb->jmp_target_arg;
|
||||
tcg_ctx->tb_jmp_target_addr = NULL;
|
||||
} else {
|
||||
tcg_ctx->tb_jmp_insn_offset = NULL;
|
||||
tcg_ctx->tb_jmp_target_addr = tb->jmp_target_arg;
|
||||
}
|
||||
|
||||
tcg_reg_alloc_start(s);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue