aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/x86_emulate.h
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-02-05 15:45:10 +0000
committerKeir Fraser <keir.fraser@citrix.com>2008-02-05 15:45:10 +0000
commit1118c5715f51800714f1ff1b62fc6382e1486f05 (patch)
tree4f2fd8aa1ca57d2c5733da62812ab6e42e53876f /xen/include/asm-x86/x86_emulate.h
parentae9093a33f56a3f3140aa96c04acc0049228afc3 (diff)
downloadxen-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.h12
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 */