+++ /dev/null
-/** @file\r
- Ipf-specific functionality for DxeLoad.\r
-\r
-Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-\r
-#include "DxeIpl.h"\r
-\r
-\r
-\r
-/**\r
- Transfers control to DxeCore.\r
-\r
- This function performs a CPU architecture specific operations to execute\r
- the entry point of DxeCore with the parameters of HobList.\r
- It also installs EFI_END_OF_PEI_PPI to signal the end of PEI phase.\r
-\r
- @param DxeCoreEntryPoint The entry point of DxeCore.\r
- @param HobList The start of HobList passed to DxeCore.\r
-\r
-**/\r
-VOID\r
-HandOffToDxeCore (\r
- IN EFI_PHYSICAL_ADDRESS DxeCoreEntryPoint,\r
- IN EFI_PEI_HOB_POINTERS HobList\r
- )\r
-{\r
- VOID *BaseOfStack;\r
- VOID *TopOfStack;\r
- VOID *BspStore;\r
- EFI_STATUS Status;\r
-\r
- //\r
- // Allocate 128KB for the Stack\r
- //\r
- BaseOfStack = AllocatePages (EFI_SIZE_TO_PAGES (STACK_SIZE));\r
- ASSERT (BaseOfStack != NULL);\r
-\r
- //\r
- // Allocate 16KB for the BspStore\r
- //\r
- BspStore = AllocatePages (EFI_SIZE_TO_PAGES (BSP_STORE_SIZE));\r
- ASSERT (BspStore != NULL);\r
- //\r
- // Build BspStoreHob\r
- //\r
- BuildBspStoreHob ((EFI_PHYSICAL_ADDRESS) (UINTN) BspStore, BSP_STORE_SIZE, EfiBootServicesData);\r
-\r
- //\r
- // Compute the top of the stack we were allocated. Pre-allocate a UINTN\r
- // for safety.\r
- //\r
- TopOfStack = (VOID *) ((UINTN) BaseOfStack + EFI_SIZE_TO_PAGES (STACK_SIZE) * EFI_PAGE_SIZE - CPU_STACK_ALIGNMENT);\r
- TopOfStack = ALIGN_POINTER (TopOfStack, CPU_STACK_ALIGNMENT);\r
-\r
- //\r
- // End of PEI phase signal\r
- //\r
- Status = PeiServicesInstallPpi (&gEndOfPeiSignalPpi);\r
- ASSERT_EFI_ERROR (Status);\r
-\r
- //\r
- // Update the contents of BSP stack HOB to reflect the real stack info passed to DxeCore.\r
- //\r
- UpdateStackHob ((EFI_PHYSICAL_ADDRESS)(UINTN) BaseOfStack, STACK_SIZE);\r
-\r
- //\r
- // Transfer the control to the entry point of DxeCore.\r
- //\r
- SwitchStack (\r
- (SWITCH_STACK_ENTRY_POINT)(UINTN)DxeCoreEntryPoint,\r
- HobList.Raw,\r
- NULL,\r
- TopOfStack,\r
- BspStore\r
- );\r
-}\r