diff options
author | Max Filippov <jcmvbkbc@gmail.com> | 2012-05-06 01:44:31 +0400 |
---|---|---|
committer | Blue Swirl <blauwirbel@gmail.com> | 2012-05-12 09:14:38 +0000 |
commit | 56eb21e15827fd0326c57dcab59771cb03ad9df6 (patch) | |
tree | a9573601b5f3dc04de606032cbcba47392eaf9ab | |
parent | ad37ad5b25592d2829989111b8386b8007ea0d83 (diff) | |
download | qemu-56eb21e15827fd0326c57dcab59771cb03ad9df6.zip qemu-56eb21e15827fd0326c57dcab59771cb03ad9df6.tar.gz qemu-56eb21e15827fd0326c57dcab59771cb03ad9df6.tar.bz2 |
cputlb: fix watchpoints handling
Cleanup commit e554861766d9ae84dd5720baa4869f4ed711506f have changed
code_address calculation in the tlb_set_page function in case of access
to a page with a watchpoint. This caused QEMU segfault in the xtensa
test_break unit test. Fix it by moving code_address assignment above
memory_region_section_get_iotlb call.
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
-rw-r--r-- | cputlb.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -272,10 +272,10 @@ void tlb_set_page(CPUArchState *env, target_ulong vaddr, } else { addend = 0; } - iotlb = memory_region_section_get_iotlb(env, section, vaddr, paddr, prot, - &address); code_address = address; + iotlb = memory_region_section_get_iotlb(env, section, vaddr, paddr, prot, + &address); index = (vaddr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1); env->iotlb[mmu_idx][index] = iotlb - vaddr; |