diff options
author | Jan Kiszka <jan.kiszka@siemens.com> | 2013-05-26 21:46:51 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2013-06-20 16:32:46 +0200 |
commit | 90260c6c0960b2745d79455ceaa6cb50fb796e02 (patch) | |
tree | f64a6c4ffada3bcf413fb34bd898449b6b1cf2f0 /include/exec/cputlb.h | |
parent | f52cc467426e43792eb39f81705766bcb3d9e96a (diff) | |
download | qemu-90260c6c0960b2745d79455ceaa6cb50fb796e02.zip |
exec: Resolve subpages in one step except for IOTLB fills
Except for the case of setting the IOTLB entry in TCG mode, we can avoid
the subpage dispatching handlers and do the resolution directly on
address_space_lookup_region. An IOTLB entry describes a full page, not
only the region that the first access to a sub-divided page may return.
This patch therefore introduces a special translation function,
address_space_translate_for_iotlb, that avoids the subpage resolutions.
In contrast, callers of the existing address_space_translate service
will now always receive the terminal memory region section. This will be
important for breaking the BQL and for enabling unaligned memory region.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'include/exec/cputlb.h')
-rw-r--r-- | include/exec/cputlb.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/exec/cputlb.h b/include/exec/cputlb.h index e8216602d0..e21cb60442 100644 --- a/include/exec/cputlb.h +++ b/include/exec/cputlb.h @@ -32,6 +32,10 @@ extern int tlb_flush_count; /* exec.c */ void tb_flush_jmp_cache(CPUArchState *env, target_ulong addr); + +MemoryRegionSection * +address_space_translate_for_iotlb(AddressSpace *as, hwaddr addr, hwaddr *xlat, + hwaddr *plen); hwaddr memory_region_section_get_iotlb(CPUArchState *env, MemoryRegionSection *section, target_ulong vaddr, |