]> git.proxmox.com Git - mirror_qemu.git/commitdiff
target/arm: Use DISAS_TOO_MANY for ISB and SB
authorRichard Henderson <richard.henderson@linaro.org>
Tue, 29 Jun 2021 18:01:05 +0000 (11:01 -0700)
committerRichard Henderson <richard.henderson@linaro.org>
Fri, 9 Jul 2021 16:41:53 +0000 (09:41 -0700)
Using gen_goto_tb directly misses the single-step check.
Let the branch or debug exception be emitted by arm_tr_tb_stop.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
target/arm/translate.c

index fdf2b3d1c88d0f4c768af8575e97df0365f9e42f..6d2867be1d56b403dc9e6e569fdd41a3bbeffe98 100644 (file)
@@ -8904,7 +8904,7 @@ static bool trans_ISB(DisasContext *s, arg_ISB *a)
      * self-modifying code correctly and also to take
      * any pending interrupts immediately.
      */
-    gen_goto_tb(s, 0, s->base.pc_next);
+    s->base.is_jmp = DISAS_TOO_MANY;
     return true;
 }
 
@@ -8918,7 +8918,7 @@ static bool trans_SB(DisasContext *s, arg_SB *a)
      * for TCG; MB and end the TB instead.
      */
     tcg_gen_mb(TCG_MO_ALL | TCG_BAR_SC);
-    gen_goto_tb(s, 0, s->base.pc_next);
+    s->base.is_jmp = DISAS_TOO_MANY;
     return true;
 }