]> git.proxmox.com Git - mirror_edk2.git/blame - EmulatorPkg/FlashMapPei/FlashMapPei.c
OvmfPkg/Csm/LegacyBiosDxe: Update to make it build for OVMF
[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
4Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
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
10\r
11#include "PiPei.h"\r
12\r
13#include <Guid/SystemNvDataGuid.h>\r
14#include <Ppi/EmuThunk.h>\r
15\r
16#include <Library/DebugLib.h>\r
17#include <Library/PeimEntryPoint.h>\r
18#include <Library/HobLib.h>\r
19#include <Library/PeiServicesLib.h>\r
20#include <Library/PeiServicesTablePointerLib.h>\r
21#include <Library/BaseMemoryLib.h>\r
22#include <Library/PcdLib.h>\r
23\r
24EFI_STATUS\r
25EFIAPI\r
26PeimInitializeFlashMap (\r
27 IN EFI_PEI_FILE_HANDLE FileHandle,\r
28 IN CONST EFI_PEI_SERVICES **PeiServices\r
29 )\r
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
bb89ec1a 51 DEBUG ((EFI_D_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
57 &gEmuThunkPpiGuid, // GUID\r
58 0, // INSTANCE\r
59 &PpiDescriptor, // EFI_PEI_PPI_DESCRIPTOR\r
60 (VOID **)&Thunk // PPI\r
61 );\r
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
949f388f 72 PcdSet64 (PcdFlashNvStorageVariableBase64, PcdGet64 (PcdEmuFlashNvStorageVariableBase) + FdFixUp);\r
73 PcdSet64 (PcdFlashNvStorageFtwWorkingBase64, PcdGet64 (PcdEmuFlashNvStorageFtwWorkingBase) + FdFixUp);\r
74 PcdSet64 (PcdFlashNvStorageFtwSpareBase64, PcdGet64 (PcdEmuFlashNvStorageFtwSpareBase) + FdFixUp);\r
75\r
76 return EFI_SUCCESS;\r
77}\r