title: Does VMCALL instruction in x86 save the guest CPU state
body: <p>VMCALL is quite similar to the SYSENTER instruction, differing in the way that SYSENTER is meant for system call (fast transition to the OS), while VMCALL is for hypercalls (transition to hypervisor). </p>
  
  <p>My question is that while SYSENTER does not save the CPU state, does the same apply for VMCALL. Issuing a VMCALL causes a VM exit, but I am not sure if it saves the guest CPU state to the associated VMCS structure or not?</p>
  
  <p>If it does save the CPU state then how exactly can we pass arguments in a hypercall?</p>