aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2007-11-25 11:43:53 +0000
committerKeir Fraser <keir.fraser@citrix.com>2007-11-25 11:43:53 +0000
commita2b5673b0018f0184b4833f65a453538cf84f6f5 (patch)
tree3db44cdf515f059f4c2ddfe28a0137ff8a840d6c /xen/include/asm-x86
parent727f3fd5fa194bb03e9e478b2fd1760f38a43546 (diff)
downloadxen-a2b5673b0018f0184b4833f65a453538cf84f6f5.tar.gz
xen-a2b5673b0018f0184b4833f65a453538cf84f6f5.tar.bz2
xen-a2b5673b0018f0184b4833f65a453538cf84f6f5.zip
vmx realmode: Plumb through I/O port accesses in emulated realmode.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
Diffstat (limited to 'xen/include/asm-x86')
-rw-r--r--xen/include/asm-x86/hvm/vcpu.h3
-rw-r--r--xen/include/asm-x86/hvm/vmx/vmcs.h4
-rw-r--r--xen/include/asm-x86/hvm/vmx/vmx.h1
3 files changed, 8 insertions, 0 deletions
diff --git a/xen/include/asm-x86/hvm/vcpu.h b/xen/include/asm-x86/hvm/vcpu.h
index 5d653f0ff9..f6c55dba12 100644
--- a/xen/include/asm-x86/hvm/vcpu.h
+++ b/xen/include/asm-x86/hvm/vcpu.h
@@ -59,6 +59,9 @@ struct hvm_vcpu {
bool_t flag_dr_dirty;
bool_t debug_state_latch;
+ /* Callback function for I/O completion. */
+ int (*io_complete)(void);
+
union {
struct arch_vmx_struct vmx;
struct arch_svm_struct svm;
diff --git a/xen/include/asm-x86/hvm/vmx/vmcs.h b/xen/include/asm-x86/hvm/vmx/vmcs.h
index 0654264b46..68d1819d32 100644
--- a/xen/include/asm-x86/hvm/vmx/vmcs.h
+++ b/xen/include/asm-x86/hvm/vmx/vmcs.h
@@ -92,6 +92,10 @@ struct arch_vmx_struct {
unsigned long vmxassist_enabled:1;
unsigned long irqbase_mode:1;
unsigned char pm_irqbase[2];
+#else
+ bool_t real_mode_io_in_progress;
+ bool_t real_mode_io_completed;
+ unsigned long real_mode_io_data;
#endif
};
diff --git a/xen/include/asm-x86/hvm/vmx/vmx.h b/xen/include/asm-x86/hvm/vmx/vmx.h
index f6846a1d30..4787226cd3 100644
--- a/xen/include/asm-x86/hvm/vmx/vmx.h
+++ b/xen/include/asm-x86/hvm/vmx/vmx.h
@@ -34,6 +34,7 @@ void vmx_do_resume(struct vcpu *);
void set_guest_time(struct vcpu *v, u64 gtime);
void vmx_vlapic_msr_changed(struct vcpu *v);
int vmx_realmode(struct cpu_user_regs *regs);
+int vmx_realmode_io_complete(void);
/*
* Exit Reasons