From 82dae5efb31a4865f3f30be41a28c83d98c1d4ed Mon Sep 17 00:00:00 2001 From: rsun3 Date: Tue, 22 Sep 2009 09:19:59 +0000 Subject: [PATCH] Fix bug that home addresses for register parameters must be allocated for calling C function from X64 assembly code to follow x64 calling convention. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9303 6f19259b-4bc3-4df7-8a09-765794883524 --- .../BaseTimerLibLocalApic/X64/X86LocalApicTimerInitialize.asm | 2 ++ OvmfPkg/Sec/X64/SecEntry.S | 1 + OvmfPkg/Sec/X64/SecEntry.asm | 1 + 3 files changed, 4 insertions(+) diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseTimerLibLocalApic/X64/X86LocalApicTimerInitialize.asm b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseTimerLibLocalApic/X64/X86LocalApicTimerInitialize.asm index c15b7208da..005b55b7e1 100644 --- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseTimerLibLocalApic/X64/X86LocalApicTimerInitialize.asm +++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseTimerLibLocalApic/X64/X86LocalApicTimerInitialize.asm @@ -31,7 +31,9 @@ EXTERNDEF InternalX86GetApicBase:PROC ; ); ;------------------------------------------------------------------------------ CpuInitLocalApicTimer PROC + sub rsp, 28h ;Reserve home addresses and make RSP 16-byte aligned call InternalX86GetApicBase + add rsp, 28h mov dword ptr [rax + 3e0h], 0ah bts dword ptr [rax + 320h], 17 mov dword ptr [rax + 380h], -1 diff --git a/OvmfPkg/Sec/X64/SecEntry.S b/OvmfPkg/Sec/X64/SecEntry.S index 9855ea9d81..a1de5e674b 100644 --- a/OvmfPkg/Sec/X64/SecEntry.S +++ b/OvmfPkg/Sec/X64/SecEntry.S @@ -55,5 +55,6 @@ ASM_PFX(_ModuleEntryPoint): movq %rsi, %rdx movq %rdi, %r8 movq %rsp, %r9 + subq $0x20, %rsp call ASM_PFX(SecCoreStartupWithStack) diff --git a/OvmfPkg/Sec/X64/SecEntry.asm b/OvmfPkg/Sec/X64/SecEntry.asm index 8b836de62e..fb38548be3 100644 --- a/OvmfPkg/Sec/X64/SecEntry.asm +++ b/OvmfPkg/Sec/X64/SecEntry.asm @@ -54,6 +54,7 @@ _ModuleEntryPoint PROC PUBLIC mov rdx, rsi mov r8, rdi mov r9, rsp + sub rsp, 20h call SecCoreStartupWithStack _ModuleEntryPoint ENDP -- 2.39.2