accel/tcg: tb_gen_code(): Create single-insn TB for execution from non-RAM
authorPeter Maydell <peter.maydell@linaro.org>
Tue, 14 Aug 2018 16:17:19 +0000 (17:17 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 14 Aug 2018 16:17:19 +0000 (17:17 +0100)
commit9739e3767af19096898d63eb9f2f0ff5004797d2
treeba6dbd85d2e35476b22832489225d1d1bae7e0bc
parentc360a0fd71239948197f81737ba8b4eb132915f1
accel/tcg: tb_gen_code(): Create single-insn TB for execution from non-RAM

If get_page_addr_code() returns -1, this indicates that there is no RAM
page we can read a full TB from. Instead we must create a TB which
contains a single instruction and which we do not cache, so it is
executed only once.

Since this means we can now have TBs which are not in any page list,
we also need to make tb_phys_invalidate() handle them (by not trying
to remove them from a nonexistent page list).

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Emilio G. Cota <cota@braap.org>
Tested-by: Cédric Le Goater <clg@kaod.org>
Message-id: 20180710160013.26559-5-peter.maydell@linaro.org
accel/tcg/translate-all.c