From: lgao4 Date: Mon, 13 Nov 2006 07:10:54 +0000 (+0000) Subject: Add comments about why pre-allocate 32 bytes for load 64bit dxe core and Add code... X-Git-Tag: edk2-stable201903~23942 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=3e025b69934d9bb7ba172e4ff3591cc2eea7621c Add comments about why pre-allocate 32 bytes for load 64bit dxe core and Add code to make sure the stack is aligned to 16 bytes. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1935 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/EdkModulePkg/Core/DxeIplX64Peim/DxeLoadX64.c b/EdkModulePkg/Core/DxeIplX64Peim/DxeLoadX64.c index 7b293ef0c2..655d89045d 100644 --- a/EdkModulePkg/Core/DxeIplX64Peim/DxeLoadX64.c +++ b/EdkModulePkg/Core/DxeIplX64Peim/DxeLoadX64.c @@ -259,8 +259,8 @@ Returns: ASSERT (BaseOfStack != 0); // - // Compute the top of the stack we were allocated. Pre-allocate a 32 bytes - // for x64 calling convention. + // Compute the top of the stack we were allocated, which is used to load X64 dxe core. + // Pre-allocate a 32 bytes which confroms to x64 calling convention. // // The first four parameters to a function are passed in rcx, rdx, r8 and r9. // Any further parameters are pushed on the stack. Furthermore, space (4 * 8bytes) for the @@ -269,6 +269,11 @@ Returns: // TopOfStack = BaseOfStack + EFI_SIZE_TO_PAGES (STACK_SIZE) * EFI_PAGE_SIZE - 32; + // + // X64 Calling Conventions requires that the stack must be aligned to 16 bytes + // + TopOfStack = ALIGN_POINTER (TopOfStack, 16); + // // Add architecture-specifc HOBs (including the BspStore HOB) //