| /** @file | |
| Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR> | |
| This program and the accompanying materials | |
| are licensed and made available under the terms and conditions of the BSD License | |
| which accompanies this distribution. The full text of the license may be found at | |
| http://opensource.org/licenses/bsd-license.php | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| **/ | |
| #include <PiPei.h> | |
| #include <Library/DebugLib.h> | |
| #include <Library/PrePiLib.h> | |
| #include <Library/PcdLib.h> | |
| #include <Ppi/GuidedSectionExtraction.h> | |
| VOID | |
| _ModuleEntryPoint ( | |
| VOID | |
| ) | |
| { | |
| } | |
| VOID | |
| CEntryPoint ( | |
| VOID *MemoryBase, | |
| UINTN MemorySize, | |
| VOID *StackBase, | |
| UINTN StackSize | |
| ) | |
| { | |
| EFI_PHYSICAL_ADDRESS MemoryBegin; | |
| UINT64 MemoryLength; | |
| VOID *HobBase; | |
| // | |
| // Boot strap the C environment so the other library services will work properly. | |
| // | |
| MemoryBegin = (EFI_PHYSICAL_ADDRESS)(UINTN)MemoryBase; | |
| MemoryLength = (UINT64)MemorySize; | |
| HobBase = (VOID *)(UINTN)(FixedPcdGet32(PcdEmbeddedFdBaseAddress) + FixedPcdGet32(PcdEmbeddedFdSize)); | |
| CreateHobList (MemoryBase, MemorySize, HobBase, StackBase); | |
| MemoryBegin = (EFI_PHYSICAL_ADDRESS)(UINTN)StackBase; | |
| MemoryLength = (UINT64)StackSize; | |
| UpdateStackHob (MemoryBegin, MemoryLength); | |
| DEBUG ((DEBUG_ERROR, "CEntryPoint (%x,%x,%x,%x)\n", MemoryBase, MemorySize, StackBase, StackSize)); | |
| // | |
| // Add your C code stuff here.... | |
| // | |
| // | |
| // Load the DXE Core and transfer control to it | |
| // | |
| // Give the DXE Core access to our DEBUG and ASSERT infrastructure so this will work prior | |
| // to the DXE version being loaded. Thus we close the debugging gap between phases. | |
| AddDxeCoreReportStatusCodeCallback (); | |
| //BuildFvHobs (PcdBfvBase, PcdBfvSize, NULL); | |
| LoadDxeCoreFromFv (NULL, 0); | |
| // DXE Core should always load and never return | |
| ASSERT (FALSE); | |
| } | |