diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-05-27 15:55:29 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-05-27 15:55:29 +0100 |
commit | a36045afa893df1700a1ebe0668f1c5bce1d3db8 (patch) | |
tree | 147577e6608acf2c7a0c9646187bbf271f9d53a1 /xen/arch/x86/x86_emulate | |
parent | 5cb81a39e5636226f223fd67f11cfe14a039684a (diff) | |
download | xen-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.c | 12 |
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; } |