Commit 8fcc55f9de36354a8dcae1b47cadf45e8bba5cca
1 parent
9d1b494a
target-alpha: stop translation if too long
Signed-off-by: Tristan Gingold <gingold@adacore.com> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@7027 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
9 additions
and
5 deletions
target-alpha/translate.c
| @@ -2404,16 +2404,20 @@ static always_inline void gen_intermediate_code_internal (CPUState *env, | @@ -2404,16 +2404,20 @@ static always_inline void gen_intermediate_code_internal (CPUState *env, | ||
| 2404 | /* if we reach a page boundary or are single stepping, stop | 2404 | /* if we reach a page boundary or are single stepping, stop |
| 2405 | * generation | 2405 | * generation |
| 2406 | */ | 2406 | */ |
| 2407 | - if (((ctx.pc & (TARGET_PAGE_SIZE - 1)) == 0) || | ||
| 2408 | - num_insns >= max_insns) { | ||
| 2409 | - break; | ||
| 2410 | - } | ||
| 2411 | - | ||
| 2412 | if (env->singlestep_enabled) { | 2407 | if (env->singlestep_enabled) { |
| 2413 | gen_excp(&ctx, EXCP_DEBUG, 0); | 2408 | gen_excp(&ctx, EXCP_DEBUG, 0); |
| 2414 | break; | 2409 | break; |
| 2415 | } | 2410 | } |
| 2416 | 2411 | ||
| 2412 | + if ((ctx.pc & (TARGET_PAGE_SIZE - 1)) == 0) | ||
| 2413 | + break; | ||
| 2414 | + | ||
| 2415 | + if (gen_opc_ptr >= gen_opc_end) | ||
| 2416 | + break; | ||
| 2417 | + | ||
| 2418 | + if (num_insns >= max_insns) | ||
| 2419 | + break; | ||
| 2420 | + | ||
| 2417 | if (singlestep) { | 2421 | if (singlestep) { |
| 2418 | break; | 2422 | break; |
| 2419 | } | 2423 | } |