]> git.proxmox.com Git - mirror_edk2.git/blame - EmulatorPkg/Library/ThunkPpiList/ThunkPpiList.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / EmulatorPkg / Library / ThunkPpiList / ThunkPpiList.c
CommitLineData
949f388f 1/** @file\r
2 Emulator Thunk to abstract OS services from pure EFI code\r
3\r
4 Copyright (c) 2008 - 2011, Apple Inc. All rights reserved.<BR>\r
b8800fc5 5 Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>\r
d18d8a1d 6\r
e3ba31da 7 SPDX-License-Identifier: BSD-2-Clause-Patent\r
949f388f 8\r
9**/\r
10\r
11#include <PiPei.h>\r
12#include <Library/BaseLib.h>\r
b8800fc5 13#include <Library/MemoryAllocationLib.h>\r
949f388f 14\r
949f388f 15UINTN gThunkPpiListSize = 0;\r
a550d468 16EFI_PEI_PPI_DESCRIPTOR *gThunkPpiList = NULL;\r
949f388f 17\r
18EFI_PEI_PPI_DESCRIPTOR *\r
19GetThunkPpiList (\r
20 VOID\r
21 )\r
22{\r
a550d468 23 UINTN Index;\r
d18d8a1d 24\r
949f388f 25 if (gThunkPpiList == NULL) {\r
26 return NULL;\r
27 }\r
28\r
a550d468 29 Index = (gThunkPpiListSize/sizeof (EFI_PEI_PPI_DESCRIPTOR)) - 1;\r
949f388f 30 gThunkPpiList[Index].Flags |= EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST;\r
d18d8a1d 31\r
949f388f 32 return gThunkPpiList;\r
33}\r
34\r
949f388f 35EFI_STATUS\r
36EFIAPI\r
37AddThunkPpi (\r
38 IN UINTN Flags,\r
39 IN EFI_GUID *Guid,\r
40 IN VOID *Ppi\r
41 )\r
42{\r
a550d468 43 UINTN Index;\r
b8800fc5 44\r
45 gThunkPpiList = ReallocatePool (\r
46 gThunkPpiListSize,\r
47 gThunkPpiListSize + sizeof (EFI_PEI_PPI_DESCRIPTOR),\r
48 gThunkPpiList\r
49 );\r
949f388f 50 if (gThunkPpiList == NULL) {\r
51 return EFI_OUT_OF_RESOURCES;\r
52 }\r
d18d8a1d 53\r
a550d468 54 Index = (gThunkPpiListSize/sizeof (EFI_PEI_PPI_DESCRIPTOR));\r
949f388f 55 gThunkPpiList[Index].Flags = Flags;\r
56 gThunkPpiList[Index].Guid = Guid;\r
57 gThunkPpiList[Index].Ppi = Ppi;\r
a550d468 58 gThunkPpiListSize += sizeof (EFI_PEI_PPI_DESCRIPTOR);\r
949f388f 59\r
60 return EFI_SUCCESS;\r
61}\r