mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 01:33:56 -06:00
tcg: Introduce goto_ptr opcode and tcg_gen_lookup_and_goto_ptr
Instead of exporting goto_ptr directly to TCG frontends, export tcg_gen_lookup_and_goto_ptr(), which calls goto_ptr with the pointer returned by the lookup_tb_ptr() helper. This is the only use case we have for goto_ptr and lookup_tb_ptr, so having this function is very convenient. Furthermore, it trivially allows us to avoid calling the lookup helper if goto_ptr is not implemented by the backend. Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Emilio G. Cota <cota@braap.org> Message-Id: <1493263764-18657-2-git-send-email-cota@braap.org> Message-Id: <1493263764-18657-3-git-send-email-cota@braap.org> Message-Id: <1493263764-18657-4-git-send-email-cota@braap.org> Message-Id: <1493263764-18657-5-git-send-email-cota@braap.org> [rth: Squashed 4 related commits.] Signed-off-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
parent
374aae6534
commit
cedbcb0152
19 changed files with 85 additions and 4 deletions
12
tcg/tcg-op.c
12
tcg/tcg-op.c
|
@ -2587,6 +2587,18 @@ void tcg_gen_goto_tb(unsigned idx)
|
|||
tcg_gen_op1i(INDEX_op_goto_tb, idx);
|
||||
}
|
||||
|
||||
void tcg_gen_lookup_and_goto_ptr(TCGv addr)
|
||||
{
|
||||
if (TCG_TARGET_HAS_goto_ptr && !qemu_loglevel_mask(CPU_LOG_TB_NOCHAIN)) {
|
||||
TCGv_ptr ptr = tcg_temp_new_ptr();
|
||||
gen_helper_lookup_tb_ptr(ptr, tcg_ctx.tcg_env, addr);
|
||||
tcg_gen_op1i(INDEX_op_goto_ptr, GET_TCGV_PTR(ptr));
|
||||
tcg_temp_free_ptr(ptr);
|
||||
} else {
|
||||
tcg_gen_exit_tb(0);
|
||||
}
|
||||
}
|
||||
|
||||
static inline TCGMemOp tcg_canonicalize_memop(TCGMemOp op, bool is64, bool st)
|
||||
{
|
||||
/* Trigger the asserts within as early as possible. */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue