}
}
-asmlinkage void vmx_load_cr2(void)
-{
- struct vcpu *v = current;
-
- local_irq_disable();
- asm volatile("mov %0,%%cr2": :"r" (v->arch.hvm_vmx.cpu_cr2));
-}
-
asmlinkage void vmx_trace_vmentry(void)
{
TRACE_5D(TRC_VMX_VMENTRY + current->vcpu_id,
jnz vmx_process_softirqs
call vmx_intr_assist
- call vmx_load_cr2
+ movl VCPU_vmx_cr2(%ebx),%eax
+ movl %eax,%cr2
call vmx_trace_vmentry
cmpl $0,VCPU_vmx_launched(%ebx)
jnz vmx_process_softirqs
call vmx_intr_assist
- call vmx_load_cr2
+ movq VCPU_vmx_cr2(%rbx),%rax
+ movq %rax,%cr2
call vmx_trace_vmentry
cmpl $0,VCPU_vmx_launched(%rbx)
BLANK();
OFFSET(VCPU_vmx_launched, struct vcpu, arch.hvm_vmx.launched);
+ OFFSET(VCPU_vmx_cr2, struct vcpu, arch.hvm_vmx.cpu_cr2);
BLANK();
OFFSET(VMCB_rax, struct vmcb_struct, rax);
BLANK();
OFFSET(VCPU_vmx_launched, struct vcpu, arch.hvm_vmx.launched);
+ OFFSET(VCPU_vmx_cr2, struct vcpu, arch.hvm_vmx.cpu_cr2);
BLANK();
OFFSET(VMCB_rax, struct vmcb_struct, rax);