diff options
| author | Avi Kivity <avi@redhat.com> | 2012-03-18 18:31:13 +0200 |
|---|---|---|
| committer | Avi Kivity <avi@redhat.com> | 2012-03-19 11:15:01 +0200 |
| commit | 32b089808f125470b3563bf4209c2301fa35c58e (patch) | |
| tree | 142d2e2362a6fe8a4265caa7287600f4b88dba2f /exec.c | |
| parent | 7859cc6e39bf86f890bb1c72fd9ba41deb6ce2e7 (diff) | |
| download | focaccia-qemu-32b089808f125470b3563bf4209c2301fa35c58e.tar.gz focaccia-qemu-32b089808f125470b3563bf4209c2301fa35c58e.zip | |
memory: check for watchpoints when getting code ram_addr
The code to get the ram_addr from a (tlb entry, vaddr) pair checks that the resulting memory is not MMIO, but neglects to check whether the region is hidden by a watchpoint page. Add the missing check. Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'exec.c')
| -rw-r--r-- | exec.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/exec.c b/exec.c index 3c2b7e5180..a3818ffeb7 100644 --- a/exec.c +++ b/exec.c @@ -4609,7 +4609,8 @@ tb_page_addr_t get_page_addr_code(CPUArchState *env1, target_ulong addr) pd = env1->iotlb[mmu_idx][page_index] & ~TARGET_PAGE_MASK; mr = iotlb_to_region(pd); if (mr != &io_mem_ram && mr != &io_mem_rom - && mr != &io_mem_notdirty && !mr->rom_device) { + && mr != &io_mem_notdirty && !mr->rom_device + && mr != &io_mem_watch) { #if defined(TARGET_ALPHA) || defined(TARGET_MIPS) || defined(TARGET_SPARC) cpu_unassigned_access(env1, addr, 0, 1, 0, 4); #else |