aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/x86_emulate
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-12-09 16:28:02 +0000
committerKeir Fraser <keir.fraser@citrix.com>2008-12-09 16:28:02 +0000
commit8d4638d15e10d2d52547195dd6b57402b5382cce (patch)
tree768819983f8a3eebd83b897bf28835ea0540f84b /xen/arch/x86/x86_emulate
parentdbc75f4a5b8300ed2ef4bd2005b986953ddaf9b3 (diff)
downloadxen-8d4638d15e10d2d52547195dd6b57402b5382cce.tar.gz
xen-8d4638d15e10d2d52547195dd6b57402b5382cce.tar.bz2
xen-8d4638d15e10d2d52547195dd6b57402b5382cce.zip
Use virtual 8086 mode for VMX guests with CR0.PE == 0
When a VMX guest tries to enter real mode, put it in virtual 8086 mode instead, if that's possible. Handle all errors and corner cases by falling back to the real-mode emulator. This is similar to the old VMXASSIST system except it uses Xen's x86_emulate emulator instead of having a partial emulator in the guest firmware. It more than doubles the speed of real-mode operation on VMX. Signed-off-by: Tim Deegan <Tim.Deegan@citrix.com>
Diffstat (limited to 'xen/arch/x86/x86_emulate')
-rw-r--r--xen/arch/x86/x86_emulate/x86_emulate.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/xen/arch/x86/x86_emulate/x86_emulate.h b/xen/arch/x86/x86_emulate/x86_emulate.h
index a373528ea4..a43fa3a294 100644
--- a/xen/arch/x86/x86_emulate/x86_emulate.h
+++ b/xen/arch/x86/x86_emulate/x86_emulate.h
@@ -67,6 +67,7 @@ typedef union segment_attributes {
uint16_t l: 1; /* 9; Bit 53 */
uint16_t db: 1; /* 10; Bit 54 */
uint16_t g: 1; /* 11; Bit 55 */
+ uint16_t pad: 4;
} fields;
} __attribute__ ((packed)) segment_attributes_t;