Skip to content
  • David Gibson's avatar
    mmu-hash*: Clean up real address calculation · 6d11d998
    David Gibson authored
    
    
    More recent 64-bit hash MMUs support multiple page sizes, and PTEs for
    large pages only include the offset of the whole large page.  But the qemu
    tlb only handles pages of the base size (4k) so we need to break up the
    large pages into 4k pieces for the qemu tlb.  To do that we have a somewhat
    awkward piece of code that adds the folds address bits 4k and the page size
    from the virtual address into the real address from the pte.
    
    This patch simplifies this redefining the raddr output of
    ppc_hash64_translate() to be the full real address of the faulting address,
    rather than just the (4k) page offset.  Computing that turns out to be
    simpler, and is fine for the caller, since it already masks with
    TARGET_PAGE_MASK before inserting into the qemu tlb.
    
    The multiple page size complication doesn't exist for 32-bit hash mmus, but
    we make an analogous cleanup there for consistency.
    
    Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
    Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
    6d11d998