diff options
Diffstat (limited to 'target-sh4')
-rw-r--r-- | target-sh4/translate.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/target-sh4/translate.c b/target-sh4/translate.c index b05e8fc6f1..eb3366ccc8 100644 --- a/target-sh4/translate.c +++ b/target-sh4/translate.c @@ -1803,6 +1803,7 @@ gen_intermediate_code_internal(CPUState * env, TranslationBlock * tb, DisasContext ctx; target_ulong pc_start; static uint16_t *gen_opc_end; + CPUBreakpoint *bp; int i, ii; int num_insns; int max_insns; @@ -1836,9 +1837,9 @@ gen_intermediate_code_internal(CPUState * env, TranslationBlock * tb, max_insns = CF_COUNT_MASK; gen_icount_start(); while (ctx.bstate == BS_NONE && gen_opc_ptr < gen_opc_end) { - if (env->nb_breakpoints > 0) { - for (i = 0; i < env->nb_breakpoints; i++) { - if (ctx.pc == env->breakpoints[i]) { + if (unlikely(env->breakpoints)) { + for (bp = env->breakpoints; bp != NULL; bp = bp->next) { + if (ctx.pc == bp->pc) { /* We have hit a breakpoint - make sure PC is up-to-date */ tcg_gen_movi_i32(cpu_pc, ctx.pc); gen_helper_debug(); |