Fix breakpoint TLB invalidation.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1799 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
		
							parent
							
								
									af5db58e8b
								
							
						
					
					
						commit
						c2f07f81a2
					
				
							
								
								
									
										15
									
								
								exec.c
								
								
								
								
							
							
						
						
									
										15
									
								
								exec.c
								
								
								
								
							| 
						 | 
				
			
			@ -1003,10 +1003,19 @@ static void tb_reset_jump_recursive(TranslationBlock *tb)
 | 
			
		|||
#if defined(TARGET_HAS_ICE)
 | 
			
		||||
static void breakpoint_invalidate(CPUState *env, target_ulong pc)
 | 
			
		||||
{
 | 
			
		||||
    target_ulong phys_addr;
 | 
			
		||||
    target_ulong addr, pd;
 | 
			
		||||
    ram_addr_t ram_addr;
 | 
			
		||||
    PhysPageDesc *p;
 | 
			
		||||
 | 
			
		||||
    phys_addr = cpu_get_phys_page_debug(env, pc);
 | 
			
		||||
    tb_invalidate_phys_page_range(phys_addr, phys_addr + 1, 0);
 | 
			
		||||
    addr = cpu_get_phys_page_debug(env, pc);
 | 
			
		||||
    p = phys_page_find(addr >> TARGET_PAGE_BITS);
 | 
			
		||||
    if (!p) {
 | 
			
		||||
        pd = IO_MEM_UNASSIGNED;
 | 
			
		||||
    } else {
 | 
			
		||||
        pd = p->phys_offset;
 | 
			
		||||
    }
 | 
			
		||||
    ram_addr = (pd & TARGET_PAGE_MASK) | (pc & ~TARGET_PAGE_MASK);
 | 
			
		||||
    tb_invalidate_ram_page_range(ram_addr, ram_addr + 1, 0);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue