X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fsvm_lowlevel.S;h=45c55756c73532f9c411f47eff9847302e8d1901;hp=11cc3b003157fbf35f9ff55457ae1b576c354769;hb=660d3c512aa3299ede91a0b2e24d8b5cde6306da;hpb=1df1d51642fd023684326023459da17765b428ce diff --git a/palacios/src/palacios/svm_lowlevel.S b/palacios/src/palacios/svm_lowlevel.S index 11cc3b0..45c5575 100644 --- a/palacios/src/palacios/svm_lowlevel.S +++ b/palacios/src/palacios/svm_lowlevel.S @@ -23,6 +23,7 @@ #ifdef __V3_32BIT__ // Note that RAX is saved in the VMCB, so we don't touch it here + #define Save_SVM_Registers(location) \ pushl %eax; \ movl location, %eax; \ @@ -32,7 +33,7 @@ movl $0, 24(%eax); \ movl %ebx, 32(%eax); \ movl %edx, 40(%eax); \ - movl %ecx, 48(%eax); \ + movl %ecx, 48(%eax); \ popl %eax; @@ -73,12 +74,15 @@ v3_svm_launch: addl $4, %esp; + popa; + popf; movl 16(%ebp), %eax; vmload; - popa; - popf; + // We don't detect failures here, so just return 0 + xorl %eax, %eax + pop %ebp; ret @@ -87,6 +91,7 @@ v3_svm_launch: #elif __V3_64BIT__ // Note that RAX is saved in the VMCB, so we don't touch it here + #define Save_SVM_Registers(location) \ pushq %rax; \ movq location, %rax; \