summaryrefslogtreecommitdiff
path: root/IntelFrameworkModulePkg/Universal
diff options
context:
space:
mode:
authorlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>2009-06-15 02:05:14 +0000
committerlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>2009-06-15 02:05:14 +0000
commit1f095a0f380a3950a39cb0fd35801ae6a573e886 (patch)
tree7aa9317af2019e86c23985c2806c86275fae4af9 /IntelFrameworkModulePkg/Universal
parentd84d730a2cb66cd364c3ba63efc379b8e99f6c43 (diff)
downloadedk2-platforms-1f095a0f380a3950a39cb0fd35801ae6a573e886.tar.xz
Retire VariablePei and PcatSingleSegmentPciCfgPei in IntelFrameworkModulePkg.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8551 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'IntelFrameworkModulePkg/Universal')
-rw-r--r--IntelFrameworkModulePkg/Universal/PcatSingleSegmentPciCfgPei/PcatSingleSegmentPciCfgPei.inf58
-rw-r--r--IntelFrameworkModulePkg/Universal/PcatSingleSegmentPciCfgPei/PciCfg.c249
-rw-r--r--IntelFrameworkModulePkg/Universal/PcatSingleSegmentPciCfgPei/PciCfg2.c405
-rw-r--r--IntelFrameworkModulePkg/Universal/PcatSingleSegmentPciCfgPei/PciCfgInternal.h237
-rw-r--r--IntelFrameworkModulePkg/Universal/VariablePei/Ipf/VariableWorker.c57
-rw-r--r--IntelFrameworkModulePkg/Universal/VariablePei/Variable.c733
-rw-r--r--IntelFrameworkModulePkg/Universal/VariablePei/Variable.h123
-rw-r--r--IntelFrameworkModulePkg/Universal/VariablePei/VariablePei.inf114
-rw-r--r--IntelFrameworkModulePkg/Universal/VariablePei/VariableWorker.c63
9 files changed, 0 insertions, 2039 deletions
diff --git a/IntelFrameworkModulePkg/Universal/PcatSingleSegmentPciCfgPei/PcatSingleSegmentPciCfgPei.inf b/IntelFrameworkModulePkg/Universal/PcatSingleSegmentPciCfgPei/PcatSingleSegmentPciCfgPei.inf
deleted file mode 100644
index d8b04edeb4..0000000000
--- a/IntelFrameworkModulePkg/Universal/PcatSingleSegmentPciCfgPei/PcatSingleSegmentPciCfgPei.inf
+++ /dev/null
@@ -1,58 +0,0 @@
-#/** @file
-# Single Segment Pci Configuration PPI
-#
-# This file declares PciCfg PPI used to access PCI configuration space in PEI
-# Copyright (c) 2006 - 2009, 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.
-#
-#
-#**/
-
-[Defines]
- INF_VERSION = 0x00010005
- BASE_NAME = PcatSingleSegmentPciCfgPei
- FILE_GUID = 27A5159D-5E61-4809-919A-422E887101EF
- MODULE_TYPE = PEIM
- VERSION_STRING = 1.0
- EFI_SPECIFICATION_VERSION = 0x00020000
- ENTRY_POINT = PeimInitializePciCfg
-
-#
-# VALID_ARCHITECTURES = IA32 X64 IPF EBC
-#
-
-[Sources.common]
- PciCfg.c
- PciCfg2.c
- PciCfgInternal.h
-
-[Packages]
- MdePkg/MdePkg.dec
- IntelFrameworkPkg/IntelFrameworkPkg.dec
- IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
-
-
-[LibraryClasses]
- PeimEntryPoint
- PciLib
- BaseLib
- DebugLib
-
-
-[Ppis]
- gEfiPciCfg2PpiGuid # PPI ALWAYS_PRODUCED
- gEfiPciCfgPpiInServiceTableGuid # PPI ALWAYS_PRODUCED
-
-[FeaturePcd.common]
- gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPciCfgDisable
- gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPciCfg2Disable
-
-[Depex]
- TRUE
-
diff --git a/IntelFrameworkModulePkg/Universal/PcatSingleSegmentPciCfgPei/PciCfg.c b/IntelFrameworkModulePkg/Universal/PcatSingleSegmentPciCfgPei/PciCfg.c
deleted file mode 100644
index aaabfbb58a..0000000000
--- a/IntelFrameworkModulePkg/Universal/PcatSingleSegmentPciCfgPei/PciCfg.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/** @file
-
- Copyright (c) 2006 - 2007, 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:
-
- PciCfg.c
-
-Abstract:
-
- Single Segment Pci Configuration PPI
-
-Revision History
-
-**/
-
-#include "PciCfgInternal.h"
-
-
-/**
- PCI read operation.
-
- @param PeiServices An indirect pointer to the PEI Services Table
- published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Width The width of the access. Enumerated in bytes.
- @param Address The physical address of the access.
- @param Buffer A pointer to the buffer of data.
-
- @retval EFI_SUCCESS The function completed successfully.
- @retval EFI_INVALID_PARAMETER Unsupported width
- enumeration.
-
-**/
-EFI_STATUS
-EFIAPI
-PciCfgRead (
- IN EFI_PEI_SERVICES **PeiServices,
- IN EFI_PEI_PCI_CFG_PPI *This,
- IN EFI_PEI_PCI_CFG_PPI_WIDTH Width,
- IN UINT64 Address,
- IN OUT VOID *Buffer
- )
-{
- UINTN PciLibAddress;
-
- PciLibAddress = PciCfgAddressConvert ((EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS *) &Address);
-
- if (Width == EfiPeiPciCfgWidthUint8) {
- *((UINT8 *) Buffer) = PciRead8 (PciLibAddress);
- } else if (Width == EfiPeiPciCfgWidthUint16) {
- if ((PciLibAddress & 0x01) == 0) {
- //
- // Aligned Pci address access
- //
- WriteUnaligned16 (((UINT16 *) Buffer), PciRead16 (PciLibAddress));
- } else {
- //
- // Unaligned Pci address access, break up the request into byte by byte.
- //
- *((UINT8 *) Buffer) = PciRead8 (PciLibAddress);
- *((UINT8 *) Buffer + 1) = PciRead8 (PciLibAddress + 1);
- }
- } else if (Width == EfiPeiPciCfgWidthUint32) {
- if ((PciLibAddress & 0x03) == 0) {
- //
- // Aligned Pci address access
- //
- WriteUnaligned32 (((UINT32 *) Buffer), PciRead32 (PciLibAddress));
- } else if ((PciLibAddress & 0x01) == 0) {
- //
- // Unaligned Pci address access, break up the request into word by word.
- //
- WriteUnaligned16 (((UINT16 *) Buffer), PciRead16 (PciLibAddress));
- WriteUnaligned16 (((UINT16 *) Buffer + 1), PciRead16 (PciLibAddress + 2));
- } else {
- //
- // Unaligned Pci address access, break up the request into byte by byte.
- //
- *((UINT8 *) Buffer) = PciRead8 (PciLibAddress);
- *((UINT8 *) Buffer + 1) = PciRead8 (PciLibAddress + 1);
- *((UINT8 *) Buffer + 2) = PciRead8 (PciLibAddress + 2);
- *((UINT8 *) Buffer + 3) = PciRead8 (PciLibAddress + 3);
- }
- } else {
- return EFI_INVALID_PARAMETER;
- }
-
- return EFI_SUCCESS;
-}
-
-
-/**
- PCI write operation.
-
- @param PeiServices An indirect pointer to the PEI Services Table
- published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Width The width of the access. Enumerated in bytes.
- @param Address The physical address of the access.
- @param Buffer A pointer to the buffer of data.
-
- @retval EFI_SUCCESS The function completed successfully.
-
-
- @retval EFI_INVALID_PARAMETER Unsupported width
- enumeration.
-
-**/
-EFI_STATUS
-EFIAPI
-PciCfgWrite (
- IN EFI_PEI_SERVICES **PeiServices,
- IN EFI_PEI_PCI_CFG_PPI *This,
- IN EFI_PEI_PCI_CFG_PPI_WIDTH Width,
- IN UINT64 Address,
- IN OUT VOID *Buffer
- )
-{
- UINTN PciLibAddress;
-
- PciLibAddress = PciCfgAddressConvert ((EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS *) &Address);
-
- if (Width == EfiPeiPciCfgWidthUint8) {
- PciWrite8 (PciLibAddress, *((UINT8 *) Buffer));
- } else if (Width == EfiPeiPciCfgWidthUint16) {
- if ((PciLibAddress & 0x01) == 0) {
- //
- // Aligned Pci address access
- //
- PciWrite16 (PciLibAddress, ReadUnaligned16 ((UINT16 *) Buffer));
- } else {
- //
- // Unaligned Pci address access, break up the request into byte by byte.
- //
- PciWrite8 (PciLibAddress, *((UINT8 *) Buffer));
- PciWrite8 (PciLibAddress + 1, *((UINT8 *) Buffer + 1));
- }
- } else if (Width == EfiPeiPciCfgWidthUint32) {
- if ((PciLibAddress & 0x03) == 0) {
- //
- // Aligned Pci address access
- //
- PciWrite32 (PciLibAddress, ReadUnaligned32 ((UINT32 *) Buffer));
- } else if ((PciLibAddress & 0x01) == 0) {
- //
- // Unaligned Pci address access, break up the request into word by word.
- //
- PciWrite16 (PciLibAddress, ReadUnaligned16 ((UINT16 *) Buffer));
- PciWrite16 (PciLibAddress + 2, ReadUnaligned16 ((UINT16 *) Buffer + 1));
- } else {
- //
- // Unaligned Pci address access, break up the request into byte by byte.
- //
- PciWrite8 (PciLibAddress, *((UINT8 *) Buffer));
- PciWrite8 (PciLibAddress + 1, *((UINT8 *) Buffer + 1));
- PciWrite8 (PciLibAddress + 2, *((UINT8 *) Buffer + 2));
- PciWrite8 (PciLibAddress + 3, *((UINT8 *) Buffer + 3));
- }
- } else {
- return EFI_INVALID_PARAMETER;
- }
-
- return EFI_SUCCESS;
-}
-
-
-/**
- PCI read-modify-write operation.
-
- @param PeiServices An indirect pointer to the PEI Services Table
- published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Width The width of the access. Enumerated in bytes.
- @param Address The physical address of the access.
- @param SetBits Value of the bits to set.
- @param ClearBits Value of the bits to clear.
-
- @retval EFI_SUCCESS The function completed successfully.
- @retval EFI_INVALID_PARAMETER Unsupported width
- enumeration.
-
-**/
-EFI_STATUS
-EFIAPI
-PciCfgModify (
- IN EFI_PEI_SERVICES **PeiServices,
- IN EFI_PEI_PCI_CFG_PPI *This,
- IN EFI_PEI_PCI_CFG_PPI_WIDTH Width,
- IN UINT64 Address,
- IN UINTN SetBits,
- IN UINTN ClearBits
- )
-{
- UINTN PciLibAddress;
-
- PciLibAddress = PciCfgAddressConvert ((EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS *) &Address);
- if (Width == EfiPeiPciCfgWidthUint8) {
- PciAndThenOr8 (PciLibAddress, (UINT8)~ClearBits, (UINT8)SetBits);
- } else if (Width == EfiPeiPciCfgWidthUint16) {
- if ((PciLibAddress & 0x01) == 0) {
- //
- // Aligned Pci address access
- //
- PciAndThenOr16 (PciLibAddress, (UINT16)~ClearBits, (UINT16)SetBits);
- } else {
- //
- // Unaligned Pci address access, break up the request into byte by byte.
- //
- PciAndThenOr8 (PciLibAddress, (UINT8)~ClearBits, (UINT8)SetBits);
- PciAndThenOr8 (PciLibAddress + 1, (UINT8)~(ClearBits >> 8), (UINT8)(SetBits >> 8));
- }
- } else if (Width == EfiPeiPciCfgWidthUint32) {
- if ((PciLibAddress & 0x03) == 0) {
- //
- // Aligned Pci address access
- //
- PciAndThenOr32 (PciLibAddress, (UINT32)~ClearBits, (UINT32)SetBits);
- } else if ((PciLibAddress & 0x01) == 0) {
- //
- // Unaligned Pci address access, break up the request into word by word.
- //
- PciAndThenOr16 (PciLibAddress, (UINT16)~ClearBits, (UINT16)SetBits);
- PciAndThenOr16 (PciLibAddress + 2, (UINT16)~(ClearBits >> 16), (UINT16)(SetBits >> 16));
- } else {
- //
- // Unaligned Pci address access, break up the request into byte by byte.
- //
- PciAndThenOr8 (PciLibAddress, (UINT8)~ClearBits, (UINT8)SetBits);
- PciAndThenOr8 (PciLibAddress + 1, (UINT8)~(ClearBits >> 8), (UINT8)(SetBits >> 8));
- PciAndThenOr8 (PciLibAddress + 2, (UINT8)~(ClearBits >> 16), (UINT8)(SetBits >> 16));
- PciAndThenOr8 (PciLibAddress + 3, (UINT8)~(ClearBits >> 24), (UINT8)(SetBits >> 24));
- }
- } else {
- return EFI_INVALID_PARAMETER;
- }
-
- return EFI_SUCCESS;
-}
-
diff --git a/IntelFrameworkModulePkg/Universal/PcatSingleSegmentPciCfgPei/PciCfg2.c b/IntelFrameworkModulePkg/Universal/PcatSingleSegmentPciCfgPei/PciCfg2.c
deleted file mode 100644
index 852476ddd0..0000000000
--- a/IntelFrameworkModulePkg/Universal/PcatSingleSegmentPciCfgPei/PciCfg2.c
+++ /dev/null
@@ -1,405 +0,0 @@
-/**
-
- Copyright (c) 2006 - 2007, 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.
-
-**/
-
-#include "PciCfgInternal.h"
-
-/**
- @par Ppi Description:
- The EFI_PEI_PCI_CFG2_PPI interfaces are used to abstract
- accesses to PCI controllers behind a PCI root bridge
- controller.
-
- @param Read PCI read services. See the Read() function description.
-
- @param Write PCI write services. See the Write() function description.
-
- @param Modify PCI read-modify-write services. See the Modify() function description.
-
- @param Segment The PCI bus segment which the specified functions will access.
-
-**/
-GLOBAL_REMOVE_IF_UNREFERENCED
-EFI_PEI_PCI_CFG2_PPI gPciCfg2Ppi = {
- PciCfg2Read,
- PciCfg2Write,
- PciCfg2Modify
-};
-
-GLOBAL_REMOVE_IF_UNREFERENCED
-EFI_PEI_PPI_DESCRIPTOR gPciCfg2PpiList = {
- (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
- &gEfiPciCfg2PpiGuid,
- &gPciCfg2Ppi
-};
-
-
-/**
- @par Ppi Description:
- The EFI_PEI_PCI_CFG_PPI interfaces are used to abstract accesses to PCI
- controllers behind a PCI root bridge controller.
-
- @param Read PCI read services. See the Read() function description.
-
- @param Write PCI write services. See the Write() function description.
-
- @param Modify PCI read-modify-write services. See the Modify() function description.
-
- @param Segment The PCI bus segment which the specified functions will access.
-
-**/
-GLOBAL_REMOVE_IF_UNREFERENCED
-EFI_PEI_PCI_CFG_PPI gPciCfgPpi = {
- PciCfgRead,
- PciCfgWrite,
- PciCfgModify
-};
-
-GLOBAL_REMOVE_IF_UNREFERENCED
-EFI_PEI_PPI_DESCRIPTOR gPciCfgPpiList = {
- (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
- &gEfiPciCfgPpiInServiceTableGuid,
- &gPciCfgPpi
-};
-
-
-/**
- Convert EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS to PCI_LIB_ADDRESS.
-
- @param Address PCI address with
- EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS format.
-
- @return The PCI address with PCI_LIB_ADDRESS format.
-
-**/
-UINTN
-PciCfgAddressConvert (
- EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS *Address
- )
-{
- if (Address->ExtendedRegister == 0) {
- return PCI_LIB_ADDRESS (Address->Bus, Address->Device, Address->Function, Address->Register);
- }
-
- return PCI_LIB_ADDRESS (Address->Bus, Address->Device, Address->Function, Address->ExtendedRegister);
-}
-
-/**
- Reads from a given location in the PCI configuration space.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
-
- @param This Pointer to local data for the interface.
-
- @param Width The width of the access. Enumerated in bytes.
- See EFI_PEI_PCI_CFG_PPI_WIDTH above.
-
- @param Address The physical address of the access. The format of
- the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS.
-
- @param Buffer A pointer to the buffer of data..
-
-
- @retval EFI_SUCCESS The function completed successfully.
-
- @retval EFI_DEVICE_ERROR There was a problem with the transaction.
-
- @retval EFI_DEVICE_NOT_READY The device is not capable of supporting the operation at this
- time.
-
-**/
-EFI_STATUS
-EFIAPI
-PciCfg2Read (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_PCI_CFG2_PPI *This,
- IN EFI_PEI_PCI_CFG_PPI_WIDTH Width,
- IN UINT64 Address,
- IN OUT VOID *Buffer
-)
-{
- UINTN PciLibAddress;
-
- PciLibAddress = PciCfgAddressConvert ((EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS *) &Address);
-
- if (Width == EfiPeiPciCfgWidthUint8) {
- *((UINT8 *) Buffer) = PciRead8 (PciLibAddress);
- } else if (Width == EfiPeiPciCfgWidthUint16) {
- if ((PciLibAddress & 0x01) == 0) {
- //
- // Aligned Pci address access
- //
- WriteUnaligned16 (((UINT16 *) Buffer), PciRead16 (PciLibAddress));
- } else {
- //
- // Unaligned Pci address access, break up the request into byte by byte.
- //
- *((UINT8 *) Buffer) = PciRead8 (PciLibAddress);
- *((UINT8 *) Buffer + 1) = PciRead8 (PciLibAddress + 1);
- }
- } else if (Width == EfiPeiPciCfgWidthUint32) {
- if ((PciLibAddress & 0x03) == 0) {
- //
- // Aligned Pci address access
- //
- WriteUnaligned32 (((UINT32 *) Buffer), PciRead32 (PciLibAddress));
- } else if ((PciLibAddress & 0x01) == 0) {
- //
- // Unaligned Pci address access, break up the request into word by word.
- //
- WriteUnaligned16 (((UINT16 *) Buffer), PciRead16 (PciLibAddress));
- WriteUnaligned16 (((UINT16 *) Buffer + 1), PciRead16 (PciLibAddress + 2));
- } else {
- //
- // Unaligned Pci address access, break up the request into byte by byte.
- //
- *((UINT8 *) Buffer) = PciRead8 (PciLibAddress);
- *((UINT8 *) Buffer + 1) = PciRead8 (PciLibAddress + 1);
- *((UINT8 *) Buffer + 2) = PciRead8 (PciLibAddress + 2);
- *((UINT8 *) Buffer + 3) = PciRead8 (PciLibAddress + 3);
- }
- } else {
- return EFI_INVALID_PARAMETER;
- }
-
- return EFI_SUCCESS;
-}
-
-/**
- Write to a given location in the PCI configuration space.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
-
- @param This Pointer to local data for the interface.
-
- @param Width The width of the access. Enumerated in bytes.
- See EFI_PEI_PCI_CFG_PPI_WIDTH above.
-
- @param Address The physical address of the access. The format of
- the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS.
-
- @param Buffer A pointer to the buffer of data..
-
-
- @retval EFI_SUCCESS The function completed successfully.
-
- @retval EFI_DEVICE_ERROR There was a problem with the transaction.
-
- @retval EFI_DEVICE_NOT_READY The device is not capable of supporting the operation at this
- time.
-
-**/
-EFI_STATUS
-EFIAPI
-PciCfg2Write (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_PCI_CFG2_PPI *This,
- IN EFI_PEI_PCI_CFG_PPI_WIDTH Width,
- IN UINT64 Address,
- IN OUT VOID *Buffer
-)
-{
- UINTN PciLibAddress;
-
- PciLibAddress = PciCfgAddressConvert ((EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS *) &Address);
-
- if (Width == EfiPeiPciCfgWidthUint8) {
- PciWrite8 (PciLibAddress, *((UINT8 *) Buffer));
- } else if (Width == EfiPeiPciCfgWidthUint16) {
- if ((PciLibAddress & 0x01) == 0) {
- //
- // Aligned Pci address access
- //
- PciWrite16 (PciLibAddress, ReadUnaligned16 ((UINT16 *) Buffer));
- } else {
- //
- // Unaligned Pci address access, break up the request into byte by byte.
- //
- PciWrite8 (PciLibAddress, *((UINT8 *) Buffer));
- PciWrite8 (PciLibAddress + 1, *((UINT8 *) Buffer + 1));
- }
- } else if (Width == EfiPeiPciCfgWidthUint32) {
- if ((PciLibAddress & 0x03) == 0) {
- //
- // Aligned Pci address access
- //
- PciWrite32 (PciLibAddress, ReadUnaligned32 ((UINT32 *) Buffer));
- } else if ((PciLibAddress & 0x01) == 0) {
- //
- // Unaligned Pci address access, break up the request into word by word.
- //
- PciWrite16 (PciLibAddress, ReadUnaligned16 ((UINT16 *) Buffer));
- PciWrite16 (PciLibAddress + 2, ReadUnaligned16 ((UINT16 *) Buffer + 1));
- } else {
- //
- // Unaligned Pci address access, break up the request into byte by byte.
- //
- PciWrite8 (PciLibAddress, *((UINT8 *) Buffer));
- PciWrite8 (PciLibAddress + 1, *((UINT8 *) Buffer + 1));
- PciWrite8 (PciLibAddress + 2, *((UINT8 *) Buffer + 2));
- PciWrite8 (PciLibAddress + 3, *((UINT8 *) Buffer + 3));
- }
- } else {
- return EFI_INVALID_PARAMETER;
- }
-
- return EFI_SUCCESS;
-}
-
-
-/**
- PCI read-modify-write operation.
-
- @param PeiServices An indirect pointer to the PEI Services Table
- published by the PEI Foundation.
-
- @param This Pointer to local data for the interface.
-
- @param Width The width of the access. Enumerated in bytes. Type
- EFI_PEI_PCI_CFG_PPI_WIDTH is defined in Read().
-
- @param Address The physical address of the access.
-
- @param SetBits Points to value to bitwise-OR with the read configuration value.
-
- The size of the value is determined by Width.
-
- @param ClearBits Points to the value to negate and bitwise-AND with the read configuration value.
- The size of the value is determined by Width.
-
-
- @retval EFI_SUCCESS The function completed successfully.
-
- @retval EFI_DEVICE_ERROR There was a problem with the transaction.
-
- @retval EFI_DEVICE_NOT_READY The device is not capable of supporting
- the operation at this time.
-
-**/
-EFI_STATUS
-EFIAPI
-PciCfg2Modify (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_PCI_CFG2_PPI *This,
- IN EFI_PEI_PCI_CFG_PPI_WIDTH Width,
- IN UINT64 Address,
- IN VOID *SetBits,
- IN VOID *ClearBits
-)
-{
- UINTN PciLibAddress;
- UINT16 ClearValue16;
- UINT16 SetValue16;
- UINT32 ClearValue32;
- UINT32 SetValue32;
-
- PciLibAddress = PciCfgAddressConvert ((EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS *) &Address);
-
- if (Width == EfiPeiPciCfgWidthUint8) {
- PciAndThenOr8 (PciLibAddress, (UINT8) (~(*(UINT8 *) ClearBits)), *((UINT8 *) SetBits));
- } else if (Width == EfiPeiPciCfgWidthUint16) {
- if ((PciLibAddress & 0x01) == 0) {
- //
- // Aligned Pci address access
- //
- ClearValue16 = (UINT16) (~ReadUnaligned16 ((UINT16 *) ClearBits));
- SetValue16 = ReadUnaligned16 ((UINT16 *) SetBits);
- PciAndThenOr16 (PciLibAddress, ClearValue16, SetValue16);
- } else {
- //
- // Unaligned Pci address access, break up the request into byte by byte.
- //
- PciAndThenOr8 (PciLibAddress, (UINT8) (~(*(UINT8 *) ClearBits)), *((UINT8 *) SetBits));
- PciAndThenOr8 (PciLibAddress + 1, (UINT8) (~(*((UINT8 *) ClearBits + 1))), *((UINT8 *) SetBits + 1));
- }
- } else if (Width == EfiPeiPciCfgWidthUint32) {
- if ((PciLibAddress & 0x03) == 0) {
- //
- // Aligned Pci address access
- //
- ClearValue32 = (UINT32) (~ReadUnaligned32 ((UINT32 *) ClearBits));
- SetValue32 = ReadUnaligned32 ((UINT32 *) SetBits);
- PciAndThenOr32 (PciLibAddress, ClearValue32, SetValue32);
- } else if ((PciLibAddress & 0x01) == 0) {
- //
- // Unaligned Pci address access, break up the request into word by word.
- //
- ClearValue16 = (UINT16) (~ReadUnaligned16 ((UINT16 *) ClearBits));
- SetValue16 = ReadUnaligned16 ((UINT16 *) SetBits);
- PciAndThenOr16 (PciLibAddress, ClearValue16, SetValue16);
-
- ClearValue16 = (UINT16) (~ReadUnaligned16 ((UINT16 *) ClearBits + 1));
- SetValue16 = ReadUnaligned16 ((UINT16 *) SetBits + 1);
- PciAndThenOr16 (PciLibAddress + 2, ClearValue16, SetValue16);
- } else {
- //
- // Unaligned Pci address access, break up the request into byte by byte.
- //
- PciAndThenOr8 (PciLibAddress, (UINT8) (~(*(UINT8 *) ClearBits)), *((UINT8 *) SetBits));
- PciAndThenOr8 (PciLibAddress + 1, (UINT8) (~(*((UINT8 *) ClearBits + 1))), *((UINT8 *) SetBits + 1));
- PciAndThenOr8 (PciLibAddress + 2, (UINT8) (~(*((UINT8 *) ClearBits + 2))), *((UINT8 *) SetBits + 2));
- PciAndThenOr8 (PciLibAddress + 3, (UINT8) (~(*((UINT8 *) ClearBits + 3))), *((UINT8 *) SetBits + 3));
- }
- } else {
- return EFI_INVALID_PARAMETER;
- }
- return EFI_SUCCESS;
-}
-
-/**
- Module's entry function.
- This routine will install EFI_PEI_PCI_CFG2_PPI or EFI_PEI_PCI_CFG_PPI
- according to PeiServices's version.
-
- @param FileHandle Handle of the file being invoked.
- @param PeiServices Describes the list of possible PEI Services.
-
- @return Whether success to install service
-**/
-EFI_STATUS
-EFIAPI
-PeimInitializePciCfg (
- IN EFI_PEI_FILE_HANDLE FileHandle,
- IN CONST EFI_PEI_SERVICES **PeiServices
- )
-{
- EFI_STATUS Status;
-
- Status = EFI_SUCCESS;
-
- if ((**PeiServices).Hdr.Revision < PEI_SERVICES_REVISION) {
- //
- // BugBug: Curently, the FrameworkPkg does not define
- // FRAMEWORK_PEI_SERVICES. So, In order to install
- // the PeiServices.PciCfg(), we casttype
- // EFI_PEI_PCI_CFG_PPI to EFI_PEI_PCI_CFG2_PPI.
- // After defining the FRAMEWORK_PEI_SERVICES. this should
- // be updated as:
- //
- // FrameworkPeiServices = (FRAMEWORK_PEI_SERVICES **) PeiServices;
- // (**FrameworkPeiServices).PciCfg = &mPciCfgPpi;
- //
- (**(EFI_PEI_SERVICES**)PeiServices).PciCfg = (EFI_PEI_PCI_CFG2_PPI *) &gPciCfgPpi;
- } else {
- (**(EFI_PEI_SERVICES**)PeiServices).PciCfg = &gPciCfg2Ppi;
- }
-
- if (!FeaturePcdGet (PcdPciCfgDisable)) {
- Status = (**PeiServices).InstallPpi (PeiServices, &gPciCfgPpiList);
- }
- if (!FeaturePcdGet (PcdPciCfg2Disable)) {
- Status = (**PeiServices).InstallPpi (PeiServices, &gPciCfg2PpiList);
- }
-
- return Status;
-}
-
diff --git a/IntelFrameworkModulePkg/Universal/PcatSingleSegmentPciCfgPei/PciCfgInternal.h b/IntelFrameworkModulePkg/Universal/PcatSingleSegmentPciCfgPei/PciCfgInternal.h
deleted file mode 100644
index 8aa6289b1f..0000000000
--- a/IntelFrameworkModulePkg/Universal/PcatSingleSegmentPciCfgPei/PciCfgInternal.h
+++ /dev/null
@@ -1,237 +0,0 @@
-/**
-
- Copyright (c) 2006 - 2007, 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.
-
-**/
-
-#ifndef __PCICFGPPI_INTERLNAL_H_
-#define __PCICFGPPI_INTERLNAL_H_
-
-#include <PiPei.h>
-#include <FrameworkPei.h>
-
-#include <Ppi/PciCfg2.h>
-#include <Ppi/PciCfg.h>
-
-#include <Library/BaseLib.h>
-#include <Library/PcdLib.h>
-#include <Library/DebugLib.h>
-#include <Library/PciLib.h>
-#include <Library/PeimEntryPoint.h>
-
-#include <IndustryStandard/Pci.h>
-
-
-//
-// Global Variables
-//
-extern EFI_PEI_PCI_CFG_PPI gPciCfgPpi;
-extern EFI_PEI_PPI_DESCRIPTOR gPciCfgPpiList;
-
-/**
- Convert EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS to PCI_LIB_ADDRESS.
-
- @param Address PCI address with
- EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS format.
-
- @return The PCI address with PCI_LIB_ADDRESS format.
-
-**/
-UINTN
-PciCfgAddressConvert (
- EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS *Address
- );
-
-
-/**
- Reads from a given location in the PCI configuration space.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
-
- @param This Pointer to local data for the interface.
-
- @param Width The width of the access. Enumerated in bytes.
- See EFI_PEI_PCI_CFG_PPI_WIDTH above.
-
- @param Address The physical address of the access. The format of
- the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS.
-
- @param Buffer A pointer to the buffer of data..
-
-
- @retval EFI_SUCCESS The function completed successfully.
-
- @retval EFI_DEVICE_ERROR There was a problem with the transaction.
-
- @retval EFI_DEVICE_NOT_READY The device is not capable of supporting the operation at this
- time.
-
-**/
-EFI_STATUS
-EFIAPI
-PciCfg2Read (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_PCI_CFG2_PPI *This,
- IN EFI_PEI_PCI_CFG_PPI_WIDTH Width,
- IN UINT64 Address,
- IN OUT VOID *Buffer
-);
-
-/**
- Write to a given location in the PCI configuration space.
-
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
-
- @param This Pointer to local data for the interface.
-
- @param Width The width of the access. Enumerated in bytes.
- See EFI_PEI_PCI_CFG_PPI_WIDTH above.
-
- @param Address The physical address of the access. The format of
- the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS.
-
- @param Buffer A pointer to the buffer of data..
-
-
- @retval EFI_SUCCESS The function completed successfully.
-
- @retval EFI_DEVICE_ERROR There was a problem with the transaction.
-
- @retval EFI_DEVICE_NOT_READY The device is not capable of supporting the operation at this
- time.
-
-**/
-EFI_STATUS
-EFIAPI
-PciCfg2Write (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_PCI_CFG2_PPI *This,
- IN EFI_PEI_PCI_CFG_PPI_WIDTH Width,
- IN UINT64 Address,
- IN OUT VOID *Buffer
-);
-
-
-/**
- PCI read-modify-write operation.
-
- @param PeiServices An indirect pointer to the PEI Services Table
- published by the PEI Foundation.
-
- @param This Pointer to local data for the interface.
-
- @param Width The width of the access. Enumerated in bytes. Type
- EFI_PEI_PCI_CFG_PPI_WIDTH is defined in Read().
-
- @param Address The physical address of the access.
-
- @param SetBits Points to value to bitwise-OR with the read configuration value.
-
- The size of the value is determined by Width.
-
- @param ClearBits Points to the value to negate and bitwise-AND with the read configuration value.
- The size of the value is determined by Width.
-
-
- @retval EFI_SUCCESS The function completed successfully.
-
- @retval EFI_DEVICE_ERROR There was a problem with the transaction.
-
- @retval EFI_DEVICE_NOT_READY The device is not capable of supporting
- the operation at this time.
-
-**/
-EFI_STATUS
-EFIAPI
-PciCfg2Modify (
- IN CONST EFI_PEI_SERVICES **PeiServices,
- IN CONST EFI_PEI_PCI_CFG2_PPI *This,
- IN EFI_PEI_PCI_CFG_PPI_WIDTH Width,
- IN UINT64 Address,
- IN VOID *SetBits,
- IN VOID *ClearBits
-);
-
-
-
-/**
- PCI read operation.
-
- @param PeiServices An indirect pointer to the PEI Services Table
- published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Width The width of the access. Enumerated in bytes.
- @param Address The physical address of the access.
- @param Buffer A pointer to the buffer of data.
-
- @retval EFI_SUCCESS The function completed successfully.
- @retval EFI_NOT_YET_AVAILABLE The service has not been installed.
-
-**/
-EFI_STATUS
-EFIAPI
-PciCfgRead (
- IN EFI_PEI_SERVICES **PeiServices,
- IN EFI_PEI_PCI_CFG_PPI *This,
- IN EFI_PEI_PCI_CFG_PPI_WIDTH Width,
- IN UINT64 Address,
- IN OUT VOID *Buffer
- );
-
-/**
- PCI write operation.
-
- @param PeiServices An indirect pointer to the PEI Services Table
- published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Width The width of the access. Enumerated in bytes.
- @param Address The physical address of the access.
- @param Buffer A pointer to the buffer of data.
-
- @retval EFI_SUCCESS The function completed successfully.
- @retval EFI_NOT_YET_AVAILABLE The service has not been installed.
-
-**/
-EFI_STATUS
-EFIAPI
-PciCfgWrite (
- IN EFI_PEI_SERVICES **PeiServices,
- IN EFI_PEI_PCI_CFG_PPI *This,
- IN EFI_PEI_PCI_CFG_PPI_WIDTH Width,
- IN UINT64 Address,
- IN OUT VOID *Buffer
- );
-
-/**
- PCI read-modify-write operation.
-
- @param PeiServices An indirect pointer to the PEI Services Table
- published by the PEI Foundation.
- @param This Pointer to local data for the interface.
- @param Width The width of the access. Enumerated in bytes.
- @param Address The physical address of the access.
- @param SetBits Value of the bits to set.
- @param ClearBits Value of the bits to clear.
-
- @retval EFI_SUCCESS The function completed successfully.
-
-**/
-EFI_STATUS
-EFIAPI
-PciCfgModify (
- IN EFI_PEI_SERVICES **PeiServices,
- IN EFI_PEI_PCI_CFG_PPI *This,
- IN EFI_PEI_PCI_CFG_PPI_WIDTH Width,
- IN UINT64 Address,
- IN UINTN SetBits,
- IN UINTN ClearBits
- );
-
-#endif
diff --git a/IntelFrameworkModulePkg/Universal/VariablePei/Ipf/VariableWorker.c b/IntelFrameworkModulePkg/Universal/VariablePei/Ipf/VariableWorker.c
deleted file mode 100644
index 0a4ee95774..0000000000
--- a/IntelFrameworkModulePkg/Universal/VariablePei/Ipf/VariableWorker.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/** @file
- Variable worker functions.
-
- Copyright (c) 2006, Intel Corporation<BR>
- 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 <Variable.h>
-
-
-/**
- Get one variable by the index count.
-
- @param IndexTable The pointer to variable index table.
- @param Count The index count of variable in index table.
-
- @return The pointer to variable header indexed by count.
-
-**/
-VARIABLE_HEADER *
-GetVariableByIndex (
- IN VARIABLE_INDEX_TABLE *IndexTable,
- IN UINT32 Count
- )
-{
- return (VARIABLE_HEADER *) (UINTN) ((((UINT32)IndexTable->Index[Count]) << 2) + ((UINT32)(UINTN)IndexTable->StartPtr & 0xFFFC0000) );
-}
-
-/**
- Record Variable in VariableIndex HOB.
-
- Record Variable in VariableIndex HOB and update the length of variable index table.
-
- @param IndexTable The pointer to variable index table.
- @param Variable The pointer to the variable that will be recorded.
-
- @retval VOID
-
-**/
-VOID
-VariableIndexTableUpdate (
- IN OUT VARIABLE_INDEX_TABLE *IndexTable,
- IN VARIABLE_HEADER *Variable
- )
-{
- IndexTable->Index[IndexTable->Length++] = (UINT16) (((UINT32)(UINTN) Variable) >> 2);
-
- return;
-}
-
diff --git a/IntelFrameworkModulePkg/Universal/VariablePei/Variable.c b/IntelFrameworkModulePkg/Universal/VariablePei/Variable.c
deleted file mode 100644
index 3a747846b3..0000000000
--- a/IntelFrameworkModulePkg/Universal/VariablePei/Variable.c
+++ /dev/null
@@ -1,733 +0,0 @@
-/** @file
- Framework PEIM to provide the Variable functionality
-
-Copyright (c) 2006 - 2009 Intel Corporation. <BR>
-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:
-
-**/
-
-
-#include "Variable.h"
-
-//
-// Module globals
-//
-EFI_PEI_READ_ONLY_VARIABLE_PPI mVariablePpi = {
- PeiGetVariable,
- PeiGetNextVariableName
-};
-
-EFI_PEI_READ_ONLY_VARIABLE2_PPI mVariable2Ppi = {
- PeiGetVariable2,
- PeiGetNextVariableName2
-};
-
-EFI_PEI_PPI_DESCRIPTOR mPpiListVariable[] = {
- {
- (EFI_PEI_PPI_DESCRIPTOR_PPI),
- &gEfiPeiReadOnlyVariable2PpiGuid,
- &mVariable2Ppi
- },
- {
- (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
- &gEfiPeiReadOnlyVariablePpiGuid,
- &mVariablePpi
- }
-};
-
-EFI_GUID mEfiVariableIndexTableGuid = EFI_VARIABLE_INDEX_TABLE_GUID;
-
-/**
- Provide the functionality of the variable services.
-
- @param FileHandle Handle of the file being invoked.
- @param PeiServices Describes the list of possible PEI Services.
-
- @return EFI_SUCCESS If the interface could be successfully installed.
- @return EFI_UNSUPPORTED If current boot path is in recovery mode, then does not
- install this interface.
-
-**/
-EFI_STATUS
-EFIAPI
-PeimInitializeVariableServices (
- IN EFI_PEI_FILE_HANDLE FileHandle,
- IN CONST EFI_PEI_SERVICES **PeiServices
- )
-{
- EFI_BOOT_MODE BootMode;
- EFI_STATUS Status;
-
- //
- // Check if this is recovery boot path. If no, publish the variable access capability
- // to other modules. If yes, the content of variable area is not reliable. Therefore,
- // in this case we should not provide variable service to other pei modules.
- //
- Status = (*PeiServices)->GetBootMode (PeiServices, &BootMode);
- ASSERT_EFI_ERROR (Status);
-
- if (BootMode == BOOT_IN_RECOVERY_MODE) {
- return EFI_UNSUPPORTED;
- }
-
- return (**PeiServices).InstallPpi (PeiServices, &mPpiListVariable[0]);
-
-}
-
-/**
- This code gets the pointer to the first variable memory pointer byte
-
- @param VarStoreHeader Pointer to the Variable Store Header.
-
- @return VARIABLE_HEADER* Pointer to last unavailable Variable Header
-
-**/
-VARIABLE_HEADER *
-GetStartPointer (
- IN VARIABLE_STORE_HEADER *VarStoreHeader
- )
-{
- //
- // The end of variable store
- //
- return (VARIABLE_HEADER *) HEADER_ALIGN (VarStoreHeader + 1);
-}
-
-/**
- This code gets the pointer to the last variable memory pointer byte
-
- @param VarStoreHeader Pointer to the Variable Store Header.
-
- @return VARIABLE_HEADER* Pointer to last unavailable Variable Header
-
-**/
-VARIABLE_HEADER *
-GetEndPointer (
- IN VARIABLE_STORE_HEADER *VarStoreHeader
- )
-
-{
- //
- // The end of variable store
- //
- return (VARIABLE_HEADER *) HEADER_ALIGN ((UINTN) VarStoreHeader + VarStoreHeader->Size);
-}
-
-/**
-
- This code checks if variable header is valid or not.
-
- @param Variable Pointer to the Variable Header.
-
- @retval TRUE Variable header is valid.
- @retval FALSE Variable header is not valid.
-
-**/
-BOOLEAN
-EFIAPI
-IsValidVariableHeader (
- IN VARIABLE_HEADER *Variable
- )
-{
- if (Variable == NULL || Variable->StartId != VARIABLE_DATA ) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-/**
- This code gets the size of name of variable.
-
- @param Variable Pointer to the Variable Header.
-
- @return UINTN Size of variable in bytes
-
-**/
-UINTN
-NameSizeOfVariable (
- IN VARIABLE_HEADER *Variable
- )
-{
- if (Variable->State == (UINT8) (-1) ||
- Variable->DataSize == (UINT32) -1 ||
- Variable->NameSize == (UINT32) -1 ||
- Variable->Attributes == (UINT32) -1) {
- return 0;
- }
- return (UINTN) Variable->NameSize;
-}
-
-/**
- This code gets the size of name of variable.
-
- @param Variable Pointer to the Variable Header.
-
- @return UINTN Size of variable in bytes
-
-**/
-UINTN
-DataSizeOfVariable (
- IN VARIABLE_HEADER *Variable
- )
-{
- if (Variable->State == (UINT8) -1 ||
- Variable->DataSize == (UINT32) -1 ||
- Variable->NameSize == (UINT32) -1 ||
- Variable->Attributes == (UINT32) -1) {
- return 0;
- }
- return (UINTN) Variable->DataSize;
-}
-
-/**
- This code gets the pointer to the variable name.
-
- @param Variable Pointer to the Variable Header.
-
- @return CHAR16* Pointer to Variable Name
-
-**/
-CHAR16 *
-GetVariableNamePtr (
- IN VARIABLE_HEADER *Variable
- )
-
-{
-
- return (CHAR16 *) (Variable + 1);
-}
-
-/**
- This code gets the pointer to the variable data.
-
- @param Variable Pointer to the Variable Header.
-
- @return UINT8* Pointer to Variable Data
-
-**/
-UINT8 *
-GetVariableDataPtr (
- IN VARIABLE_HEADER *Variable
- )
-{
- UINTN Value;
-
- //
- // Be careful about pad size for alignment
- //
- Value = (UINTN) GetVariableNamePtr (Variable);
- Value += NameSizeOfVariable (Variable);
- Value += GET_PAD_SIZE (NameSizeOfVariable (Variable));
-
- return (UINT8 *) Value;
-}
-
-/**
- This code gets the pointer to the next variable header.
-
- @param Variable Pointer to the Variable Header.
-
- @return VARIABLE_HEADER* Pointer to next variable header.
-
-**/
-VARIABLE_HEADER *
-GetNextVariablePtr (
- IN VARIABLE_HEADER *Variable
- )
-
-{
- UINTN Value;
-
- if (!IsValidVariableHeader (Variable)) {
- return NULL;
- }
-
- Value = (UINTN) GetVariableDataPtr (Variable);
- Value += DataSizeOfVariable (Variable);
- Value += GET_PAD_SIZE (DataSizeOfVariable (Variable));
-
- //
- // Be careful about pad size for alignment
- //
- return (VARIABLE_HEADER *) HEADER_ALIGN (Value);
-}
-
-/**
- This code gets the pointer to the variable name.
-
- @param VarStoreHeader Pointer to the Variable Store Header.
-
- @retval EfiRaw Variable store is raw
- @retval EfiValid Variable store is valid
- @retval EfiInvalid Variable store is invalid
-
-**/
-VARIABLE_STORE_STATUS
-EFIAPI
-GetVariableStoreStatus (
- IN VARIABLE_STORE_HEADER *VarStoreHeader
- )
-
-{
-
- if (CompareGuid (&VarStoreHeader->Signature, &gEfiVariableGuid) &&
- VarStoreHeader->Format == VARIABLE_STORE_FORMATTED &&
- VarStoreHeader->State == VARIABLE_STORE_HEALTHY
- ) {
-
- return EfiValid;
- }
-
- if (((UINT32 *)(&VarStoreHeader->Signature))[0] == 0xffffffff &&
- ((UINT32 *)(&VarStoreHeader->Signature))[1] == 0xffffffff &&
- ((UINT32 *)(&VarStoreHeader->Signature))[2] == 0xffffffff &&
- ((UINT32 *)(&VarStoreHeader->Signature))[3] == 0xffffffff &&
- VarStoreHeader->Size == 0xffffffff &&
- VarStoreHeader->Format == 0xff &&
- VarStoreHeader->State == 0xff
- ) {
-
- return EfiRaw;
- } else {
- return EfiInvalid;
- }
-}
-
-/**
- This function compares a variable with variable entries in database
-
- @param Variable - Pointer to the variable in our database
- @param VariableName - Name of the variable to compare to 'Variable'
- @param VendorGuid - GUID of the variable to compare to 'Variable'
- @param PtrTrack - Variable Track Pointer structure that contains
- Variable Information.
-
- @retval EFI_SUCCESS - Found match variable
- @retval EFI_NOT_FOUND - Variable not found
-
-**/
-EFI_STATUS
-CompareWithValidVariable (
- IN VARIABLE_HEADER *Variable,
- IN CONST CHAR16 *VariableName,
- IN CONST EFI_GUID *VendorGuid,
- OUT VARIABLE_POINTER_TRACK *PtrTrack
- )
-
-{
- VOID *Point;
-
- if (VariableName[0] == 0) {
- PtrTrack->CurrPtr = Variable;
- return EFI_SUCCESS;
- } else {
- //
- // Don't use CompareGuid function here for performance reasons.
- // Instead we compare the GUID a UINT32 at a time and branch
- // on the first failed comparison.
- //
- if ((((INT32 *) VendorGuid)[0] == ((INT32 *) &Variable->VendorGuid)[0]) &&
- (((INT32 *) VendorGuid)[1] == ((INT32 *) &Variable->VendorGuid)[1]) &&
- (((INT32 *) VendorGuid)[2] == ((INT32 *) &Variable->VendorGuid)[2]) &&
- (((INT32 *) VendorGuid)[3] == ((INT32 *) &Variable->VendorGuid)[3])
- ) {
- ASSERT (NameSizeOfVariable (Variable) != 0);
- Point = (VOID *) GetVariableNamePtr (Variable);
- if (!CompareMem (VariableName, Point, NameSizeOfVariable (Variable))) {
- PtrTrack->CurrPtr = Variable;
- return EFI_SUCCESS;
- }
- }
- }
-
- return EFI_NOT_FOUND;
-}
-
-/**
- This code finds variable in storage blocks (Non-Volatile)
-
- @param PeiServices - General purpose services available to every PEIM.
- @param VariableName - Name of the variable to be found
- @param VendorGuid - Vendor GUID to be found.
- @param PtrTrack - Variable Track Pointer structure that contains
- Variable Information.
-
- @retval EFI_SUCCESS - Variable found successfully
- @retval EFI_NOT_FOUND - Variable not found
- @retval EFI_INVALID_PARAMETER - Invalid variable name
-
-**/
-EFI_STATUS
-EFIAPI
-FindVariable (
- IN EFI_PEI_SERVICES **PeiServices,
- IN CONST CHAR16 *VariableName,
- IN CONST EFI_GUID *VendorGuid,
- OUT VARIABLE_POINTER_TRACK *PtrTrack
- )
-
-{
- EFI_HOB_GUID_TYPE *GuidHob;
- VARIABLE_STORE_HEADER *VariableStoreHeader;
- VARIABLE_HEADER *Variable;
- VARIABLE_HEADER *MaxIndex;
- VARIABLE_INDEX_TABLE *IndexTable;
- UINT32 Count;
- UINT8 *VariableBase;
-
- if (VariableName[0] != 0 && VendorGuid == NULL) {
- return EFI_INVALID_PARAMETER;
- }
- //
- // No Variable Address equals zero, so 0 as initial value is safe.
- //
- MaxIndex = 0;
-
- GuidHob = GetFirstGuidHob (&mEfiVariableIndexTableGuid);
- if (GuidHob == NULL) {
- IndexTable = BuildGuidHob (&mEfiVariableIndexTableGuid, sizeof (VARIABLE_INDEX_TABLE));
- IndexTable->Length = 0;
- IndexTable->StartPtr = NULL;
- IndexTable->EndPtr = NULL;
- IndexTable->GoneThrough = 0;
- } else {
- IndexTable = GET_GUID_HOB_DATA (GuidHob);
- for (Count = 0; Count < IndexTable->Length; Count++)
- {
- MaxIndex = GetVariableByIndex (IndexTable, Count);
-
- if (CompareWithValidVariable (MaxIndex, VariableName, VendorGuid, PtrTrack) == EFI_SUCCESS) {
- PtrTrack->StartPtr = IndexTable->StartPtr;
- PtrTrack->EndPtr = IndexTable->EndPtr;
-
- return EFI_SUCCESS;
- }
- }
-
- if (IndexTable->GoneThrough) {
- return EFI_NOT_FOUND;
- }
- }
- //
- // If not found in HOB, then let's start from the MaxIndex we've found.
- //
- if (MaxIndex != NULL) {
- Variable = GetNextVariablePtr (MaxIndex);
- } else {
- if (IndexTable->StartPtr || IndexTable->EndPtr) {
- Variable = IndexTable->StartPtr;
- } else {
- VariableBase = (UINT8 *) (UINTN) PcdGet32 (PcdFlashNvStorageVariableBase);
-
- //
- // Check if FV header is valid.
- //
- if (((EFI_FIRMWARE_VOLUME_HEADER *) VariableBase)->Signature != EFI_FVH_SIGNATURE) {
- return EFI_UNSUPPORTED;
- }
-
- VariableStoreHeader = (VARIABLE_STORE_HEADER *) (VariableBase + \
- ((EFI_FIRMWARE_VOLUME_HEADER *) (VariableBase)) -> HeaderLength);
-
- if (GetVariableStoreStatus (VariableStoreHeader) != EfiValid) {
- return EFI_UNSUPPORTED;
- }
-
- if (~VariableStoreHeader->Size == 0) {
- return EFI_NOT_FOUND;
- }
- //
- // Find the variable by walk through non-volatile variable store
- //
- IndexTable->StartPtr = GetStartPointer (VariableStoreHeader);
- IndexTable->EndPtr = GetEndPointer (VariableStoreHeader);
-
- //
- // Start Pointers for the variable.
- // Actual Data Pointer where data can be written.
- //
- Variable = IndexTable->StartPtr;
- }
- }
- //
- // Find the variable by walk through non-volatile variable store
- //
- PtrTrack->StartPtr = IndexTable->StartPtr;
- PtrTrack->EndPtr = IndexTable->EndPtr;
-
- while ((Variable < IndexTable->EndPtr) && IsValidVariableHeader (Variable)) {
- if (Variable->State == VAR_ADDED) {
- //
- // Record Variable in VariableIndex HOB
- //
- if (IndexTable->Length < VARIABLE_INDEX_TABLE_VOLUME)
- {
- VariableIndexTableUpdate (IndexTable, Variable);
- }
-
- if (CompareWithValidVariable (Variable, VariableName, VendorGuid, PtrTrack) == EFI_SUCCESS) {
- return EFI_SUCCESS;
- }
- }
-
- Variable = GetNextVariablePtr (Variable);
- }
- //
- // If gone through the VariableStore, that means we never find in Firmware any more.
- //
- if (IndexTable->Length < VARIABLE_INDEX_TABLE_VOLUME) {
- IndexTable->GoneThrough = 1;
- }
-
- PtrTrack->CurrPtr = NULL;
-
- return EFI_NOT_FOUND;
-}
-
-/**
- Provide the read variable functionality of the variable services.
-
- @param PeiServices - General purpose services available to every PEIM.
-
- @param VariableName - The variable name
-
- @param VendorGuid - The vendor's GUID
-
- @param Attributes - Pointer to the attribute
-
- @param DataSize - Size of data
-
- @param Data - Pointer to data
-
- @retval EFI_SUCCESS - The interface could be successfully installed
-
- @retval EFI_NOT_FOUND - The variable could not be discovered
-
- @retval EFI_BUFFER_TOO_SMALL - The caller buffer is not large enough
-
-**/
-EFI_STATUS
-EFIAPI
-PeiGetVariable (
- IN EFI_PEI_SERVICES **PeiServices,
- IN CHAR16 *VariableName,
- IN EFI_GUID * VendorGuid,
- OUT UINT32 *Attributes OPTIONAL,
- IN OUT UINTN *DataSize,
- OUT VOID *Data
- )
-
-{
- VARIABLE_POINTER_TRACK Variable;
- UINTN VarDataSize;
- EFI_STATUS Status;
-
- if (VariableName == NULL || VendorGuid == NULL || DataSize == NULL) {
- return EFI_INVALID_PARAMETER;
- }
- //
- // Find existing variable
- //
- Status = FindVariable (PeiServices, VariableName, VendorGuid, &Variable);
-
- if (Variable.CurrPtr == NULL || Status != EFI_SUCCESS) {
- return Status;
- }
- //
- // Get data size
- //
- VarDataSize = DataSizeOfVariable (Variable.CurrPtr);
- if (*DataSize >= VarDataSize) {
- //
- // PO-TKW: Address one checking in this place
- //
- if (Data == NULL) {
- return EFI_INVALID_PARAMETER;
- }
-
- (*PeiServices)->CopyMem (Data, GetVariableDataPtr (Variable.CurrPtr), VarDataSize);
-
- if (Attributes != NULL) {
- *Attributes = Variable.CurrPtr->Attributes;
- }
-
- *DataSize = VarDataSize;
- return EFI_SUCCESS;
- } else {
- *DataSize = VarDataSize;
- return EFI_BUFFER_TOO_SMALL;
- }
-}
-
-/**
- Provide the read variable functionality of the variable services.
-
- @param PeiServices - General purpose services available to every PEIM.
-
- @param VariableName - The variable name
-
- @param VendorGuid - The vendor's GUID
-
- @param Attributes - Pointer to the attribute
-
- @param DataSize - Size of data
-
- @param Data - Pointer to data
-
- @retval EFI_SUCCESS - The interface could be successfully installed
-
- @retval EFI_NOT_FOUND - The variable could not be discovered
-
- @retval EFI_BUFFER_TOO_SMALL - The caller buffer is not large enough
-
-**/
-EFI_STATUS
-EFIAPI
-PeiGetVariable2 (
- IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This,
- IN CONST CHAR16 *VariableName,
- IN CONST EFI_GUID *VariableGuid,
- OUT UINT32 *Attributes,
- IN OUT UINTN *DataSize,
- OUT VOID *Data
- )
-
-{
- return PeiGetVariable (
- (EFI_PEI_SERVICES **) GetPeiServicesTablePointer (),
- (CHAR16*)VariableName,
- (EFI_GUID*)VariableGuid,
- Attributes,
- DataSize,
- Data
- );
-}
-
-/**
- Provide the get next variable functionality of the variable services.
-
- @param PeiServices - General purpose services available to every PEIM.
- @param VariabvleNameSize - The variable name's size.
- @param VariableName - A pointer to the variable's name.
- @param VendorGuid - A pointer to the EFI_GUID structure.
-
- @param VariableNameSize - Size of the variable name
-
- @param VariableName - The variable name
-
- @param VendorGuid - The vendor's GUID
-
- @retval EFI_SUCCESS - The interface could be successfully installed
-
- @retval EFI_NOT_FOUND - The variable could not be discovered
-
-**/
-EFI_STATUS
-EFIAPI
-PeiGetNextVariableName (
- IN EFI_PEI_SERVICES **PeiServices,
- IN OUT UINTN *VariableNameSize,
- IN OUT CHAR16 *VariableName,
- IN OUT EFI_GUID *VendorGuid
- )
-
-{
- VARIABLE_POINTER_TRACK Variable;
- UINTN VarNameSize;
- EFI_STATUS Status;
-
- if (VariableNameSize == NULL || VariableName == NULL || VendorGuid == NULL) {
- return EFI_INVALID_PARAMETER;
- }
-
- Status = FindVariable (PeiServices, VariableName, VendorGuid, &Variable);
-
- if (Variable.CurrPtr == NULL || Status != EFI_SUCCESS) {
- return Status;
- }
-
- if (VariableName[0] != 0) {
- //
- // If variable name is not NULL, get next variable
- //
- Variable.CurrPtr = GetNextVariablePtr (Variable.CurrPtr);
- }
-
- while (!(Variable.CurrPtr >= Variable.EndPtr || Variable.CurrPtr == NULL)) {
- if (IsValidVariableHeader (Variable.CurrPtr)) {
- if (Variable.CurrPtr->State == VAR_ADDED) {
- ASSERT (NameSizeOfVariable (Variable.CurrPtr) != 0);
-
- VarNameSize = (UINTN) NameSizeOfVariable (Variable.CurrPtr);
- if (VarNameSize <= *VariableNameSize) {
- (*PeiServices)->CopyMem (VariableName, GetVariableNamePtr (Variable.CurrPtr), VarNameSize);
-
- (*PeiServices)->CopyMem (VendorGuid, &Variable.CurrPtr->VendorGuid, sizeof (EFI_GUID));
-
- Status = EFI_SUCCESS;
- } else {
- Status = EFI_BUFFER_TOO_SMALL;
- }
-
- *VariableNameSize = VarNameSize;
- return Status;
- //
- // Variable is found
- //
- } else {
- Variable.CurrPtr = GetNextVariablePtr (Variable.CurrPtr);
- }
- } else {
- break;
- }
- }
-
- return EFI_NOT_FOUND;
-}
-
-/**
- Provide the get next variable functionality of the variable services.
-
- @param PeiServices - General purpose services available to every PEIM.
- @param VariabvleNameSize - The variable name's size.
- @param VariableName - A pointer to the variable's name.
- @param VariableGuid - A pointer to the EFI_GUID structure.
-
- @param VariableNameSize - Size of the variable name
-
- @param VariableName - The variable name
-
- @param VendorGuid - The vendor's GUID
-
-
- @retval EFI_SUCCESS - The interface could be successfully installed
-
- @retval EFI_NOT_FOUND - The variable could not be discovered
-
-**/
-EFI_STATUS
-EFIAPI
-PeiGetNextVariableName2 (
- IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This,
- IN OUT UINTN *VariableNameSize,
- IN OUT CHAR16 *VariableName,
- IN OUT EFI_GUID *VariableGuid
- )
-
-{
- return PeiGetNextVariableName (
- (EFI_PEI_SERVICES **) GetPeiServicesTablePointer (),
- VariableNameSize,
- VariableName,
- VariableGuid
- );
-}
-
diff --git a/IntelFrameworkModulePkg/Universal/VariablePei/Variable.h b/IntelFrameworkModulePkg/Universal/VariablePei/Variable.h
deleted file mode 100644
index 31c855d27b..0000000000
--- a/IntelFrameworkModulePkg/Universal/VariablePei/Variable.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/** @file
-
-Copyright (c) 2006 - 2007, 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.
-
-**/
-
-#ifndef _PEI_VARIABLE_H
-#define _PEI_VARIABLE_H
-
-#include <PiPei.h>
-#include <Ppi/ReadOnlyVariable.h>
-#include <Ppi/ReadOnlyVariable2.h>
-#include <Library/DebugLib.h>
-#include <Library/PeimEntryPoint.h>
-#include <Library/HobLib.h>
-#include <Library/PcdLib.h>
-#include <Library/BaseMemoryLib.h>
-#include <Library/PeiServicesTablePointerLib.h>
-#include <Guid/VariableFormat.h>
-
-typedef struct {
- VARIABLE_HEADER *CurrPtr;
- VARIABLE_HEADER *EndPtr;
- VARIABLE_HEADER *StartPtr;
-} VARIABLE_POINTER_TRACK;
-
-#define VARIABLE_INDEX_TABLE_VOLUME 122
-
-#define EFI_VARIABLE_INDEX_TABLE_GUID \
- { 0x8cfdb8c8, 0xd6b2, 0x40f3, { 0x8e, 0x97, 0x02, 0x30, 0x7c, 0xc9, 0x8b, 0x7c } }
-
-typedef struct {
- UINT16 Length;
- UINT16 GoneThrough;
- VARIABLE_HEADER *EndPtr;
- VARIABLE_HEADER *StartPtr;
- UINT16 Index[VARIABLE_INDEX_TABLE_VOLUME];
-} VARIABLE_INDEX_TABLE;
-
-//
-// Functions
-//
-
-EFI_STATUS
-EFIAPI
-PeiGetVariable (
- IN EFI_PEI_SERVICES **PeiServices,
- IN CHAR16 *VariableName,
- IN EFI_GUID * VendorGuid,
- OUT UINT32 *Attributes OPTIONAL,
- IN OUT UINTN *DataSize,
- OUT VOID *Data
- );
-
-EFI_STATUS
-EFIAPI
-PeiGetVariable2 (
- IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This,
- IN CONST CHAR16 *VariableName,
- IN CONST EFI_GUID *VariableGuid,
- OUT UINT32 *Attributes,
- IN OUT UINTN *DataSize,
- OUT VOID *Data
- );
-
-EFI_STATUS
-EFIAPI
-PeiGetNextVariableName2 (
- IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This,
- IN OUT UINTN *VariableNameSize,
- IN OUT CHAR16 *VariableName,
- IN OUT EFI_GUID *VariableGuid
- );
-
-EFI_STATUS
-EFIAPI
-PeiGetNextVariableName (
- IN EFI_PEI_SERVICES **PeiServices,
- IN OUT UINTN *VariableNameSize,
- IN OUT CHAR16 *VariableName,
- IN OUT EFI_GUID *VendorGuid
- );
-
-/**
- Get one variable by the index count.
-
- @param IndexTable The pointer to variable index table.
- @param Count The index count of variable in index table.
-
- @return The pointer to variable header indexed by count.
-
-**/
-VARIABLE_HEADER *
-GetVariableByIndex (
- IN VARIABLE_INDEX_TABLE *IndexTable,
- IN UINT32 Count
- );
-
-/**
- Record Variable in VariableIndex HOB.
-
- Record Variable in VariableIndex HOB and update the length of variable index table.
-
- @param IndexTable The pointer to variable index table.
- @param Variable The pointer to the variable that will be recorded.
-
- @retval VOID
-
-**/
-VOID
-VariableIndexTableUpdate (
- IN OUT VARIABLE_INDEX_TABLE *IndexTable,
- IN VARIABLE_HEADER *Variable
- );
-
-#endif // _PEI_VARIABLE_H
diff --git a/IntelFrameworkModulePkg/Universal/VariablePei/VariablePei.inf b/IntelFrameworkModulePkg/Universal/VariablePei/VariablePei.inf
deleted file mode 100644
index d4ced59c7d..0000000000
--- a/IntelFrameworkModulePkg/Universal/VariablePei/VariablePei.inf
+++ /dev/null
@@ -1,114 +0,0 @@
-#/** @file
-# Component description file for PeiVariable module.
-#
-# This module will produce EFI_PEI_READ_ONLY_VARIABLE_PPI and EFI_PEI_READ_ONLY_VARIABLE2_PPI
-# Framework PEIM to provide the Variable functionality.
-# Copyright (c) 2006 - 2009, 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.
-#
-#
-#**/
-
-################################################################################
-#
-# Defines Section - statements that will be processed to create a Makefile.
-#
-################################################################################
-[Defines]
- INF_VERSION = 0x00010005
- BASE_NAME = PeiVariable
- FILE_GUID = 34C8C28F-B61C-45a2-8F2E-89E46BECC63B
- MODULE_TYPE = PEIM
- VERSION_STRING = 1.0
- EFI_SPECIFICATION_VERSION = 0x00020000
- ENTRY_POINT = PeimInitializeVariableServices
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-# VALID_ARCHITECTURES = IA32 X64 IPF EBC
-#
-
-################################################################################
-#
-# Sources Section - list of files that are required for the build to succeed.
-#
-################################################################################
-
-[Sources.common]
- Variable.c
- Variable.h
-
-[Sources.Ia32]
- VariableWorker.c
-
-[Sources.X64]
- VariableWorker.c
-
-[Sources.IPF]
- Ipf/VariableWorker.c
-
-[Sources.EBC]
- VariableWorker.c
-
-
-################################################################################
-#
-# Package Dependency Section - list of Package files that are required for
-# this module.
-#
-################################################################################
-
-[Packages]
- MdeModulePkg/MdeModulePkg.dec
- MdePkg/MdePkg.dec
- IntelFrameworkPkg/IntelFrameworkPkg.dec
-
-
-################################################################################
-#
-# Library Class Section - list of Library Classes that are required for
-# this module.
-#
-################################################################################
-
-[LibraryClasses]
- BaseMemoryLib
- PcdLib
- HobLib
- PeimEntryPoint
- DebugLib
-
-
-################################################################################
-#
-# PPI C Name Section - list of PPI and PPI Notify C Names that this module
-# uses or produces.
-#
-################################################################################
-
-[Ppis]
- gEfiPeiReadOnlyVariablePpiGuid # PPI ALWAYS_PRODUCED
- gEfiPeiReadOnlyVariable2PpiGuid # PPI ALWAYS_PRODUCED
-
-[Guids]
- gEfiVariableGuid
-
-################################################################################
-#
-# Pcd DYNAMIC - list of PCDs that this module is coded for.
-#
-################################################################################
-
-[Pcd.common]
- gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase
- gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize
-
-[depex]
- TRUE
diff --git a/IntelFrameworkModulePkg/Universal/VariablePei/VariableWorker.c b/IntelFrameworkModulePkg/Universal/VariablePei/VariableWorker.c
deleted file mode 100644
index 6d620112ae..0000000000
--- a/IntelFrameworkModulePkg/Universal/VariablePei/VariableWorker.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/** @file
-
-Copyright (c) 2007, 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:
-
- VariableWorker.c
-
-Abstract:
-
- Framework PEIM to provide the Variable functionality
-
-**/
-
-#include <Variable.h>
-
-/**
- Get one variable by the index count.
-
- @param IndexTable The pointer to variable index table.
- @param Count The index count of variable in index table.
-
- @return The pointer to variable header indexed by count.
-
-**/
-VARIABLE_HEADER *
-GetVariableByIndex (
- IN VARIABLE_INDEX_TABLE *IndexTable,
- IN UINT32 Count
- )
-{
- return (VARIABLE_HEADER *) (UINTN) (IndexTable->Index[Count] + ((UINTN) IndexTable->StartPtr & 0xFFFF0000));
-}
-
-/**
- Record Variable in VariableIndex HOB.
-
- Record Variable in VariableIndex HOB and update the length of variable index table.
-
- @param IndexTable The pointer to variable index table.
- @param Variable The pointer to the variable that will be recorded.
-
- @retval VOID
-
-**/
-VOID
-VariableIndexTableUpdate (
- IN OUT VARIABLE_INDEX_TABLE *IndexTable,
- IN VARIABLE_HEADER *Variable
- )
-{
- IndexTable->Index[IndexTable->Length++] = (UINT16) (UINTN) Variable;
-
- return;
-}
-