Commit bfa50bc2638d877cf2900712b7503be22e8811cb

Authored by aliguori
1 parent 06d55cc1

Remove premature memop TB terminations (Jan Kiszka)

Now that we can properly restore the pc on watchpoint hits, there is no
more need for prematurely terminating TBs if watchpoints are present.
Remove all related bits.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>



git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5742 c046a42c-6fe2-441c-8c8c-71466251a162
@@ -1325,10 +1325,6 @@ int cpu_watchpoint_insert(CPUState *env, target_ulong addr, target_ulong len, @@ -1325,10 +1325,6 @@ int cpu_watchpoint_insert(CPUState *env, target_ulong addr, target_ulong len,
1325 env->watchpoints = wp; 1325 env->watchpoints = wp;
1326 1326
1327 tlb_flush_page(env, addr); 1327 tlb_flush_page(env, addr);
1328 - /* FIXME: This flush is needed because of the hack to make memory ops  
1329 - terminate the TB. It can be removed once the proper IO trap and  
1330 - re-execute bits are in. */  
1331 - tb_flush(env);  
1332 1328
1333 if (watchpoint) 1329 if (watchpoint)
1334 *watchpoint = wp; 1330 *watchpoint = wp;
target-arm/translate.c
@@ -8729,12 +8729,6 @@ static inline void gen_intermediate_code_internal(CPUState *env, @@ -8729,12 +8729,6 @@ static inline void gen_intermediate_code_internal(CPUState *env,
8729 gen_set_label(dc->condlabel); 8729 gen_set_label(dc->condlabel);
8730 dc->condjmp = 0; 8730 dc->condjmp = 0;
8731 } 8731 }
8732 - /* Terminate the TB on memory ops if watchpoints are present. */  
8733 - /* FIXME: This should be replacd by the deterministic execution  
8734 - * IRQ raising bits. */  
8735 - if (dc->is_mem && env->watchpoints)  
8736 - break;  
8737 -  
8738 /* Translation stops when a conditional branch is enoutered. 8732 /* Translation stops when a conditional branch is enoutered.
8739 * Otherwise the subsequent code could get translated several times. 8733 * Otherwise the subsequent code could get translated several times.
8740 * Also stop translation when a page boundary is reached. This 8734 * Also stop translation when a page boundary is reached. This
target-m68k/translate.c
@@ -3027,12 +3027,6 @@ gen_intermediate_code_internal(CPUState *env, TranslationBlock *tb, @@ -3027,12 +3027,6 @@ gen_intermediate_code_internal(CPUState *env, TranslationBlock *tb,
3027 dc->insn_pc = dc->pc; 3027 dc->insn_pc = dc->pc;
3028 disas_m68k_insn(env, dc); 3028 disas_m68k_insn(env, dc);
3029 num_insns++; 3029 num_insns++;
3030 -  
3031 - /* Terminate the TB on memory ops if watchpoints are present. */  
3032 - /* FIXME: This should be replaced by the deterministic execution  
3033 - * IRQ raising bits. */  
3034 - if (dc->is_mem && env->watchpoints)  
3035 - break;  
3036 } while (!dc->is_jmp && gen_opc_ptr < gen_opc_end && 3030 } while (!dc->is_jmp && gen_opc_ptr < gen_opc_end &&
3037 !env->singlestep_enabled && 3031 !env->singlestep_enabled &&
3038 (pc_offset) < (TARGET_PAGE_SIZE - 32) && 3032 (pc_offset) < (TARGET_PAGE_SIZE - 32) &&