target/m68k: Use lookup_and_goto_tb for DISAS_JUMP
authorRichard Henderson <richard.henderson@linaro.org>
Sat, 12 May 2018 05:02:45 +0000 (22:02 -0700)
committerLaurent Vivier <laurent@vivier.eu>
Mon, 11 Jun 2018 09:43:11 +0000 (11:43 +0200)
These are all indirect or out-of-page direct jumps.
We can indirectly chain to the next TB without going
back to the main loop.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20180512050250.12774-5-richard.henderson@linaro.org>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
target/m68k/translate.c

index 6238d9edc9555b0b3f64f597cf84a4221d6faedc..4b92a20c0555a9f13e7b62162c637f9acec2d8d0 100644 (file)
@@ -6139,8 +6139,11 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb)
             update_cc_op(dc);
             gen_jmp_tb(dc, 0, dc->pc);
             break;
-        default:
         case DISAS_JUMP:
+            /* We updated CC_OP and PC in gen_jmp/gen_jmp_im.  */
+            tcg_gen_lookup_and_goto_ptr();
+            break;
+        default:
         case DISAS_UPDATE:
             update_cc_op(dc);
             /* indicate that the hash table must be used to find the next TB */