#/** @file
#  This PEIM provides memory test PPI for memory test in PEI Phase.
#  
#  Copyright (c) 2006 - 2008, 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.
#  
#**/

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = BaseMemoryTestPei
  FILE_GUID                      = 736EB068-8C01-47c5-964B-1C57BD5D4D64
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = PeiBaseMemoryTestInit

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is for build only)
#

[Sources.common]
  BaseMemoryTest.c
  BaseMemoryTest.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  ReportStatusCodeLib
  PeimEntryPoint
  DebugLib
  PeiServicesLib

[Ppis]
  gPeiBaseMemoryTestPpiGuid                     # PPI ALWAYS_PRODUCED

[FixedPcd.common]
  gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueMemoryTestStarted
  gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueUncorrectableMemoryError

