accel/tcg: avoid re-translating one-shot instructions
commit277aed998ac2cd3649bf0e13b22f47769519eb61
authorAlex Bennée <alex.bennee@linaro.org>
Thu, 15 Apr 2021 16:24:53 +0000 (15 17:24 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Sat, 17 Apr 2021 17:51:14 +0000 (17 18:51 +0100)
tree5dd627ea9786e61a81d531a22e437ac6254d562c
parentc57b27ea89ac3ca8a4bc6b682231823f081478d0
accel/tcg: avoid re-translating one-shot instructions

By definition a single instruction is capable of being an IO
instruction. This avoids a problem of triggering a cpu_io_recompile on
a non-recorded translation which then fails because it expects
tcg_tb_lookup() to succeed unconditionally. The normal use case
requires a TB to be able to resolve machine state.

The other users of tcg_tb_lookup() are able to tolerate a missing TB
if the machine state has been resolved by other means - which in the
single-shot case is always true because machine state is synced at the
start of a block.

Reported-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20210415162454.22056-1-alex.bennee@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
accel/tcg/translate-all.c