diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-12-09 16:28:02 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-12-09 16:28:02 +0000 |
commit | 8d4638d15e10d2d52547195dd6b57402b5382cce (patch) | |
tree | 768819983f8a3eebd83b897bf28835ea0540f84b /xen/arch/x86/x86_emulate | |
parent | dbc75f4a5b8300ed2ef4bd2005b986953ddaf9b3 (diff) | |
download | xen-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.h | 1 |
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; |