X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=EmulatorPkg%2FFlashMapPei%2FFlashMapPei.c;fp=EmulatorPkg%2FFlashMapPei%2FFlashMapPei.c;h=94c1874193c350abd3c3526b74fc121c506bae41;hb=bb89ec1a7ec2f8d35033df9e47b3604925da3bd3;hp=0000000000000000000000000000000000000000;hpb=d3e0289ccf641481f2cbdcbb0d5868c393b7edbb;p=mirror_edk2.git diff --git a/EmulatorPkg/FlashMapPei/FlashMapPei.c b/EmulatorPkg/FlashMapPei/FlashMapPei.c new file mode 100644 index 0000000000..94c1874193 --- /dev/null +++ b/EmulatorPkg/FlashMapPei/FlashMapPei.c @@ -0,0 +1,83 @@ +/*++ @file + PEIM to build GUIDed HOBs for platform specific flash map + +Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
+Portions copyright (c) 2011, Apple Inc. All rights reserved. +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 +#include + +#include +#include +#include +#include +#include +#include +#include + +EFI_STATUS +EFIAPI +PeimInitializeFlashMap ( + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices + ) +/*++ + +Routine Description: + Build GUIDed HOBs for platform specific flash map + +Arguments: + FfsHeader - A pointer to the EFI_FFS_FILE_HEADER structure. + PeiServices - General purpose services available to every PEIM. + +Returns: + EFI_STATUS + +**/ +{ + EFI_STATUS Status; + EMU_THUNK_PPI *Thunk; + EFI_PEI_PPI_DESCRIPTOR *PpiDescriptor; + EFI_PHYSICAL_ADDRESS FdBase; + EFI_PHYSICAL_ADDRESS FdFixUp; + UINT64 FdSize; + + DEBUG ((EFI_D_ERROR, "EmulatorPkg Flash Map PEIM Loaded\n")); + + // + // Get the Fwh Information PPI + // + Status = PeiServicesLocatePpi ( + &gEmuThunkPpiGuid, // GUID + 0, // INSTANCE + &PpiDescriptor, // EFI_PEI_PPI_DESCRIPTOR + (VOID **)&Thunk // PPI + ); + ASSERT_EFI_ERROR (Status); + + // + // Assume that FD0 contains the Flash map. + // + Status = Thunk->FirmwareDevices (0, &FdBase, &FdSize, &FdFixUp); + if (EFI_ERROR (Status)) { + return Status; + } + + PcdSet64 (PcdFlashNvStorageVariableBase64, PcdGet64 (PcdEmuFlashNvStorageVariableBase) + FdFixUp); + PcdSet64 (PcdFlashNvStorageFtwWorkingBase64, PcdGet64 (PcdEmuFlashNvStorageFtwWorkingBase) + FdFixUp); + PcdSet64 (PcdFlashNvStorageFtwSpareBase64, PcdGet64 (PcdEmuFlashNvStorageFtwSpareBase) + FdFixUp); + + return EFI_SUCCESS; +}