diff options
author | Blue Swirl <blauwirbel@gmail.com> | 2012-04-14 14:56:48 +0000 |
---|---|---|
committer | Blue Swirl <blauwirbel@gmail.com> | 2012-05-01 10:45:05 +0000 |
commit | cc5bea608df30263f8d20facfd55d8b6ce15053d (patch) | |
tree | 487fb5df88f3a2011b640ceb05b430a2dc52e3ec /cputlb.c | |
parent | 0cac1b66c88c4cd3ec1d358091486787837215a3 (diff) | |
download | qemu-cc5bea608df30263f8d20facfd55d8b6ce15053d.zip qemu-cc5bea608df30263f8d20facfd55d8b6ce15053d.tar.gz qemu-cc5bea608df30263f8d20facfd55d8b6ce15053d.tar.bz2 |
cputlb: prepare private memory API for public consumption
Fold is_ram_rom and is_ram_rom_romd() into callers.
Change is_romd() and section_addr() to take MemoryRegion
instead of MemoryRegionSection for consistency and
use memory_region_ prefix.
Reviewed-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Diffstat (limited to 'cputlb.c')
-rw-r--r-- | cputlb.c | 12 |
1 files changed, 7 insertions, 5 deletions
@@ -260,13 +260,15 @@ void tlb_set_page(CPUArchState *env, target_ulong vaddr, #endif address = vaddr; - if (!is_ram_rom_romd(section)) { + if (!(memory_region_is_ram(section->mr) || + memory_region_is_romd(section->mr))) { /* IO memory case (romd handled later) */ address |= TLB_MMIO; } - if (is_ram_rom_romd(section)) { + if (memory_region_is_ram(section->mr) || + memory_region_is_romd(section->mr)) { addend = (uintptr_t)memory_region_get_ram_ptr(section->mr) - + section_addr(section, paddr); + + memory_region_section_addr(section, paddr); } else { addend = 0; } @@ -292,13 +294,13 @@ void tlb_set_page(CPUArchState *env, target_ulong vaddr, } if (prot & PAGE_WRITE) { if ((memory_region_is_ram(section->mr) && section->readonly) - || is_romd(section)) { + || memory_region_is_romd(section->mr)) { /* Write access calls the I/O callback. */ te->addr_write = address | TLB_MMIO; } else if (memory_region_is_ram(section->mr) && !cpu_physical_memory_is_dirty( section->mr->ram_addr - + section_addr(section, paddr))) { + + memory_region_section_addr(section, paddr))) { te->addr_write = address | TLB_NOTDIRTY; } else { te->addr_write = address; |