On 3/31/21 8:53 PM, Taylor Simpson wrote:
@@ -601,19 +612,12 @@ static void hexagon_tr_tb_stop(DisasContextBase *dcbase, 
CPUState *cpu)
          gen_exec_counters(ctx);
          tcg_gen_movi_tl(hex_gpr[HEX_REG_PC], ctx->base.pc_next);
          if (ctx->base.singlestep_enabled) {
-            gen_exception_debug();
+            gen_exception_raw(EXCP_DEBUG);
          } else {
              tcg_gen_exit_tb(NULL, 0);
          }
          break;

Looks like you could call gen_end_tb here.  Alternately,

     if (pkt->pkt_has_cof) {
-        ctx->base.is_jmp = DISAS_NORETURN;
+        gen_end_tb(ctx);
     }

    ctx->base.is_jmp = DISAS_TOO_MANY;

which will force the exit of the translate loop and land at that case within tb_stop. At which point you don't need gen_end_tb.

Either way, this is still an improvement.

Reviewed-by: Richard Henderson <[email protected]>

r~

Reply via email to