On 11/17/21 10:47 AM, Alex Bennée wrote:
-    gen_set_label(tcg_ctx->exitreq_label);
+    if (tcg_ctx->exitreq_label) {
+        gen_set_label(tcg_ctx->exitreq_label);
+    }
      tcg_gen_exit_tb(tb, TB_EXIT_REQUESTED);

The exit_tb is also not reachable, and should go in with the label.

  }
modified accel/tcg/cpu-exec.c
@@ -954,11 +954,16 @@ int cpu_exec(CPUState *cpu)
               * after-access watchpoints.  Since this request should never
               * have CF_INVALID set, -1 is a convenient invalid value that
               * does not require tcg headers for cpu_common_reset.
+             *
+             * As we don't want this special TB being interrupted by
+             * some sort of asynchronous event we apply CF_NOIRQ to
+             * disable the usual event checking.
               */
              cflags = cpu->cflags_next_tb;
              if (cflags == -1) {
                  cflags = curr_cflags(cpu);
              } else {
+                cflags |= CF_NOIRQ;
                  cpu->cflags_next_tb = -1;
              }

Still missing something to avoid cpu_handle_interrupt firing?


r~

Reply via email to