Large page TLB flush
authorPaul Brook <paul@codesourcery.com>
Wed, 17 Mar 2010 02:14:28 +0000 (02:14 +0000)
committerPaul Brook <paul@codesourcery.com>
Wed, 17 Mar 2010 02:44:41 +0000 (02:44 +0000)
commit25369ec3cde01790c59fc5cba78270390bd59d89
tree9b9d059b2158f25fc0629fddcef192e3d791b187
parent89aff57975aa1cbe269fde29d39778d493d790ca
Large page TLB flush

QEMU uses a fixed page size for the CPU TLB.  If the guest uses large
pages then we effectively split these into multiple smaller pages, and
populate the corresponding TLB entries on demand.

When the guest invalidates the TLB by virtual address we must invalidate
all entries covered by the large page.  However the address used to
invalidate the entry may not be present in the QEMU TLB, so we do not
know which regions to clear.

Implementing a full vaiable size TLB is hard and slow, so just keep a
simple address/mask pair to record which addresses may have been mapped by
large pages.  If the guest invalidates this region then flush the
whole TLB.

Signed-off-by: Paul Brook <paul@codesourcery.com>
14 files changed:
cpu-defs.h
exec-all.h
exec.c
hw/alpha_palcode.c
target-arm/helper.c
target-cris/helper.c
target-i386/helper.c
target-m68k/helper.c
target-microblaze/helper.c
target-mips/helper.c
target-ppc/helper.c
target-s390x/helper.c
target-sh4/helper.c
target-sparc/helper.c