Message ID | 20200622053537.25245-1-jcmvbkbc@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | target/xtensa: drop gen_io_end call | expand |
On Mon, 22 Jun 2020 at 06:36, Max Filippov <jcmvbkbc@gmail.com> wrote: > > Since commit > ba3e7926691e ("icount: clean up cpu_can_io at the entry to the block") > it has been unnecessary for target code to call gen_io_end() after an IO > instruction in icount mode; it is sufficient to call gen_io_start() > before it and to force the end of the TB. > Remaining call in xtensa target translator is for the opcodes that may > change IRQ state. All of them end current TB, so gen_io_end is not > needed. Drop gen_io_end call from the xtensa target translator. Most of the insns which set XTENSA_OP_CHECK_INTERRUPTS in their .op_flags also set XTENSA_OP_EXIT_TB_M1 or XTENSA_OP_EXIT_TB_0; the ones which don't are "rfe", "rfi", "rfwo" and "rfwu". Looking through what they do, they all end up calling gen_jump(), which will end the TB. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> thanks -- PMM
diff --git a/target/xtensa/translate.c b/target/xtensa/translate.c index 4bc15252c8a5..6346b2eef014 100644 --- a/target/xtensa/translate.c +++ b/target/xtensa/translate.c @@ -595,9 +595,6 @@ static int gen_postprocess(DisasContext *dc, int slot) gen_io_start(); } gen_helper_check_interrupts(cpu_env); - if (tb_cflags(dc->base.tb) & CF_USE_ICOUNT) { - gen_io_end(); - } } #endif if (op_flags & XTENSA_OP_SYNC_REGISTER_WINDOW) {
Since commit ba3e7926691e ("icount: clean up cpu_can_io at the entry to the block") it has been unnecessary for target code to call gen_io_end() after an IO instruction in icount mode; it is sufficient to call gen_io_start() before it and to force the end of the TB. Remaining call in xtensa target translator is for the opcodes that may change IRQ state. All of them end current TB, so gen_io_end is not needed. Drop gen_io_end call from the xtensa target translator. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> --- target/xtensa/translate.c | 3 --- 1 file changed, 3 deletions(-)