POPA
popf
pushq %rdi
+ pushq %rsi
call v3_handle_vmx_exit
andq %rax, %rax
jnz .Lvmm_failure
v3_vmx_vmresume:
+ pop %rsi
pop %rdi
pushf
PUSHA
vmresume
- addq $8, %rsp
jz .Lfail_valid
jc .Lfail_invalid
+ addq $8, %rsp
jmp .Lreturn
.align 8
.Lfail_valid:
addq $8, %rsp
POPA
+ popf
movq $VMX_FAIL_VALID, %rax
jmp .Lreturn
.Lfail_invalid:
addq $8, %rsp
POPA
+ popf
movq $VMX_FAIL_INVALID, %rax
jmp .Lreturn
.Lvmm_failure:
- addq $8, %rsp
- POPA
+ addq $16, %rsp
movq $VMM_FAILURE, %rax
jmp .Lreturn
.Lreturn:
sti
- popf
ret
#else
.globl v3_vmx_exit_handler
v3_vmx_exit_handler:
save_registers(4(%esp))
- addl $8, %rsp
+ addl $8, %esp
POPA
popf
- pushl %rdi
+ pushl %edi
call v3_handle_vmx_exit
andl %eax, %eax