aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/x86_emulate
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2009-05-27 15:55:29 +0100
committerKeir Fraser <keir.fraser@citrix.com>2009-05-27 15:55:29 +0100
commita36045afa893df1700a1ebe0668f1c5bce1d3db8 (patch)
tree147577e6608acf2c7a0c9646187bbf271f9d53a1 /xen/arch/x86/x86_emulate
parent5cb81a39e5636226f223fd67f11cfe14a039684a (diff)
downloadxen-a36045afa893df1700a1ebe0668f1c5bce1d3db8.tar.gz
xen-a36045afa893df1700a1ebe0668f1c5bce1d3db8.tar.bz2
xen-a36045afa893df1700a1ebe0668f1c5bce1d3db8.zip
x86: Fix 32-bit build.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
Diffstat (limited to 'xen/arch/x86/x86_emulate')
-rw-r--r--xen/arch/x86/x86_emulate/x86_emulate.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/xen/arch/x86/x86_emulate/x86_emulate.c b/xen/arch/x86/x86_emulate/x86_emulate.c
index e6a94455d5..d221f0076c 100644
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -3599,6 +3599,7 @@ x86_emulate(
cs.attr.bytes = 0xc9b; /* G+DB+P+S+Code */
ss.attr.bytes = 0xc93; /* G+DB+P+S+Data */
+#ifdef __x86_64__
if ( in_longmode(ctxt, ops) )
{
cs.attr.fields.db = 0;
@@ -3618,11 +3619,12 @@ x86_emulate(
_regs.eflags &= ~(msr_content | EFLG_RF);
}
else
+#endif
{
rc = ops->read_msr(MSR_STAR, &msr_content, ctxt);
fail_if(rc != 0);
- _regs.rcx = _regs.rip;
+ _regs.ecx = _regs.eip;
_regs.eip = (uint32_t)msr_content;
_regs.eflags &= ~(EFLG_VM | EFLG_IF | EFLG_RF);
}
@@ -3783,11 +3785,11 @@ x86_emulate(
rc = ops->read_msr(MSR_SYSENTER_EIP, &msr_content, ctxt);
fail_if(rc != 0);
- _regs.rip = msr_content;
+ _regs.eip = msr_content;
rc = ops->read_msr(MSR_SYSENTER_ESP, &msr_content, ctxt);
fail_if(rc != 0);
- _regs.rsp = msr_content;
+ _regs.esp = msr_content;
break;
}
@@ -3846,8 +3848,8 @@ x86_emulate(
rc = ops->write_segment(x86_seg_ss, &ss, ctxt);
fail_if(rc != 0);
- _regs.rip = _regs.rdx;
- _regs.rsp = _regs.rcx;
+ _regs.eip = _regs.edx;
+ _regs.esp = _regs.ecx;
break;
}