diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-02-05 15:45:10 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-02-05 15:45:10 +0000 |
commit | 1118c5715f51800714f1ff1b62fc6382e1486f05 (patch) | |
tree | 4f2fd8aa1ca57d2c5733da62812ab6e42e53876f /xen/include/asm-x86/x86_emulate.h | |
parent | ae9093a33f56a3f3140aa96c04acc0049228afc3 (diff) | |
download | xen-1118c5715f51800714f1ff1b62fc6382e1486f05.tar.gz xen-1118c5715f51800714f1ff1b62fc6382e1486f05.tar.bz2 xen-1118c5715f51800714f1ff1b62fc6382e1486f05.zip |
vmx realmode: Emulate protected-mode transition while CS and SS have
bad selector values (bottom two bits non-zero).
Allows opensuse 10.3 install CD to boot. Unfortunately SUSE Linux 10.1
install CD still fails to work...
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
Diffstat (limited to 'xen/include/asm-x86/x86_emulate.h')
-rw-r--r-- | xen/include/asm-x86/x86_emulate.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/xen/include/asm-x86/x86_emulate.h b/xen/include/asm-x86/x86_emulate.h index 17a76f936a..53d12f52be 100644 --- a/xen/include/asm-x86/x86_emulate.h +++ b/xen/include/asm-x86/x86_emulate.h @@ -39,9 +39,18 @@ enum x86_segment { x86_seg_tr, x86_seg_ldtr, x86_seg_gdtr, - x86_seg_idtr + x86_seg_idtr, + /* + * Dummy: used to emulate direct processor accesses to management + * structures (TSS, GDT, LDT, IDT, etc.) which use linear addressing + * (no segment component) and bypass usual segment- and page-level + * protection checks. + */ + x86_seg_none }; +#define is_x86_user_segment(seg) ((unsigned)(seg) <= x86_seg_gs) + /* * Attribute for segment selector. This is a copy of bit 40:47 & 52:55 of the * segment descriptor. It happens to match the format of an AMD SVM VMCB. @@ -333,6 +342,7 @@ struct x86_emulate_ops /* inject_hw_exception */ int (*inject_hw_exception)( uint8_t vector, + uint16_t error_code, struct x86_emulate_ctxt *ctxt); /* inject_sw_interrupt */ |