qemu/target-i386
Paul Brook d4c430a80f 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>
2010-03-17 02:44:41 +00:00
..
cpu.h x86/cpuid: move CPUID functions into separate file 2010-03-13 16:50:54 +01:00
cpuid.c x86/cpuid: fix indentation 2010-03-13 16:50:54 +01:00
exec.h target-i386: fix crash on x86 32bit linux host with hw breakpoint exceptions 2010-02-28 19:20:02 +01:00
helper_template.h Update to a hopefully more future proof FSF address 2009-07-16 20:47:01 +00:00
helper.c Large page TLB flush 2010-03-17 02:44:41 +00:00
helper.h target-i386: implement lzcnt emulation 2009-10-23 17:10:36 +02:00
kvm.c x86/cpuid: remove unnecessary kvm_trim function 2010-03-13 16:50:54 +01:00
machine.c KVM: Rework VCPU state writeback API 2010-03-04 00:29:28 -03:00
op_helper.c Move ioport.h out of cpu-all.h 2010-03-01 03:29:21 +00:00
ops_sse_header.h target-i386: add SSE4a instruction support 2009-10-04 14:09:41 +02:00
ops_sse.h target-i386: add SSE4a instruction support 2009-10-04 14:09:41 +02:00
svm.h reworked SVM interrupt handling logic - fixed vmrun EIP saved value - reworked cr8 handling - added CPUState.hflags2 2008-06-04 17:02:19 +00:00
TODO Unbreak large mem support by removing kqemu 2009-08-24 08:02:55 -05:00
translate.c target-i386: fix commit c22549204a 2010-03-13 11:35:55 +01:00