]> git.proxmox.com Git - mirror_edk2.git/blame - EmulatorPkg/FlashMapPei/FlashMapPei.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / EmulatorPkg / FlashMapPei / FlashMapPei.c
CommitLineData
949f388f 1/*++ @file\r
2 PEIM to build GUIDed HOBs for platform specific flash map\r
3\r
9e3ab94d 4Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
949f388f 5Portions copyright (c) 2011, Apple Inc. All rights reserved.\r
e3ba31da 6SPDX-License-Identifier: BSD-2-Clause-Patent\r
949f388f 7\r
8**/\r
9\r
949f388f 10#include "PiPei.h"\r
11\r
12#include <Guid/SystemNvDataGuid.h>\r
13#include <Ppi/EmuThunk.h>\r
14\r
15#include <Library/DebugLib.h>\r
16#include <Library/PeimEntryPoint.h>\r
17#include <Library/HobLib.h>\r
18#include <Library/PeiServicesLib.h>\r
19#include <Library/PeiServicesTablePointerLib.h>\r
20#include <Library/BaseMemoryLib.h>\r
21#include <Library/PcdLib.h>\r
22\r
23EFI_STATUS\r
24EFIAPI\r
25PeimInitializeFlashMap (\r
a550d468
MK
26 IN EFI_PEI_FILE_HANDLE FileHandle,\r
27 IN CONST EFI_PEI_SERVICES **PeiServices\r
949f388f 28 )\r
a550d468 29\r
949f388f 30/*++\r
31\r
32Routine Description:\r
33 Build GUIDed HOBs for platform specific flash map\r
d18d8a1d 34\r
949f388f 35Arguments:\r
36 FfsHeader - A pointer to the EFI_FFS_FILE_HEADER structure.\r
37 PeiServices - General purpose services available to every PEIM.\r
d18d8a1d 38\r
949f388f 39Returns:\r
40 EFI_STATUS\r
41\r
42**/\r
43{\r
44 EFI_STATUS Status;\r
45 EMU_THUNK_PPI *Thunk;\r
46 EFI_PEI_PPI_DESCRIPTOR *PpiDescriptor;\r
47 EFI_PHYSICAL_ADDRESS FdBase;\r
48 EFI_PHYSICAL_ADDRESS FdFixUp;\r
49 UINT64 FdSize;\r
50\r
9c7da8d8 51 DEBUG ((DEBUG_ERROR, "EmulatorPkg Flash Map PEIM Loaded\n"));\r
949f388f 52\r
53 //\r
54 // Get the Fwh Information PPI\r
55 //\r
56 Status = PeiServicesLocatePpi (\r
a550d468
MK
57 &gEmuThunkPpiGuid, // GUID\r
58 0, // INSTANCE\r
59 &PpiDescriptor, // EFI_PEI_PPI_DESCRIPTOR\r
60 (VOID **)&Thunk // PPI\r
61 );\r
949f388f 62 ASSERT_EFI_ERROR (Status);\r
63\r
64 //\r
65 // Assume that FD0 contains the Flash map.\r
66 //\r
67 Status = Thunk->FirmwareDevices (0, &FdBase, &FdSize, &FdFixUp);\r
68 if (EFI_ERROR (Status)) {\r
69 return Status;\r
70 }\r
d18d8a1d 71\r
9e3ab94d
MK
72 PcdSet64S (PcdFlashNvStorageVariableBase64, PcdGet64 (PcdEmuFlashNvStorageVariableBase) + FdFixUp);\r
73 PcdSet64S (PcdFlashNvStorageFtwWorkingBase64, PcdGet64 (PcdEmuFlashNvStorageFtwWorkingBase) + FdFixUp);\r
74 PcdSet64S (PcdFlashNvStorageFtwSpareBase64, PcdGet64 (PcdEmuFlashNvStorageFtwSpareBase) + FdFixUp);\r
949f388f 75\r
76 return EFI_SUCCESS;\r
77}\r