diff options
author | Richard Henderson <rth@twiddle.net> | 2015-08-31 14:34:41 -0700 |
---|---|---|
committer | Richard Henderson <rth@twiddle.net> | 2015-10-07 20:36:50 +1100 |
commit | 190ce7fbc79fd0883a6170d7f30da59d366e6830 (patch) | |
tree | b51499526739d5ac8a550e72b4e3e94214f48fcc /target-moxie/translate.c | |
parent | dc03246cc377268db63abc8c5663ef571aec2eea (diff) |
tcg: Add TCG_MAX_INSNS
Adjust all translators to respect it.
Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <rth@twiddle.net>
Diffstat (limited to 'target-moxie/translate.c')
-rw-r--r-- | target-moxie/translate.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/target-moxie/translate.c b/target-moxie/translate.c index d71f55bf38..68588da236 100644 --- a/target-moxie/translate.c +++ b/target-moxie/translate.c @@ -824,7 +824,7 @@ gen_intermediate_code_internal(MoxieCPU *cpu, TranslationBlock *tb, target_ulong pc_start; int j, lj = -1; CPUMoxieState *env = &cpu->env; - int num_insns; + int num_insns, max_insns; pc_start = tb->pc; ctx.pc = pc_start; @@ -834,6 +834,13 @@ gen_intermediate_code_internal(MoxieCPU *cpu, TranslationBlock *tb, ctx.singlestep_enabled = 0; ctx.bstate = BS_NONE; num_insns = 0; + max_insns = tb->cflags & CF_COUNT_MASK; + if (max_insns == 0) { + max_insns = CF_COUNT_MASK; + } + if (max_insns > TCG_MAX_INSNS) { + max_insns = TCG_MAX_INSNS; + } gen_tb_start(tb); do { @@ -862,10 +869,12 @@ gen_intermediate_code_internal(MoxieCPU *cpu, TranslationBlock *tb, ctx.opcode = cpu_lduw_code(env, ctx.pc); ctx.pc += decode_opc(cpu, &ctx); + if (num_insns >= max_insns) { + break; + } if (cs->singlestep_enabled) { break; } - if ((ctx.pc & (TARGET_PAGE_SIZE - 1)) == 0) { break; } |