From: Jack Lange Date: Fri, 5 Nov 2010 21:33:47 +0000 (-0500) Subject: fix 32 bit vmx entry to match i386/gcc calling conventions X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=commitdiff_plain;h=862392a8cadf9e2a2fa0e395bb33835356ad0f36;p=palacios.git fix 32 bit vmx entry to match i386/gcc calling conventions --- diff --git a/palacios/src/palacios/vmx_lowlevel.S b/palacios/src/palacios/vmx_lowlevel.S index 757d835..78f2d84 100644 --- a/palacios/src/palacios/vmx_lowlevel.S +++ b/palacios/src/palacios/vmx_lowlevel.S @@ -268,10 +268,14 @@ vmx_launch_ret: #define PRE_LAUNCH(return_target) \ + push %ebp; \ + movl %esp, %ebp; \ pushf; \ PUSHA; \ - pushl %edi; \ - pushl %edx; \ + \ + movl 8(%ebp), %edi; \ + movl 12(%ebp), %esi; \ + movl 16(%ebp), %edx; \ \ movl %esp, %eax; \ movl $VMCS_HOST_RSP, %ebx; \ @@ -289,6 +293,8 @@ vmx_launch_ret: restore_registers(%edi); +// 32 bit GCC passes arguments via stack + .align 4 .globl v3_vmx_resume v3_vmx_resume: @@ -346,6 +352,7 @@ vmx_launch_ret: jmp .Lreturn .Lreturn: + pop %ebp; ret #endif