diff options
Diffstat (limited to 'EdkModulePkg/Universal/PCD/Pei')
-rw-r--r-- | EdkModulePkg/Universal/PCD/Pei/Pcd.c | 796 | ||||
-rw-r--r-- | EdkModulePkg/Universal/PCD/Pei/Pcd.dxs | 25 | ||||
-rw-r--r-- | EdkModulePkg/Universal/PCD/Pei/Pcd.msa | 129 | ||||
-rw-r--r-- | EdkModulePkg/Universal/PCD/Pei/Service.c | 728 | ||||
-rw-r--r-- | EdkModulePkg/Universal/PCD/Pei/Service.h | 457 |
5 files changed, 0 insertions, 2135 deletions
diff --git a/EdkModulePkg/Universal/PCD/Pei/Pcd.c b/EdkModulePkg/Universal/PCD/Pei/Pcd.c deleted file mode 100644 index daaba4b539..0000000000 --- a/EdkModulePkg/Universal/PCD/Pei/Pcd.c +++ /dev/null @@ -1,796 +0,0 @@ -/** @file PCD PEIM
-
-Copyright (c) 2006, Intel Corporation
-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.
-
-
-Module Name: Pcd.c
-
-**/
-
-#include "Service.h"
-
-
-PCD_PPI mPcdPpiInstance = {
- PeiPcdSetSku,
-
- PeiPcdGet8,
- PeiPcdGet16,
- PeiPcdGet32,
- PeiPcdGet64,
- PeiPcdGetPtr,
- PeiPcdGetBool,
- PeiPcdGetSize,
-
- PeiPcdGet8Ex,
- PeiPcdGet16Ex,
- PeiPcdGet32Ex,
- PeiPcdGet64Ex,
- PeiPcdGetPtrEx,
- PeiPcdGetBoolEx,
- PeiPcdGetSizeEx,
-
- PeiPcdSet8,
- PeiPcdSet16,
- PeiPcdSet32,
- PeiPcdSet64,
- PeiPcdSetPtr,
- PeiPcdSetBool,
-
- PeiPcdSet8Ex,
- PeiPcdSet16Ex,
- PeiPcdSet32Ex,
- PeiPcdSet64Ex,
- PeiPcdSetPtrEx,
- PeiPcdSetBoolEx,
-
- PeiRegisterCallBackOnSet,
- PcdUnRegisterCallBackOnSet,
- PeiPcdGetNextToken,
- PeiPcdGetNextTokenSpace
-};
-
-
-
-STATIC EFI_PEI_PPI_DESCRIPTOR mPpiPCD = {
- (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
- &gPcdPpiGuid,
- &mPcdPpiInstance
-};
-
-
-
-EFI_STATUS
-EFIAPI
-PcdPeimInit (
- IN EFI_FFS_FILE_HEADER *FfsHeader,
- IN EFI_PEI_SERVICES **PeiServices
- )
-{
- EFI_STATUS Status;
-
- BuildPcdDatabase ();
-
- Status = PeiServicesInstallPpi (&mPpiPCD);
-
- ASSERT_EFI_ERROR (Status);
-
- return EFI_SUCCESS;
-}
-
-VOID
-EFIAPI
-PeiPcdSetSku (
- IN UINTN SkuId
- )
-{
-
- GetPcdDatabase()->Init.SystemSkuId = (SKU_ID) SkuId;
-
- return;
-}
-
-
-
-UINT8
-EFIAPI
-PeiPcdGet8 (
- IN UINTN TokenNumber
- )
-{
- return *((UINT8 *) GetWorker (TokenNumber, sizeof (UINT8)));
-}
-
-
-
-UINT16
-EFIAPI
-PeiPcdGet16 (
- IN UINTN TokenNumber
- )
-{
- return ReadUnaligned16 (GetWorker (TokenNumber, sizeof (UINT16)));
-}
-
-
-
-UINT32
-EFIAPI
-PeiPcdGet32 (
- IN UINTN TokenNumber
- )
-{
- return ReadUnaligned32 (GetWorker (TokenNumber, sizeof (UINT32)));
-}
-
-
-
-UINT64
-EFIAPI
-PeiPcdGet64 (
- IN UINTN TokenNumber
- )
-{
- return ReadUnaligned64 (GetWorker (TokenNumber, sizeof (UINT64)));
-}
-
-
-
-VOID *
-EFIAPI
-PeiPcdGetPtr (
- IN UINTN TokenNumber
- )
-{
- return GetWorker (TokenNumber, 0);
-}
-
-
-
-BOOLEAN
-EFIAPI
-PeiPcdGetBool (
- IN UINTN TokenNumber
- )
-{
- return *((BOOLEAN *) GetWorker (TokenNumber, sizeof (BOOLEAN)));
-}
-
-
-
-UINTN
-EFIAPI
-PeiPcdGetSize (
- IN UINTN TokenNumber
- )
-{
- PEI_PCD_DATABASE *PeiPcdDb;
- UINTN Size;
- UINTN MaxSize;
-
- //
- // If DebugAssertEnabled is TRUE, we still need to provide the GET size
- // function as GetWorker and SetWoker need this function to do ASSERT.
- //
- if ((!FeaturePcdGet(PcdPeiPcdDatabaseGetSizeEnabled)) &&
- (!DebugAssertEnabled ())) {
- return 0;
- }
-
- PeiPcdDb = GetPcdDatabase ();
- //
- // TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER.
- // We have to decrement TokenNumber by 1 to make it usable
- // as the array index.
- //
- TokenNumber--;
-
- // EBC compiler is very choosy. It may report warning about comparison
- // between UINTN and 0 . So we add 1 in each size of the
- // comparison.
- ASSERT (TokenNumber + 1 < PEI_LOCAL_TOKEN_NUMBER + 1);
-
- Size = (PeiPcdDb->Init.LocalTokenNumberTable[TokenNumber] & PCD_DATUM_TYPE_ALL_SET) >> PCD_DATUM_TYPE_SHIFT;
-
- if (Size == 0) {
- //
- // For pointer type, we need to scan the SIZE_TABLE to get the current size.
- //
- return GetPtrTypeSize (TokenNumber, &MaxSize, PeiPcdDb);
- } else {
- return Size;
- }
-
-}
-
-
-
-UINT8
-EFIAPI
-PeiPcdGet8Ex (
- IN CONST EFI_GUID *Guid,
- IN UINTN ExTokenNumber
- )
-{
- return *((UINT8 *) ExGetWorker (Guid, ExTokenNumber, sizeof (UINT8)));
-}
-
-
-
-UINT16
-EFIAPI
-PeiPcdGet16Ex (
- IN CONST EFI_GUID *Guid,
- IN UINTN ExTokenNumber
- )
-{
- return ReadUnaligned16 (ExGetWorker (Guid, ExTokenNumber, sizeof (UINT16)));
-}
-
-
-
-UINT32
-EFIAPI
-PeiPcdGet32Ex (
- IN CONST EFI_GUID *Guid,
- IN UINTN ExTokenNumber
- )
-{
- return ReadUnaligned32 (ExGetWorker (Guid, ExTokenNumber, sizeof (UINT32)));
-}
-
-
-
-UINT64
-EFIAPI
-PeiPcdGet64Ex (
- IN CONST EFI_GUID *Guid,
- IN UINTN ExTokenNumber
- )
-{
- return ReadUnaligned64 (ExGetWorker (Guid, ExTokenNumber, sizeof (UINT64)));
-}
-
-
-
-VOID *
-EFIAPI
-PeiPcdGetPtrEx (
- IN CONST EFI_GUID *Guid,
- IN UINTN ExTokenNumber
- )
-{
- return ExGetWorker (Guid, ExTokenNumber, 0);
-}
-
-
-
-BOOLEAN
-EFIAPI
-PeiPcdGetBoolEx (
- IN CONST EFI_GUID *Guid,
- IN UINTN ExTokenNumber
- )
-{
- return *((BOOLEAN *) ExGetWorker (Guid, ExTokenNumber, sizeof (BOOLEAN)));
-}
-
-
-
-UINTN
-EFIAPI
-PeiPcdGetSizeEx (
- IN CONST EFI_GUID *Guid,
- IN UINTN ExTokenNumber
- )
-{
- if ((!FeaturePcdGet (PcdPeiPcdDatabaseGetSizeEnabled)) || !FeaturePcdGet (PcdPeiPcdDatabaseExEnabled)) {
- return 0;
- }
-
- return PeiPcdGetSize (GetExPcdTokenNumber (Guid, ExTokenNumber));
-}
-
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSet8 (
- IN UINTN TokenNumber,
- IN UINT8 Value
- )
-{
- return SetValueWorker (TokenNumber, &Value, sizeof (Value));
-}
-
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSet16 (
- IN UINTN TokenNumber,
- IN UINT16 Value
- )
-{
- return SetValueWorker (TokenNumber, &Value, sizeof (Value));
-}
-
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSet32 (
- IN UINTN TokenNumber,
- IN UINT32 Value
- )
-{
- return SetValueWorker (TokenNumber, &Value, sizeof (Value));
-}
-
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSet64 (
- IN UINTN TokenNumber,
- IN UINT64 Value
- )
-{
- return SetValueWorker (TokenNumber, &Value, sizeof (Value));
-}
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSetPtr (
- IN UINTN TokenNumber,
- IN OUT UINTN *SizeOfBuffer,
- IN VOID *Buffer
- )
-{
- return SetWorker (TokenNumber, Buffer, SizeOfBuffer, TRUE);
-}
-
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSetBool (
- IN UINTN TokenNumber,
- IN BOOLEAN Value
- )
-{
- return SetValueWorker (TokenNumber, &Value, sizeof (Value));
-}
-
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSet8Ex (
- IN CONST EFI_GUID *Guid,
- IN UINTN ExTokenNumber,
- IN UINT8 Value
- )
-{
- return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));
-}
-
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSet16Ex (
- IN CONST EFI_GUID *Guid,
- IN UINTN ExTokenNumber,
- IN UINT16 Value
- )
-{
- return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));
-}
-
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSet32Ex (
- IN CONST EFI_GUID *Guid,
- IN UINTN ExTokenNumber,
- IN UINT32 Value
- )
-{
- return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));
-}
-
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSet64Ex (
- IN CONST EFI_GUID *Guid,
- IN UINTN ExTokenNumber,
- IN UINT64 Value
- )
-{
- return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));
-}
-
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSetPtrEx (
- IN CONST EFI_GUID *Guid,
- IN UINTN ExTokenNumber,
- IN UINTN *SizeOfBuffer,
- IN VOID *Value
- )
-{
- return ExSetWorker (ExTokenNumber, Guid, Value, SizeOfBuffer, TRUE);
-}
-
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSetBoolEx (
- IN CONST EFI_GUID *Guid,
- IN UINTN ExTokenNumber,
- IN BOOLEAN Value
- )
-{
- return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));
-}
-
-
-
-
-EFI_STATUS
-EFIAPI
-PeiRegisterCallBackOnSet (
- IN CONST EFI_GUID *Guid, OPTIONAL
- IN UINTN ExTokenNumber,
- IN PCD_PPI_CALLBACK CallBackFunction
- )
-{
- if (!FeaturePcdGet(PcdPeiPcdDatabaseCallbackOnSetEnabled)) {
- return EFI_UNSUPPORTED;
- }
-
- ASSERT (CallBackFunction != NULL);
-
- return PeiRegisterCallBackWorker (ExTokenNumber, Guid, CallBackFunction, TRUE);
-}
-
-
-
-EFI_STATUS
-EFIAPI
-PcdUnRegisterCallBackOnSet (
- IN CONST EFI_GUID *Guid, OPTIONAL
- IN UINTN ExTokenNumber,
- IN PCD_PPI_CALLBACK CallBackFunction
- )
-{
- if (!FeaturePcdGet(PcdPeiPcdDatabaseCallbackOnSetEnabled)) {
- return EFI_UNSUPPORTED;
- }
-
- ASSERT (CallBackFunction != NULL);
-
- return PeiRegisterCallBackWorker (ExTokenNumber, Guid, CallBackFunction, FALSE);
-}
-
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdGetNextToken (
- IN CONST EFI_GUID *Guid, OPTIONAL
- IN OUT UINTN *TokenNumber
- )
-{
- UINTN GuidTableIdx;
- PEI_PCD_DATABASE *PeiPcdDb;
- EFI_GUID *MatchGuid;
- DYNAMICEX_MAPPING *ExMapTable;
- UINTN i;
- BOOLEAN Found;
- BOOLEAN PeiExMapTableEmpty;
-
- if (!FeaturePcdGet (PcdPeiPcdDatabaseTraverseEnabled)) {
- return EFI_UNSUPPORTED;
- }
-
- PeiExMapTableEmpty = PEI_EXMAP_TABLE_EMPTY;
-
- if (Guid == NULL) {
- if (*TokenNumber > PEI_NEX_TOKEN_NUMBER) {
- return EFI_NOT_FOUND;
- }
- (*TokenNumber)++;
- if (*TokenNumber > PEI_NEX_TOKEN_NUMBER) {
- *TokenNumber = PCD_INVALID_TOKEN_NUMBER;
- }
- return EFI_SUCCESS;
- } else {
- if (PeiExMapTableEmpty) {
- *TokenNumber = PCD_INVALID_TOKEN_NUMBER;
- return EFI_SUCCESS;
- }
-
- //
- // Assume PCD Database AutoGen tool is sorting the ExMap based on the following order
- // 1) ExGuid
- // 2) ExTokenNumber
- //
- PeiPcdDb = GetPcdDatabase ();
-
- MatchGuid = ScanGuid (PeiPcdDb->Init.GuidTable, sizeof(PeiPcdDb->Init.GuidTable), Guid);
-
- if (MatchGuid == NULL) {
- *TokenNumber = PCD_INVALID_TOKEN_NUMBER;
- return EFI_NOT_FOUND;
- }
-
- GuidTableIdx = MatchGuid - PeiPcdDb->Init.GuidTable;
-
- ExMapTable = PeiPcdDb->Init.ExMapTable;
-
- Found = FALSE;
- //
- // Locate the GUID in ExMapTable first.
- //
- for (i = 0; i < PEI_EXMAPPING_TABLE_SIZE; i++) {
- if (ExMapTable[i].ExGuidIndex == GuidTableIdx) {
- Found = TRUE;
- break;
- }
- }
-
- if (Found) {
- if (*TokenNumber == PCD_INVALID_TOKEN_NUMBER) {
- *TokenNumber = ExMapTable[i].ExTokenNumber;
- return EFI_SUCCESS;
- }
-
- for ( ; i < PEI_EXMAPPING_TABLE_SIZE; i++) {
- if (ExMapTable[i].ExTokenNumber == *TokenNumber) {
- i++;
- if (i == PEI_EXMAPPING_TABLE_SIZE) {
- //
- // Exceed the length of ExMap Table
- //
- *TokenNumber = PCD_INVALID_TOKEN_NUMBER;
- return EFI_SUCCESS;
- }
- if (ExMapTable[i].ExGuidIndex == GuidTableIdx) {
- *TokenNumber = ExMapTable[i].ExTokenNumber;
- return EFI_SUCCESS;
- } else {
- *TokenNumber = PCD_INVALID_TOKEN_NUMBER;
- return EFI_SUCCESS;
- }
- }
- }
- return EFI_NOT_FOUND;
- }
- }
-
- return EFI_NOT_FOUND;
-}
-
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdGetNextTokenSpace (
- IN OUT CONST EFI_GUID **Guid
- )
-{
- UINTN GuidTableIdx;
- EFI_GUID *MatchGuid;
- PEI_PCD_DATABASE *PeiPcdDb;
- DYNAMICEX_MAPPING *ExMapTable;
- UINTN i;
- BOOLEAN Found;
- BOOLEAN PeiExMapTableEmpty;
-
- if (!FeaturePcdGet (PcdPeiPcdDatabaseTraverseEnabled)) {
- return EFI_UNSUPPORTED;
- }
-
- ASSERT (Guid != NULL);
-
- PeiExMapTableEmpty = PEI_EXMAP_TABLE_EMPTY;
-
- if (PeiExMapTableEmpty) {
- if (*Guid != NULL) {
- return EFI_NOT_FOUND;
- } else {
- return EFI_SUCCESS;
- }
- }
-
- //
- // Assume PCD Database AutoGen tool is sorting the ExMap based on the following order
- // 1) ExGuid
- // 2) ExTokenNumber
- //
- PeiPcdDb = GetPcdDatabase ();
-
- ExMapTable = PeiPcdDb->Init.ExMapTable;
-
- if (*Guid == NULL) {
- //
- // return the first Token Space Guid.
- //
- *Guid = &PeiPcdDb->Init.GuidTable[ExMapTable[0].ExGuidIndex];
- return EFI_SUCCESS;
- }
-
- MatchGuid = ScanGuid (PeiPcdDb->Init.GuidTable, sizeof(PeiPcdDb->Init.GuidTable), *Guid);
-
- if (MatchGuid == NULL) {
- return EFI_NOT_FOUND;
- }
-
- GuidTableIdx = MatchGuid - PeiPcdDb->Init.GuidTable;
-
- Found = FALSE;
- for (i = 0; i < PEI_EXMAPPING_TABLE_SIZE; i++) {
- if (ExMapTable[i].ExGuidIndex == GuidTableIdx) {
- Found = TRUE;
- break;
- }
- }
-
- if (Found) {
- i++;
- for ( ; i < PEI_EXMAPPING_TABLE_SIZE; i++ ) {
- if (ExMapTable[i].ExGuidIndex != GuidTableIdx ) {
- *Guid = &PeiPcdDb->Init.GuidTable[ExMapTable[i].ExGuidIndex];
- return EFI_SUCCESS;
- }
- }
- *Guid = NULL;
- return EFI_SUCCESS;
- }
-
- return EFI_NOT_FOUND;
-
-}
-
-UINTN
-GetPtrTypeSize (
- IN UINTN LocalTokenNumberTableIdx,
- OUT UINTN *MaxSize,
- IN PEI_PCD_DATABASE *Database
- )
-{
- INTN SizeTableIdx;
- UINTN LocalTokenNumber;
- SKU_ID *SkuIdTable;
- SIZE_INFO *SizeTable;
- UINTN i;
-
- SizeTableIdx = GetSizeTableIndex (LocalTokenNumberTableIdx, Database);
-
- LocalTokenNumber = Database->Init.LocalTokenNumberTable[LocalTokenNumberTableIdx];
-
- ASSERT ((LocalTokenNumber & PCD_DATUM_TYPE_ALL_SET) == PCD_DATUM_TYPE_POINTER);
-
- SizeTable = Database->Init.SizeTable;
-
- *MaxSize = SizeTable[SizeTableIdx];
- //
- // SizeTable only contain record for PCD_DATUM_TYPE_POINTER type
- // PCD entry.
- //
- if (LocalTokenNumber & PCD_TYPE_VPD) {
- //
- // We have only one entry for VPD enabled PCD entry:
- // 1) MAX Size.
- // We consider current size is equal to MAX size.
- //
- return *MaxSize;
- } else {
- if ((LocalTokenNumber & PCD_TYPE_SKU_ENABLED) == 0) {
- //
- // We have only two entry for Non-Sku enabled PCD entry:
- // 1) MAX SIZE
- // 2) Current Size
- //
- return SizeTable[SizeTableIdx + 1];
- } else {
- //
- // We have these entry for SKU enabled PCD entry
- // 1) MAX SIZE
- // 2) Current Size for each SKU_ID (It is equal to MaxSku).
- //
- SkuIdTable = GetSkuIdArray (LocalTokenNumberTableIdx, Database);
- for (i = 0; i < SkuIdTable[0]; i++) {
- if (SkuIdTable[1 + i] == Database->Init.SystemSkuId) {
- return SizeTable[SizeTableIdx + 1 + i];
- }
- }
- return SizeTable[SizeTableIdx + 1];
- }
- }
-}
-
-
-
-BOOLEAN
-SetPtrTypeSize (
- IN UINTN LocalTokenNumberTableIdx,
- IN OUT UINTN *CurrentSize,
- IN PEI_PCD_DATABASE *Database
- )
-{
- INTN SizeTableIdx;
- UINTN LocalTokenNumber;
- SKU_ID *SkuIdTable;
- SIZE_INFO *SizeTable;
- UINTN i;
- UINTN MaxSize;
-
- SizeTableIdx = GetSizeTableIndex (LocalTokenNumberTableIdx, Database);
-
- LocalTokenNumber = Database->Init.LocalTokenNumberTable[LocalTokenNumberTableIdx];
-
- ASSERT ((LocalTokenNumber & PCD_DATUM_TYPE_ALL_SET) == PCD_DATUM_TYPE_POINTER);
-
- SizeTable = Database->Init.SizeTable;
-
- MaxSize = SizeTable[SizeTableIdx];
- //
- // SizeTable only contain record for PCD_DATUM_TYPE_POINTER type
- // PCD entry.
- //
- if (LocalTokenNumber & PCD_TYPE_VPD) {
- //
- // We shouldn't come here as we don't support SET for VPD
- //
- ASSERT (FALSE);
- return FALSE;
- } else {
- if ((*CurrentSize > MaxSize) ||
- (*CurrentSize == MAX_ADDRESS)) {
- *CurrentSize = MaxSize;
- return FALSE;
- }
-
- if ((LocalTokenNumber & PCD_TYPE_SKU_ENABLED) == 0) {
- //
- // We have only two entry for Non-Sku enabled PCD entry:
- // 1) MAX SIZE
- // 2) Current Size
- //
- SizeTable[SizeTableIdx + 1] = (SIZE_INFO) *CurrentSize;
- return TRUE;
- } else {
- //
- // We have these entry for SKU enabled PCD entry
- // 1) MAX SIZE
- // 2) Current Size for each SKU_ID (It is equal to MaxSku).
- //
- SkuIdTable = GetSkuIdArray (LocalTokenNumberTableIdx, Database);
- for (i = 0; i < SkuIdTable[0]; i++) {
- if (SkuIdTable[1 + i] == Database->Init.SystemSkuId) {
- SizeTable[SizeTableIdx + 1 + i] = (SIZE_INFO) *CurrentSize;
- return TRUE;
- }
- }
- SizeTable[SizeTableIdx + 1] = (SIZE_INFO) *CurrentSize;
- return TRUE;
- }
- }
-
-}
diff --git a/EdkModulePkg/Universal/PCD/Pei/Pcd.dxs b/EdkModulePkg/Universal/PCD/Pei/Pcd.dxs deleted file mode 100644 index 3bad561b78..0000000000 --- a/EdkModulePkg/Universal/PCD/Pei/Pcd.dxs +++ /dev/null @@ -1,25 +0,0 @@ -/*++
-
-Copyright (c) 2006, Intel Corporation
-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.
-
-Module Name:
-
- Pcd.dxs
-
-Abstract:
-
- Dependency expression source file.
-
---*/
-#include <DxeDepex.h>
-
-DEPENDENCY_START
- TRUE
-DEPENDENCY_END
diff --git a/EdkModulePkg/Universal/PCD/Pei/Pcd.msa b/EdkModulePkg/Universal/PCD/Pei/Pcd.msa deleted file mode 100644 index 155a576443..0000000000 --- a/EdkModulePkg/Universal/PCD/Pei/Pcd.msa +++ /dev/null @@ -1,129 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<ModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <MsaHeader>
- <ModuleName>PcdPeim</ModuleName>
- <ModuleType>PEIM</ModuleType>
- <GuidValue>9B3ADA4F-AE56-4c24-8DEA-F03B7558AE50</GuidValue>
- <Version>1.0</Version>
- <Abstract>Component description file for Pcd Database PEIM module</Abstract>
- <Description>This PEIM driver implement and produce PCD PPI.</Description>
- <Copyright>Copyright (c) 2006 - 2007, Intel Corporation</Copyright>
- <License>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.</License>
- <Specification>FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052</Specification>
- </MsaHeader>
- <ModuleDefinitions>
- <SupportedArchitectures>IA32 X64 IPF EBC</SupportedArchitectures>
- <BinaryModule>false</BinaryModule>
- <OutputFileBasename>PcdPeim</OutputFileBasename>
- </ModuleDefinitions>
- <LibraryClassDefinitions>
- <LibraryClass Usage="ALWAYS_CONSUMED" RecommendedInstanceGuid="bda39d3a-451b-4350-8266-81ab10fa0523">
- <Keyword>DebugLib</Keyword>
- <HelpText>Recommended libary Instance is PeiDxeDebugLibReportStatusCode instance in MdePkg.</HelpText>
- </LibraryClass>
- <LibraryClass Usage="ALWAYS_CONSUMED">
- <Keyword>PeimEntryPoint</Keyword>
- </LibraryClass>
- <LibraryClass Usage="ALWAYS_CONSUMED">
- <Keyword>BaseLib</Keyword>
- </LibraryClass>
- <LibraryClass Usage="ALWAYS_CONSUMED">
- <Keyword>HobLib</Keyword>
- </LibraryClass>
- <LibraryClass Usage="ALWAYS_CONSUMED">
- <Keyword>PeiServicesLib</Keyword>
- </LibraryClass>
- <LibraryClass Usage="ALWAYS_CONSUMED">
- <Keyword>PcdLib</Keyword>
- </LibraryClass>
- <LibraryClass Usage="ALWAYS_CONSUMED">
- <Keyword>PeiServicesTablePointerLib</Keyword>
- </LibraryClass>
- <LibraryClass Usage="ALWAYS_CONSUMED">
- <Keyword>BaseMemoryLib</Keyword>
- </LibraryClass>
- </LibraryClassDefinitions>
- <SourceFiles>
- <Filename>Pcd.dxs</Filename>
- <Filename>Pcd.c</Filename>
- <Filename>Service.h</Filename>
- <Filename>Service.c</Filename>
- </SourceFiles>
- <PackageDependencies>
- <Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
- <Package PackageGuid="68169ab0-d41b-4009-9060-292c253ac43d"/>
- </PackageDependencies>
- <Hobs>
- <HobTypes Usage="ALWAYS_PRODUCED" HobGuidCName="gPcdDataBaseHobGuid">
- <HobType>GUID_EXTENSION</HobType>
- </HobTypes>
- <HobTypes Usage="ALWAYS_PRODUCED" HobGuidCName="gPcdPeiCallbackFnTableHobGuid">
- <HobType>GUID_EXTENSION</HobType>
- </HobTypes>
- </Hobs>
- <PPIs>
- <Ppi Usage="ALWAYS_PRODUCED">
- <PpiCName>gPcdPpiGuid</PpiCName>
- </Ppi>
- <Ppi Usage="ALWAYS_CONSUMED">
- <PpiCName>gEfiPeiReadOnlyVariablePpiGuid</PpiCName>
- </Ppi>
- </PPIs>
- <Externs>
- <PcdIsDriver>PEI_PCD_DRIVER</PcdIsDriver>
- <Specification>EFI_SPECIFICATION_VERSION 0x00020000</Specification>
- <Specification>EDK_RELEASE_VERSION 0x00020000</Specification>
- <Extern>
- <ModuleEntryPoint>PcdPeimInit</ModuleEntryPoint>
- </Extern>
- </Externs>
- <PcdCoded>
- <PcdEntry PcdItemType="FIXED_AT_BUILD" Usage="ALWAYS_CONSUMED">
- <C_Name>PcdMaxPeiPcdCallBackNumberPerPcdEntry</C_Name>
- <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
- <HelpText>The maximum number of callback function, which will be triggered when
- a PCD entry is been set, can be registered for a single PCD entry in PEI phase.</HelpText>
- </PcdEntry>
- <PcdEntry PcdItemType="FIXED_AT_BUILD" Usage="ALWAYS_CONSUMED">
- <C_Name>PcdVpdBaseAddress</C_Name>
- <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
- <HelpText>The base address of the VPD (Vital Product Data) region. It is
- normally a region reserved on flash.</HelpText>
- </PcdEntry>
- <PcdEntry PcdItemType="FEATURE_FLAG" Usage="ALWAYS_CONSUMED">
- <C_Name>PcdPeiPcdDatabaseTraverseEnabled</C_Name>
- <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
- <HelpText>This feature flag can be used to enable or disable the Pcd PEIM database
- traverse capability. Disable it can reduce the size of final image generated.</HelpText>
- </PcdEntry>
- <PcdEntry PcdItemType="FEATURE_FLAG" Usage="ALWAYS_CONSUMED">
- <C_Name>PcdPeiPcdDatabaseCallbackOnSetEnabled</C_Name>
- <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
- <DefaultValue>FALSE</DefaultValue>
- <HelpText>This feature flag can be used to enable or disable the Callback On SET capability of PCD service PEIM. If a platform does not register any callback on set in PEI phase. This flag can be set to DISABLE to save size.</HelpText>
- </PcdEntry>
- <PcdEntry PcdItemType="FEATURE_FLAG" Usage="ALWAYS_CONSUMED">
- <C_Name>PcdPeiPcdDatabaseExEnabled</C_Name>
- <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
- <DefaultValue>FALSE</DefaultValue>
- <HelpText>This feature flag can be used to enable or disable the PCD service PEIM to handle DynamicEX PCD. If a platform has no module to use DynamicEX in PEI phase. This flag can be set to DISABLE to save size.</HelpText>
- </PcdEntry>
- <PcdEntry PcdItemType="FEATURE_FLAG" Usage="ALWAYS_CONSUMED">
- <C_Name>PcdPeiPcdDatabaseGetSizeEnabled</C_Name>
- <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
- <DefaultValue>FALSE</DefaultValue>
- <HelpText>This feature flag can be used to enable or disable the GET size capability of PCD service PEIM. If a platform does not do PCD get size operation in PEI phase. This flag can be set to DISABLE to save size.</HelpText>
- </PcdEntry>
- <PcdEntry PcdItemType="FEATURE_FLAG" Usage="ALWAYS_CONSUMED">
- <C_Name>PcdPeiPcdDatabaseSetEnabled</C_Name>
- <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
- <DefaultValue>FALSE</DefaultValue>
- <HelpText>This feature flag can be used to enable or disable the SET capability of PCD service PEIM. If a platform does not do PCD SET operation in PEI phase. This flag can be set to DISABLE to save size.</HelpText>
- </PcdEntry>
- </PcdCoded>
-</ModuleSurfaceArea>
\ No newline at end of file diff --git a/EdkModulePkg/Universal/PCD/Pei/Service.c b/EdkModulePkg/Universal/PCD/Pei/Service.c deleted file mode 100644 index e705c283cb..0000000000 --- a/EdkModulePkg/Universal/PCD/Pei/Service.c +++ /dev/null @@ -1,728 +0,0 @@ -/** @file
-Private functions used by PCD PEIM.
-
-Copyright (c) 2006, Intel Corporation
-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.
-
-
-Module Name: Service.c
-
-**/
-#include "Service.h"
-
-/**
- The function registers the CallBackOnSet fucntion
- according to TokenNumber and EFI_GUID space.
-
- @param TokenNumber The token number.
- @param Guid The GUID space.
- @param CallBackFunction The Callback function to be registered.
- @param Register To register or unregister the callback function.
-
- @retval EFI_SUCCESS If the Callback function is registered.
- @retval EFI_NOT_FOUND If the PCD Entry is not found according to Token Number and GUID space.
- @retval EFI_OUT_OF_RESOURCES If the callback function can't be registered because there is not free
- slot left in the CallbackFnTable.
---*/
-EFI_STATUS
-PeiRegisterCallBackWorker (
- IN UINTN ExTokenNumber,
- IN CONST EFI_GUID *Guid, OPTIONAL
- IN PCD_PPI_CALLBACK CallBackFunction,
- IN BOOLEAN Register
-)
-{
- EFI_HOB_GUID_TYPE *GuidHob;
- PCD_PPI_CALLBACK *CallbackTable;
- PCD_PPI_CALLBACK Compare;
- PCD_PPI_CALLBACK Assign;
- UINT32 LocalTokenNumber;
- UINTN TokenNumber;
- UINTN Idx;
-
- if (Guid == NULL) {
- TokenNumber = ExTokenNumber;
-
- //
- // TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER.
- // We have to decrement TokenNumber by 1 to make it usable
- // as the array index.
- //
- TokenNumber--;
- ASSERT (TokenNumber + 1 < PEI_NEX_TOKEN_NUMBER + 1);
- } else {
- TokenNumber = GetExPcdTokenNumber (Guid, ExTokenNumber);
-
- //
- // TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER.
- // We have to decrement TokenNumber by 1 to make it usable
- // as the array index.
- //
- TokenNumber--;
- // EBC compiler is very choosy. It may report warning about comparison
- // between UINTN and 0 . So we add 1 in each size of the
- // comparison.
- ASSERT (TokenNumber + 1 < PEI_LOCAL_TOKEN_NUMBER + 1);
- }
-
-
- LocalTokenNumber = GetPcdDatabase()->Init.LocalTokenNumberTable[TokenNumber];
-
- //
- // We don't support SET for HII and VPD type PCD entry in PEI phase.
- // So we will assert if any register callback for such PCD entry.
- //
- ASSERT ((LocalTokenNumber & PCD_TYPE_HII) == 0);
- ASSERT ((LocalTokenNumber & PCD_TYPE_VPD) == 0);
-
- GuidHob = GetFirstGuidHob (&gPcdPeiCallbackFnTableHobGuid);
- ASSERT (GuidHob != NULL);
-
- CallbackTable = GET_GUID_HOB_DATA (GuidHob);
- CallbackTable = CallbackTable + (TokenNumber * FixedPcdGet32(PcdMaxPeiPcdCallBackNumberPerPcdEntry));
-
- Compare = Register? NULL: CallBackFunction;
- Assign = Register? CallBackFunction: NULL;
-
-
- for (Idx = 0; Idx < FixedPcdGet32(PcdMaxPeiPcdCallBackNumberPerPcdEntry); Idx++) {
- if (CallbackTable[Idx] == Compare) {
- CallbackTable[Idx] = Assign;
- return EFI_SUCCESS;
- }
- }
-
- return Register? EFI_OUT_OF_RESOURCES : EFI_NOT_FOUND;
-
-}
-
-
-
-
-/**
- The function builds the PCD database.
-
- @param VOID
-
- @retval VOID
---*/
-VOID
-BuildPcdDatabase (
- VOID
- )
-{
- PEI_PCD_DATABASE *Database;
- VOID *CallbackFnTable;
- UINTN SizeOfCallbackFnTable;
-
- Database = BuildGuidHob (&gPcdDataBaseHobGuid, sizeof (PEI_PCD_DATABASE));
-
- ZeroMem (Database, sizeof (PEI_PCD_DATABASE));
-
- //
- // gPEIPcdDbInit is smaller than PEI_PCD_DATABASE
- //
-
- CopyMem (&Database->Init, &gPEIPcdDbInit, sizeof (gPEIPcdDbInit));
-
- SizeOfCallbackFnTable = PEI_LOCAL_TOKEN_NUMBER * sizeof (PCD_PPI_CALLBACK) * FixedPcdGet32(PcdMaxPeiPcdCallBackNumberPerPcdEntry);
-
- CallbackFnTable = BuildGuidHob (&gPcdPeiCallbackFnTableHobGuid, SizeOfCallbackFnTable);
-
- ZeroMem (CallbackFnTable, SizeOfCallbackFnTable);
-
- return;
-}
-
-
-
-/**
- The function is provided by PCD PEIM and PCD DXE driver to
- do the work of reading a HII variable from variable service.
-
- @param VariableGuid The Variable GUID.
- @param VariableName The Variable Name.
- @param VariableData The output data.
- @param VariableSize The size of the variable.
-
- @retval EFI_SUCCESS Operation successful.
- @retval EFI_NOT_FOUND Variablel not found.
---*/
-STATIC
-EFI_STATUS
-GetHiiVariable (
- IN CONST EFI_GUID *VariableGuid,
- IN UINT16 *VariableName,
- OUT VOID **VariableData,
- OUT UINTN *VariableSize
- )
-{
- UINTN Size;
- EFI_STATUS Status;
- VOID *Buffer;
- EFI_PEI_READ_ONLY_VARIABLE_PPI *VariablePpi;
-
- Status = PeiServicesLocatePpi (&gEfiPeiReadOnlyVariablePpiGuid, 0, NULL, (VOID **) &VariablePpi);
- ASSERT_EFI_ERROR (Status);
-
- Size = 0;
- Status = VariablePpi->PeiGetVariable (
- GetPeiServicesTablePointer (),
- VariableName,
- (EFI_GUID *) VariableGuid,
- NULL,
- &Size,
- NULL
- );
- if (Status == EFI_BUFFER_TOO_SMALL) {
-
-
- Status = PeiServicesAllocatePool (Size, &Buffer);
- ASSERT_EFI_ERROR (Status);
-
- Status = VariablePpi->PeiGetVariable (
- GetPeiServicesTablePointer (),
- (UINT16 *) VariableName,
- (EFI_GUID *) VariableGuid,
- NULL,
- &Size,
- Buffer
- );
- ASSERT_EFI_ERROR (Status);
-
- *VariableSize = Size;
- *VariableData = Buffer;
-
- return EFI_SUCCESS;
- } else {
- return EFI_NOT_FOUND;
- }
-
-}
-
-STATIC
-UINT32
-GetSkuEnabledTokenNumber (
- UINT32 LocalTokenNumber,
- UINTN Size
- )
-{
- PEI_PCD_DATABASE *PeiPcdDb;
- SKU_HEAD *SkuHead;
- SKU_ID *SkuIdTable;
- INTN i;
- UINT8 *Value;
-
- PeiPcdDb = GetPcdDatabase ();
-
- ASSERT ((LocalTokenNumber & PCD_TYPE_SKU_ENABLED) == 0);
-
- SkuHead = (SKU_HEAD *) ((UINT8 *)PeiPcdDb + (LocalTokenNumber & PCD_DATABASE_OFFSET_MASK));
- Value = (UINT8 *) ((UINT8 *)PeiPcdDb + (SkuHead->SkuDataStartOffset));
- SkuIdTable = (SKU_ID *) ((UINT8 *)PeiPcdDb + (SkuHead->SkuIdTableOffset));
-
- for (i = 0; i < SkuIdTable[0]; i++) {
- if (PeiPcdDb->Init.SystemSkuId == SkuIdTable[i + 1]) {
- break;
- }
- }
-
- switch (LocalTokenNumber & PCD_TYPE_ALL_SET) {
- case PCD_TYPE_VPD:
- Value = (UINT8 *) &(((VPD_HEAD *) Value)[i]);
- return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_VPD);
-
- case PCD_TYPE_HII:
- Value = (UINT8 *) &(((VARIABLE_HEAD *) Value)[i]);
- return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_HII);
-
- case PCD_TYPE_STRING:
- Value = (UINT8 *) &(((STRING_HEAD *) Value)[i]);
- return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_STRING);
-
- case PCD_TYPE_DATA:
- Value += Size * i;
- return (UINT32) (Value - (UINT8 *) PeiPcdDb);
-
- default:
- ASSERT (FALSE);
- }
-
- ASSERT (FALSE);
-
- return 0;
-
-}
-
-
-
-STATIC
-VOID
-InvokeCallbackOnSet (
- UINTN ExTokenNumber,
- CONST EFI_GUID *Guid, OPTIONAL
- UINTN TokenNumber,
- VOID *Data,
- UINTN Size
- )
-{
- EFI_HOB_GUID_TYPE *GuidHob;
- PCD_PPI_CALLBACK *CallbackTable;
- UINTN Idx;
-
- //
- // TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER.
- // We have to decrement TokenNumber by 1 to make it usable
- // as the array index.
- //
- TokenNumber--;
-
- if (Guid == NULL) {
- // EBC compiler is very choosy. It may report warning about comparison
- // between UINTN and 0 . So we add 1 in each size of the
- // comparison.
- ASSERT (TokenNumber + 1 < PEI_LOCAL_TOKEN_NUMBER + 1);
- }
-
- GuidHob = GetFirstGuidHob (&gPcdPeiCallbackFnTableHobGuid);
- ASSERT (GuidHob != NULL);
-
- CallbackTable = GET_GUID_HOB_DATA (GuidHob);
-
- CallbackTable += (TokenNumber * FixedPcdGet32(PcdMaxPeiPcdCallBackNumberPerPcdEntry));
-
- for (Idx = 0; Idx < FixedPcdGet32(PcdMaxPeiPcdCallBackNumberPerPcdEntry); Idx++) {
- if (CallbackTable[Idx] != NULL) {
- CallbackTable[Idx] (Guid,
- (Guid == NULL)? TokenNumber: ExTokenNumber,
- Data,
- Size
- );
- }
- }
-
-}
-
-
-
-EFI_STATUS
-SetValueWorker (
- IN UINTN TokenNumber,
- IN VOID *Data,
- IN UINTN Size
- )
-{
- return SetWorker (TokenNumber, Data, &Size, FALSE);
-}
-
-
-
-EFI_STATUS
-SetWorker (
- IN UINTN TokenNumber,
- IN OUT VOID *Data,
- IN OUT UINTN *Size,
- IN BOOLEAN PtrType
- )
-{
- UINT32 LocalTokenNumber;
- PEI_PCD_DATABASE *PeiPcdDb;
- UINT16 StringTableIdx;
- UINTN Offset;
- VOID *InternalData;
- UINTN MaxSize;
-
- if (!FeaturePcdGet(PcdPeiPcdDatabaseSetEnabled)) {
- return EFI_UNSUPPORTED;
- }
-
- //
- // TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER.
- // We have to decrement TokenNumber by 1 to make it usable
- // as the array index.
- //
- TokenNumber--;
-
- // EBC compiler is very choosy. It may report warning about comparison
- // between UINTN and 0 . So we add 1 in each size of the
- // comparison.
- ASSERT (TokenNumber + 1 < PEI_LOCAL_TOKEN_NUMBER + 1);
-
- PeiPcdDb = GetPcdDatabase ();
-
- LocalTokenNumber = PeiPcdDb->Init.LocalTokenNumberTable[TokenNumber];
-
- if (!PtrType) {
- ASSERT (PeiPcdGetSize(TokenNumber + 1) == *Size);
- }
-
- //
- // We only invoke the callback function for Dynamic Type PCD Entry.
- // For Dynamic EX PCD entry, we have invoked the callback function for Dynamic EX
- // type PCD entry in ExSetWorker.
- //
- if (TokenNumber + 1 < PEI_NEX_TOKEN_NUMBER + 1) {
- InvokeCallbackOnSet (0, NULL, TokenNumber + 1, Data, *Size);
- }
-
- if ((LocalTokenNumber & PCD_TYPE_SKU_ENABLED) == PCD_TYPE_SKU_ENABLED) {
- if (PtrType) {
- MaxSize = GetPtrTypeSize (TokenNumber, &MaxSize, PeiPcdDb);
- } else {
- MaxSize = *Size;
- }
- LocalTokenNumber = GetSkuEnabledTokenNumber (LocalTokenNumber & ~PCD_TYPE_SKU_ENABLED, MaxSize);
- }
-
- Offset = LocalTokenNumber & PCD_DATABASE_OFFSET_MASK;
- InternalData = (VOID *) ((UINT8 *) PeiPcdDb + Offset);
-
- switch (LocalTokenNumber & PCD_TYPE_ALL_SET) {
- case PCD_TYPE_VPD:
- case PCD_TYPE_HII:
- {
- ASSERT (FALSE);
- return EFI_INVALID_PARAMETER;
- }
-
- case PCD_TYPE_STRING:
- if (SetPtrTypeSize (TokenNumber, Size, PeiPcdDb)) {
- StringTableIdx = *((UINT16 *)InternalData);
- CopyMem (&PeiPcdDb->Init.StringTable[StringTableIdx], Data, *Size);
- return EFI_SUCCESS;
- } else {
- return EFI_INVALID_PARAMETER;
- }
-
- case PCD_TYPE_DATA:
- {
- if (PtrType) {
- if (SetPtrTypeSize (TokenNumber, Size, PeiPcdDb)) {
- CopyMem (InternalData, Data, *Size);
- return EFI_SUCCESS;
- } else {
- return EFI_INVALID_PARAMETER;
- }
- }
-
- switch (*Size) {
- case sizeof(UINT8):
- *((UINT8 *) InternalData) = *((UINT8 *) Data);
- return EFI_SUCCESS;
-
- case sizeof(UINT16):
- *((UINT16 *) InternalData) = *((UINT16 *) Data);
- return EFI_SUCCESS;
-
- case sizeof(UINT32):
- *((UINT32 *) InternalData) = *((UINT32 *) Data);
- return EFI_SUCCESS;
-
- case sizeof(UINT64):
- *((UINT64 *) InternalData) = *((UINT64 *) Data);
- return EFI_SUCCESS;
-
- default:
- ASSERT (FALSE);
- return EFI_NOT_FOUND;
- }
- }
-
- }
-
- ASSERT (FALSE);
- return EFI_NOT_FOUND;
-
-}
-
-
-
-EFI_STATUS
-ExSetValueWorker (
- IN UINTN ExTokenNumber,
- IN CONST EFI_GUID *Guid,
- IN VOID *Data,
- IN UINTN Size
- )
-{
- return ExSetWorker (ExTokenNumber, Guid, Data, &Size, FALSE);
-}
-
-
-
-EFI_STATUS
-ExSetWorker (
- IN UINTN ExTokenNumber,
- IN CONST EFI_GUID *Guid,
- IN VOID *Data,
- IN OUT UINTN *Size,
- IN BOOLEAN PtrType
- )
-{
- UINTN TokenNumber;
-
- if (!FeaturePcdGet(PcdPeiPcdDatabaseSetEnabled)) {
- return EFI_UNSUPPORTED;
- }
-
- TokenNumber = GetExPcdTokenNumber (Guid, ExTokenNumber);
-
- InvokeCallbackOnSet (ExTokenNumber, Guid, TokenNumber, Data, *Size);
-
- return SetWorker (TokenNumber, Data, Size, PtrType);
-
-}
-
-
-
-
-VOID *
-ExGetWorker (
- IN CONST EFI_GUID *Guid,
- IN UINTN ExTokenNumber,
- IN UINTN GetSize
- )
-{
- if (!FeaturePcdGet (PcdPeiPcdDatabaseExEnabled)) {
- ASSERT (FALSE);
- return 0;
- }
-
- return GetWorker (GetExPcdTokenNumber (Guid, ExTokenNumber), GetSize);
-}
-
-
-
-
-VOID *
-GetWorker (
- UINTN TokenNumber,
- UINTN GetSize
- )
-{
- UINT32 Offset;
- EFI_GUID *Guid;
- UINT16 *Name;
- VARIABLE_HEAD *VariableHead;
- EFI_STATUS Status;
- UINTN DataSize;
- VOID *Data;
- UINT16 *StringTable;
- UINT16 StringTableIdx;
- PEI_PCD_DATABASE *PeiPcdDb;
- UINT32 LocalTokenNumber;
- UINTN MaxSize;
-
- //
- // TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER.
- // We have to decrement TokenNumber by 1 to make it usable
- // as the array index.
- //
- TokenNumber--;
-
- // EBC compiler is very choosy. It may report warning about comparison
- // between UINTN and 0 . So we add 1 in each size of the
- // comparison.
- ASSERT (TokenNumber + 1 < PEI_LOCAL_TOKEN_NUMBER + 1);
-
- ASSERT ((GetSize == PeiPcdGetSize(TokenNumber + 1)) || (GetSize == 0));
-
- PeiPcdDb = GetPcdDatabase ();
-
- LocalTokenNumber = PeiPcdDb->Init.LocalTokenNumberTable[TokenNumber];
-
- if ((LocalTokenNumber & PCD_TYPE_SKU_ENABLED) == PCD_TYPE_SKU_ENABLED) {
- if (GetSize == 0) {
- MaxSize = GetPtrTypeSize (TokenNumber, &MaxSize, PeiPcdDb);
- } else {
- MaxSize = GetSize;
- }
- LocalTokenNumber = GetSkuEnabledTokenNumber (LocalTokenNumber & ~PCD_TYPE_SKU_ENABLED, MaxSize);
- }
-
- Offset = LocalTokenNumber & PCD_DATABASE_OFFSET_MASK;
- StringTable = PeiPcdDb->Init.StringTable;
-
- switch (LocalTokenNumber & PCD_TYPE_ALL_SET) {
- case PCD_TYPE_VPD:
- {
- VPD_HEAD *VpdHead;
- VpdHead = (VPD_HEAD *) ((UINT8 *)PeiPcdDb + Offset);
- return (VOID *) (UINTN) (FixedPcdGet32(PcdVpdBaseAddress) + VpdHead->Offset);
- }
-
- case PCD_TYPE_HII:
- {
- VariableHead = (VARIABLE_HEAD *) ((UINT8 *)PeiPcdDb + Offset);
-
- Guid = &(PeiPcdDb->Init.GuidTable[VariableHead->GuidTableIndex]);
- Name = &StringTable[VariableHead->StringIndex];
-
- Status = GetHiiVariable (Guid, Name, &Data, &DataSize);
-
- if (Status == EFI_SUCCESS) {
- return (VOID *) ((UINT8 *) Data + VariableHead->Offset);
- } else {
- //
- // Return the default value specified by Platform Integrator
- //
- return (VOID *) ((UINT8 *) PeiPcdDb + VariableHead->DefaultValueOffset);
- }
- }
-
- case PCD_TYPE_DATA:
- return (VOID *) ((UINT8 *)PeiPcdDb + Offset);
-
- case PCD_TYPE_STRING:
- StringTableIdx = (UINT16) *((UINT8 *) PeiPcdDb + Offset);
- return (VOID *) (&StringTable[StringTableIdx]);
-
- default:
- ASSERT (FALSE);
- break;
-
- }
-
- ASSERT (FALSE);
-
- return NULL;
-
-}
-
-
-
-UINTN
-GetExPcdTokenNumber (
- IN CONST EFI_GUID *Guid,
- IN UINTN ExTokenNumber
- )
-{
- UINT32 i;
- DYNAMICEX_MAPPING *ExMap;
- EFI_GUID *GuidTable;
- EFI_GUID *MatchGuid;
- UINTN MatchGuidIdx;
- PEI_PCD_DATABASE *PeiPcdDb;
-
- PeiPcdDb = GetPcdDatabase();
-
- ExMap = PeiPcdDb->Init.ExMapTable;
- GuidTable = PeiPcdDb->Init.GuidTable;
-
- MatchGuid = ScanGuid (GuidTable, sizeof(PeiPcdDb->Init.GuidTable), Guid);
- //
- // We need to ASSERT here. If GUID can't be found in GuidTable, this is a
- // error in the BUILD system.
- //
- ASSERT (MatchGuid != NULL);
-
- MatchGuidIdx = MatchGuid - GuidTable;
-
- for (i = 0; i < PEI_EXMAPPING_TABLE_SIZE; i++) {
- if ((ExTokenNumber == ExMap[i].ExTokenNumber) &&
- (MatchGuidIdx == ExMap[i].ExGuidIndex)) {
- return ExMap[i].LocalTokenNumber;
- }
- }
-
- ASSERT (FALSE);
-
- return 0;
-}
-
-
-
-PEI_PCD_DATABASE *
-GetPcdDatabase (
- VOID
- )
-{
- EFI_HOB_GUID_TYPE *GuidHob;
-
- GuidHob = GetFirstGuidHob (&gPcdDataBaseHobGuid);
- ASSERT (GuidHob != NULL);
-
- return (PEI_PCD_DATABASE *) GET_GUID_HOB_DATA (GuidHob);
-}
-
-
-
-SKU_ID *
-GetSkuIdArray (
- IN UINTN LocalTokenNumberTableIdx,
- IN PEI_PCD_DATABASE *Database
- )
-{
- SKU_HEAD *SkuHead;
- UINTN LocalTokenNumber;
-
- LocalTokenNumber = Database->Init.LocalTokenNumberTable[LocalTokenNumberTableIdx];
-
- ASSERT ((LocalTokenNumber & PCD_TYPE_SKU_ENABLED) != 0);
-
- SkuHead = (SKU_HEAD *) ((UINT8 *)Database + (LocalTokenNumber & PCD_DATABASE_OFFSET_MASK));
-
- return (SKU_ID *) ((UINT8 *)Database + SkuHead->SkuIdTableOffset);
-
-}
-
-
-
-UINTN
-GetSizeTableIndex (
- IN UINTN LocalTokenNumberTableIdx,
- IN PEI_PCD_DATABASE *Database
- )
-{
- UINTN i;
- UINTN SizeTableIdx;
- UINTN LocalTokenNumber;
- SKU_ID *SkuIdTable;
-
- SizeTableIdx = 0;
-
- for (i=0; i<LocalTokenNumberTableIdx; i++) {
- LocalTokenNumber = Database->Init.LocalTokenNumberTable[i];
-
- if ((LocalTokenNumber & PCD_DATUM_TYPE_ALL_SET) == PCD_DATUM_TYPE_POINTER) {
- //
- // SizeTable only contain record for PCD_DATUM_TYPE_POINTER type
- // PCD entry.
- //
- if (LocalTokenNumber & PCD_TYPE_VPD) {
- //
- // We have only one entry for VPD enabled PCD entry:
- // 1) MAX Size.
- // We consider current size is equal to MAX size.
- //
- SizeTableIdx++;
- } else {
- if ((LocalTokenNumber & PCD_TYPE_SKU_ENABLED) == 0) {
- //
- // We have only two entry for Non-Sku enabled PCD entry:
- // 1) MAX SIZE
- // 2) Current Size
- //
- SizeTableIdx += 2;
- } else {
- //
- // We have these entry for SKU enabled PCD entry
- // 1) MAX SIZE
- // 2) Current Size for each SKU_ID (It is equal to MaxSku).
- //
- SkuIdTable = GetSkuIdArray (i, Database);
- SizeTableIdx += (UINTN)*SkuIdTable + 1;
- }
- }
- }
-
- }
-
- return SizeTableIdx;
-}
diff --git a/EdkModulePkg/Universal/PCD/Pei/Service.h b/EdkModulePkg/Universal/PCD/Pei/Service.h deleted file mode 100644 index 093c37149c..0000000000 --- a/EdkModulePkg/Universal/PCD/Pei/Service.h +++ /dev/null @@ -1,457 +0,0 @@ -/** @file
-Private functions used by PCD PEIM.
-
-Copyright (c) 2006, Intel Corporation
-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.
-
-
-Module Name: Service.h
-
-**/
-
-#ifndef _SERVICE_H
-#define _SERVICE_H
-
-//
-// Please make sure the PCD Serivce PEIM Version is consistent with
-// the version of PCD Database generation tool
-//
-#define PCD_SERVICE_PEIM_VERSION 2
-
-//
-// PCD_PEI_DATABASE_GENTOOL_VERSION is defined in Autogen.h
-// and generated by PCD Database generation tool.
-//
-#if (PCD_SERVICE_PEIM_VERSION != PCD_PEI_SERVICE_DRIVER_AUTOGEN_VERSION )
- #error "Please make sure the version of PCD Service PEIM and PCD PEI Database Generation Tool matches"
-#endif
-
-//
-// PPI Interface Implementation Declaration.
-//
-VOID
-EFIAPI
-PeiPcdSetSku (
- IN UINTN SkuId
- )
-;
-
-
-UINT8
-EFIAPI
-PeiPcdGet8 (
- IN UINTN TokenNumber
- )
-;
-
-
-UINT16
-EFIAPI
-PeiPcdGet16 (
- IN UINTN TokenNumber
- )
-;
-
-
-UINT32
-EFIAPI
-PeiPcdGet32 (
- IN UINTN TokenNumber
- )
-;
-
-
-UINT64
-EFIAPI
-PeiPcdGet64 (
- IN UINTN TokenNumber
- )
-;
-
-
-VOID *
-EFIAPI
-PeiPcdGetPtr (
- IN UINTN TokenNumber
- )
-;
-
-
-BOOLEAN
-EFIAPI
-PeiPcdGetBool (
- IN UINTN TokenNumber
- )
-;
-
-
-UINTN
-EFIAPI
-PeiPcdGetSize (
- IN UINTN TokenNumber
- )
-;
-
-
-UINT8
-EFIAPI
-PeiPcdGet8Ex (
- IN CONST EFI_GUID *Guid,
- IN UINTN TokenNumber
- )
-;
-
-
-UINT16
-EFIAPI
-PeiPcdGet16Ex (
- IN CONST EFI_GUID *Guid,
- IN UINTN TokenNumber
- )
-;
-
-UINT32
-EFIAPI
-PeiPcdGet32Ex (
- IN CONST EFI_GUID *Guid,
- IN UINTN TokenNumber
- )
-;
-
-
-UINT64
-EFIAPI
-PeiPcdGet64Ex (
- IN CONST EFI_GUID *Guid,
- IN UINTN TokenNumber
- )
-;
-
-
-VOID *
-EFIAPI
-PeiPcdGetPtrEx (
- IN CONST EFI_GUID *Guid,
- IN UINTN TokenNumber
- )
-;
-
-
-BOOLEAN
-EFIAPI
-PeiPcdGetBoolEx (
- IN CONST EFI_GUID *Guid,
- IN UINTN TokenNumber
- )
-;
-
-
-UINTN
-EFIAPI
-PeiPcdGetSizeEx (
- IN CONST EFI_GUID *Guid,
- IN UINTN TokenNumber
- )
-;
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSet8 (
- IN UINTN TokenNumber,
- IN UINT8 Value
- )
-;
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSet16 (
- IN UINTN TokenNumber,
- IN UINT16 Value
- )
-;
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSet32 (
- IN UINTN TokenNumber,
- IN UINT32 Value
- )
-;
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSet64 (
- IN UINTN TokenNumber,
- IN UINT64 Value
- )
-;
-
-EFI_STATUS
-EFIAPI
-PeiPcdSetPtr (
- IN UINTN TokenNumber,
- IN OUT UINTN *SizeOfBuffer,
- IN VOID *Buffer
- )
-;
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSetBool (
- IN UINTN TokenNumber,
- IN BOOLEAN Value
- )
-;
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSet8Ex (
- IN CONST EFI_GUID *Guid,
- IN UINTN TokenNumber,
- IN UINT8 Value
- )
-;
-
-EFI_STATUS
-EFIAPI
-PeiPcdSet16Ex (
- IN CONST EFI_GUID *Guid,
- IN UINTN TokenNumber,
- IN UINT16 Value
- )
-;
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSet32Ex (
- IN CONST EFI_GUID *Guid,
- IN UINTN TokenNumber,
- IN UINT32 Value
- )
-;
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSet64Ex (
- IN CONST EFI_GUID *Guid,
- IN UINTN TokenNumber,
- IN UINT64 Value
- )
-;
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSetPtrEx (
- IN CONST EFI_GUID *Guid,
- IN UINTN TokenNumber,
- IN OUT UINTN *SizeOfBuffer,
- IN VOID *Buffer
- )
-;
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdSetBoolEx (
- IN CONST EFI_GUID *Guid,
- IN UINTN TokenNumber,
- IN BOOLEAN Value
- )
-;
-
-
-
-EFI_STATUS
-EFIAPI
-PeiRegisterCallBackOnSet (
- IN CONST EFI_GUID *Guid, OPTIONAL
- IN UINTN TokenNumber,
- IN PCD_PPI_CALLBACK CallBackFunction
- )
-;
-
-
-EFI_STATUS
-EFIAPI
-PcdUnRegisterCallBackOnSet (
- IN CONST EFI_GUID *Guid, OPTIONAL
- IN UINTN TokenNumber,
- IN PCD_PPI_CALLBACK CallBackFunction
- )
-;
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdGetNextToken (
- IN CONST EFI_GUID *Guid, OPTIONAL
- IN OUT UINTN *TokenNumber
- )
-;
-
-
-EFI_STATUS
-EFIAPI
-PeiPcdGetNextTokenSpace (
- IN CONST EFI_GUID **Guid
- )
-;
-
-
-/* Internal Function definitions */
-
-PEI_PCD_DATABASE *
-GetPcdDatabase (
- VOID
- )
-;
-
-
-EFI_STATUS
-SetValueWorker (
- IN UINTN TokenNumber,
- IN VOID *Data,
- IN UINTN Size
- )
-;
-
-
-EFI_STATUS
-SetWorker (
- IN UINTN TokenNumber,
- IN VOID *Data,
- IN OUT UINTN *Size,
- IN BOOLEAN PtrType
- )
-;
-
-
-EFI_STATUS
-ExSetValueWorker (
- IN UINTN ExTokenNumber,
- IN CONST EFI_GUID *Guid,
- IN VOID *Data,
- IN UINTN Size
- )
-;
-
-
-
-EFI_STATUS
-ExSetWorker (
- IN UINTN ExTokenNumber,
- IN CONST EFI_GUID *Guid,
- IN VOID *Data,
- IN OUT UINTN *Size,
- IN BOOLEAN PtrType
- )
-;
-
-
-
-VOID *
-GetWorker (
- IN UINTN TokenNumber,
- IN UINTN GetSize
- )
-;
-
-
-
-VOID *
-ExGetWorker (
- IN CONST EFI_GUID *Guid,
- IN UINTN ExTokenNumber,
- IN UINTN GetSize
- )
-;
-
-typedef struct {
- UINTN TokenNumber;
- UINTN Size;
- UINT32 LocalTokenNumberAlias;
-} EX_PCD_ENTRY_ATTRIBUTE;
-
-
-UINTN
-GetExPcdTokenNumber (
- IN CONST EFI_GUID *Guid,
- IN UINTN ExTokenNumber
- )
-;
-
-
-
-
-EFI_STATUS
-PeiRegisterCallBackWorker (
- IN UINTN TokenNumber,
- IN CONST GUID *Guid, OPTIONAL
- IN PCD_PPI_CALLBACK CallBackFunction,
- IN BOOLEAN Register
-);
-
-
-
-
-VOID
-BuildPcdDatabase (
- VOID
- )
-;
-
-SKU_ID *
-GetSkuIdArray (
- IN UINTN LocalTokenNumberTableIdx,
- IN PEI_PCD_DATABASE *Database
- )
-;
-
-UINTN
-GetSizeTableIndex (
- IN UINTN LocalTokenNumberTableIdx,
- IN PEI_PCD_DATABASE *Database
- )
-;
-
-UINTN
-GetPtrTypeSize (
- IN UINTN LocalTokenNumberTableIdx,
- OUT UINTN *MaxSize,
- IN PEI_PCD_DATABASE *Database
- )
-;
-
-
-
-BOOLEAN
-SetPtrTypeSize (
- IN UINTN LocalTokenNumberTableIdx,
- IN OUT UINTN *CurrentSize,
- IN PEI_PCD_DATABASE *Database
- )
-;
-
-
-extern EFI_GUID gPcdDataBaseHobGuid;
-
-extern EFI_GUID gPcdPeiCallbackFnTableHobGuid;
-
-extern PEI_PCD_DATABASE_INIT gPEIPcdDbInit;
-
-#endif
|