Commit 77df5495 authored by Sean Christopherson's avatar Sean Christopherson Committed by Paolo Bonzini

KVM: VMX: Pass @launched to the vCPU-run asm via standard ABI regs

...to prepare for making the sub-routine callable from C code.
Signed-off-by: default avatarSean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent a62fd5a7
...@@ -84,7 +84,7 @@ ENDPROC(vmx_vmexit) ...@@ -84,7 +84,7 @@ ENDPROC(vmx_vmexit)
* __vmx_vcpu_run - Run a vCPU via a transition to VMX guest mode * __vmx_vcpu_run - Run a vCPU via a transition to VMX guest mode
* @vmx: struct vcpu_vmx * * @vmx: struct vcpu_vmx *
* @regs: unsigned long * (to guest registers) * @regs: unsigned long * (to guest registers)
* %RBX: VMCS launched status (non-zero indicates already launched) * @launched: %true if the VMCS has been launched
* *
* Returns: * Returns:
* %RBX is 0 on VM-Exit, 1 on VM-Fail * %RBX is 0 on VM-Exit, 1 on VM-Fail
...@@ -99,6 +99,9 @@ ENTRY(__vmx_vcpu_run) ...@@ -99,6 +99,9 @@ ENTRY(__vmx_vcpu_run)
*/ */
push %_ASM_ARG2 push %_ASM_ARG2
/* Copy @launched to BL, _ASM_ARG3 is volatile. */
mov %_ASM_ARG3B, %bl
/* Adjust RSP to account for the CALL to vmx_vmenter(). */ /* Adjust RSP to account for the CALL to vmx_vmenter(). */
lea -WORD_SIZE(%_ASM_SP), %_ASM_ARG2 lea -WORD_SIZE(%_ASM_SP), %_ASM_ARG2
call vmx_update_host_rsp call vmx_update_host_rsp
......
...@@ -6448,19 +6448,18 @@ static void vmx_vcpu_run(struct kvm_vcpu *vcpu) ...@@ -6448,19 +6448,18 @@ static void vmx_vcpu_run(struct kvm_vcpu *vcpu)
"call __vmx_vcpu_run \n\t" "call __vmx_vcpu_run \n\t"
: ASM_CALL_CONSTRAINT, "=b"(vmx->fail), : ASM_CALL_CONSTRAINT, "=b"(vmx->fail),
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
"=D"((int){0}), "=S"((int){0}) "=D"((int){0}), "=S"((int){0}), "=d"((int){0})
: "D"(vmx), "S"(&vcpu->arch.regs), : "D"(vmx), "S"(&vcpu->arch.regs), "d"(vmx->loaded_vmcs->launched)
#else #else
"=a"((int){0}), "=d"((int){0}) "=a"((int){0}), "=d"((int){0}), "=c"((int){0})
: "a"(vmx), "d"(&vcpu->arch.regs), : "a"(vmx), "d"(&vcpu->arch.regs), "c"(vmx->loaded_vmcs->launched)
#endif #endif
"b"(vmx->loaded_vmcs->launched)
: "cc", "memory" : "cc", "memory"
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
, "rax", "rcx", "rdx" , "rax", "rcx"
, "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15" , "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15"
#else #else
, "ecx", "edi", "esi" , "edi", "esi"
#endif #endif
); );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment