]> Git Repo - qemu.git/commitdiff
target/arm/translate: ensure gen_goto_tb sets exit flags
authorAlex Bennée <[email protected]>
Mon, 17 Jul 2017 12:36:07 +0000 (13:36 +0100)
committerPeter Maydell <[email protected]>
Mon, 17 Jul 2017 12:36:07 +0000 (13:36 +0100)
As the gen_goto_tb function can do both static and dynamic jumps it
should also set the is_jmp field. This matches the behaviour of the
a64 code.

Signed-off-by: Alex Bennée <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 20170713141928[email protected]
[tweak to multiline comment formatting]
Signed-off-by: Peter Maydell <[email protected]>
target/arm/translate.c

index 5f2cea8641ba89986d2b609344882c479fbdfa03..bbae519276dbda49b4e8db47a6e38e34f5edfaf5 100644 (file)
@@ -4158,6 +4158,10 @@ static void gen_goto_ptr(void)
     tcg_temp_free(addr);
 }
 
+/* This will end the TB but doesn't guarantee we'll return to
+ * cpu_loop_exec. Any live exit_requests will be processed as we
+ * enter the next TB.
+ */
 static void gen_goto_tb(DisasContext *s, int n, target_ulong dest)
 {
     if (use_goto_tb(s, dest)) {
@@ -4168,6 +4172,7 @@ static void gen_goto_tb(DisasContext *s, int n, target_ulong dest)
         gen_set_pc_im(s, dest);
         gen_goto_ptr();
     }
+    s->is_jmp = DISAS_TB_JUMP;
 }
 
 static inline void gen_jmp (DisasContext *s, uint32_t dest)
@@ -4179,7 +4184,6 @@ static inline void gen_jmp (DisasContext *s, uint32_t dest)
         gen_bx_im(s, dest);
     } else {
         gen_goto_tb(s, 0, dest);
-        s->is_jmp = DISAS_TB_JUMP;
     }
 }
 
This page took 0.038187 seconds and 4 git commands to generate.