mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
x86: Fix 32-bit build.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
This commit is contained in:
1 parent
5cb81a39e5
commit
a36045afa8
2 files changed
+7
-34
No files matched your search
@@ -1186,34 +1186,6 @@ static void svm_vmexit_do_rdtsc(struct cpu_user_regs *regs)
|
||||
hvm_rdtsc_intercept(regs);
|
||||
}
|
||||
|
||||
static void svm_dump_regs(const char *from, struct cpu_user_regs *regs)
|
||||
{
|
||||
printk("Dumping guest's current registers at %s...\n", from);
|
||||
printk("Size of regs = 0x%lx, address = %p\n",
|
||||
sizeof(struct cpu_user_regs), regs);
|
||||
|
||||
printk("r15 = 0x%016"PRIx64", r14 = 0x%016"PRIx64"\n",
|
||||
regs->r15, regs->r14);
|
||||
printk("r13 = 0x%016"PRIx64", r12 = 0x%016"PRIx64"\n",
|
||||
regs->r13, regs->r12);
|
||||
printk("rbp = 0x%016"PRIx64", rbx = 0x%016"PRIx64"\n",
|
||||
regs->rbp, regs->rbx);
|
||||
printk("r11 = 0x%016"PRIx64", r10 = 0x%016"PRIx64"\n",
|
||||
regs->r11, regs->r10);
|
||||
printk("r9 = 0x%016"PRIx64", r8 = 0x%016"PRIx64"\n",
|
||||
regs->r9, regs->r8);
|
||||
printk("rax = 0x%016"PRIx64", rcx = 0x%016"PRIx64"\n",
|
||||
regs->rax, regs->rcx);
|
||||
printk("rdx = 0x%016"PRIx64", rsi = 0x%016"PRIx64"\n",
|
||||
regs->rdx, regs->rsi);
|
||||
printk("rdi = 0x%016"PRIx64", rsp = 0x%016"PRIx64"\n",
|
||||
regs->rdi, regs->rsp);
|
||||
printk("error code = 0x%08"PRIx32", entry_vector = 0x%08"PRIx32"\n",
|
||||
regs->error_code, regs->entry_vector);
|
||||
printk("rip = 0x%016"PRIx64", rflags = 0x%016"PRIx64"\n",
|
||||
regs->rip, regs->rflags);
|
||||
}
|
||||
|
||||
static void svm_vmexit_ud_intercept(struct cpu_user_regs *regs)
|
||||
{
|
||||
struct hvm_emulate_ctxt ctxt;
|
||||
@@ -1310,7 +1282,6 @@ asmlinkage void svm_vmexit_handler(struct cpu_user_regs *regs)
|
||||
if ( unlikely(exit_reason == VMEXIT_INVALID) )
|
||||
{
|
||||
svm_dump_vmcb(__func__, vmcb);
|
||||
svm_dump_regs(__func__, regs);
|
||||
goto exit_and_crash;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||