Files
qemu/include/exec
Richard Henderson dcd092a063 accel/tcg: Improve can_do_io management
We already attempted to set and clear can_do_io before the first
and last insns, but only used the initial value of max_insns and
the call to translator_io_start to find those insns.

Now that we track insn_start in DisasContextBase, and now that
we have emit_before_op, we can wait until we have finished
translation to identify the true first and last insns and emit
the sets of can_do_io at that time.

This fixes the case of a translation block which crossed a page
boundary, and for which the second page turned out to be mmio.
In this case we truncate the block, and the previous logic for
can_do_io could leave a block with a single insn with can_do_io
set to false, which would fail an assertion in cpu_io_recompile.

Reported-by: Jørgen Hansen <Jorgen.Hansen@wdc.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Jørgen Hansen <Jorgen.Hansen@wdc.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2024-04-09 07:45:10 -10:00
..
2024-03-05 13:22:56 +00:00
2024-02-29 11:35:37 -10:00
2023-06-05 12:04:29 -07:00
2023-06-05 12:04:29 -07:00
2023-06-05 12:04:29 -07:00
2023-06-05 12:04:29 -07:00
2023-06-05 12:04:29 -07:00
2023-05-16 15:21:38 -07:00
2024-02-21 08:16:43 +03:00
2023-08-31 19:46:43 +02:00
2023-10-22 16:34:21 -07:00