X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=target-arm%2Ftranslate.c;h=237c5f694163d4d0c397801a3fc963930dc8d26a;hb=a1d1bb3101db1fea4ff47b74de15208971f8d64e;hp=9d52991b405fd046ee886246eb94f4bb8933fa2e;hpb=d6fc1b397bca686d2ac92f4e8f470c98472a3c4d;p=qemu diff --git a/target-arm/translate.c b/target-arm/translate.c index 9d52991..237c5f6 100644 --- a/target-arm/translate.c +++ b/target-arm/translate.c @@ -8600,6 +8600,7 @@ static inline void gen_intermediate_code_internal(CPUState *env, int search_pc) { DisasContext dc1, *dc = &dc1; + CPUBreakpoint *bp; uint16_t *gen_opc_end; int j, lj; target_ulong pc_start; @@ -8676,9 +8677,9 @@ static inline void gen_intermediate_code_internal(CPUState *env, } #endif - if (env->nb_breakpoints > 0) { - for(j = 0; j < env->nb_breakpoints; j++) { - if (env->breakpoints[j] == dc->pc) { + if (unlikely(env->breakpoints)) { + for (bp = env->breakpoints; bp != NULL; bp = bp->next) { + if (bp->pc == dc->pc) { gen_set_condexec(dc); gen_set_pc_im(dc->pc); gen_exception(EXCP_DEBUG); @@ -8731,7 +8732,7 @@ static inline void gen_intermediate_code_internal(CPUState *env, /* Terminate the TB on memory ops if watchpoints are present. */ /* FIXME: This should be replacd by the deterministic execution * IRQ raising bits. */ - if (dc->is_mem && env->nb_watchpoints) + if (dc->is_mem && env->watchpoints) break; /* Translation stops when a conditional branch is enoutered.