Success to build first Nt32 module.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2753 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
klu2 2007-06-26 09:35:19 +00:00
parent 8693ca5d75
commit 869f8e34d2
39 changed files with 6951 additions and 750 deletions

View File

@ -22,6 +22,7 @@ Abstract:
#ifndef __WIN_NT_LIB_H__
#define __WIN_NT_LIB_H__
#include <WinNtThunk.h>
extern EFI_WIN_NT_THUNK_PROTOCOL *gWinNt;
#endif

View File

@ -0,0 +1,41 @@
/**@file
Common header file shared by all source files.
This file includes package header files, library classes and protocol, PPI & GUID definitions.
Copyright (c) 2007, Intel Corporation.
All rights reserved.
This software and associated documentation (if any) is furnished
under a license and may only be used or copied in accordance
with the terms of the license. Except as permitted by such
license, no part of this software or documentation may be
reproduced, stored in a retrieval system, or transmitted in any
form or by any means without the express written consent of
Intel Corporation.
**/
#ifndef __COMMON_HEADER_H_
#define __COMMON_HEADER_H_
//
// The package level header files this module uses
//
#include <Dxe.h>
#include <EdkDxe.h>
#include <WinNtDxe.h>
//
// The protocols, PPI and GUID defintions for this module
//
#include <Guid/StatusCodeDataTypeId.h>
//
// The Library classes this module consumes
//
#include <Library/OemHookStatusCodeLib.h>
#include <Library/DebugLib.h>
#include <Library/HobLib.h>
#include <Library/PrintLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/ReportStatusCodeLib.h>
#endif

View File

@ -0,0 +1,100 @@
#/** @file
# Memory Status Code Library for UEFI drivers
#
# Lib to provide memory journal status code reporting Routines
# Copyright (c) 2007, Intel Corporation.
#
# All rights reserved.
# This software and associated documentation (if any) is furnished
# under a license and may only be used or copied in accordance
# with the terms of the license. Except as permitted by such
# license, no part of this software or documentation may be
# reproduced, stored in a retrieval system, or transmitted in any
# form or by any means without the express written consent of
# Intel Corporation.
#
#
#**/
################################################################################
#
# Defines Section - statements that will be processed to create a Makefile.
#
################################################################################
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = DxeNt32OemHookStatusCodeLib
FILE_GUID = EF172A23-C7C5-47b7-B24E-D10DFE15540F
MODULE_TYPE = DXE_DRIVER
VERSION_STRING = 1.0
LIBRARY_CLASS = OemHookStatusCodeLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
EDK_RELEASE_VERSION = 0x00020000
EFI_SPECIFICATION_VERSION = 0x00020000
#
# The following information is for reference only and not required by the build tools.
#
# VALID_ARCHITECTURES = IA32
#
# HOB Guid C Name: gEfiWinNtThunkProtocolGuid Hob Type: GUID_EXTENSION
#
################################################################################
#
# Sources Section - list of files that are required for the build to succeed.
#
################################################################################
[Sources.common]
Nt32OemHookStatusCodeLib.c
CommonHeader.h
################################################################################
#
# Includes Section - list of Include locations that are required for
# this module.
#
################################################################################
[Includes]
$(WORKSPACE)/MdePkg/Include/Library
################################################################################
#
# Package Dependency Section - list of Package files that are required for
# this module.
#
################################################################################
[Packages]
Nt32Pkg/Nt32Pkg.dec
EdkModulePkg/EdkModulePkg.dec
MdePkg/MdePkg.dec
################################################################################
#
# Library Class Section - list of Library Classes that are required for
# this module.
#
################################################################################
[LibraryClasses]
ReportStatusCodeLib
BaseMemoryLib
PrintLib
HobLib
DebugLib
################################################################################
#
# Guid C Name Section - list of Guids that this module uses or produces.
#
################################################################################
[Guids]
gEfiStatusCodeSpecificDataGuid # ALWAYS_CONSUMED

View File

@ -0,0 +1,68 @@
<?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>DxeNt32OemHookStatusCodeLib</ModuleName>
<ModuleType>DXE_DRIVER</ModuleType>
<GuidValue>EF172A23-C7C5-47b7-B24E-D10DFE15540F</GuidValue>
<Version>1.0</Version>
<Abstract>Memory Status Code Library for UEFI drivers</Abstract>
<Description>Lib to provide memory journal status code reporting Routines</Description>
<Copyright>Copyright (c) 2007, Intel Corporation.</Copyright>
<License>All rights reserved.
This software and associated documentation (if any) is furnished
under a license and may only be used or copied in accordance
with the terms of the license. Except as permitted by such
license, no part of this software or documentation may be
reproduced, stored in a retrieval system, or transmitted in any
form or by any means without the express written consent of
Intel Corporation.</License>
<Specification>FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052</Specification>
</MsaHeader>
<ModuleDefinitions>
<SupportedArchitectures>IA32</SupportedArchitectures>
<BinaryModule>false</BinaryModule>
<OutputFileBasename>DxeNt32OemHookStatusCodeLib</OutputFileBasename>
</ModuleDefinitions>
<LibraryClassDefinitions>
<LibraryClass Usage="ALWAYS_PRODUCED" SupModuleList="DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER">
<Keyword>OemHookStatusCodeLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>DebugLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>HobLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>PrintLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>BaseMemoryLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>ReportStatusCodeLib</Keyword>
</LibraryClass>
</LibraryClassDefinitions>
<SourceFiles>
<Filename>Nt32OemHookStatusCodeLib.c</Filename>
</SourceFiles>
<PackageDependencies>
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
<Package PackageGuid="68169ab0-d41b-4009-9060-292c253ac43d"/>
<Package PackageGuid="0fb2aa2d-10d5-40a5-a9dc-060c12a4a3f3"/>
</PackageDependencies>
<Hobs>
<HobTypes HobGuidCName="gEfiWinNtThunkProtocolGuid" Usage="ALWAYS_CONSUMED">
<HobType>GUID_EXTENSION</HobType>
</HobTypes>
</Hobs>
<Guids>
<GuidCNames Usage="ALWAYS_CONSUMED">
<GuidCName>gEfiStatusCodeSpecificDataGuid</GuidCName>
</GuidCNames>
</Guids>
<Externs>
<Specification>EFI_SPECIFICATION_VERSION 0x00020000</Specification>
<Specification>EDK_RELEASE_VERSION 0x00020000</Specification>
</Externs>
</ModuleSurfaceArea>

View File

@ -0,0 +1,236 @@
/** @file
OEM hook status code library functions with no library constructor/destructor
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: Nt32OemHookStatusCodeLib.c
**/
//
// Include common header file for this module.
//
#include "CommonHeader.h"
//
// Cache of WinNtThunk protocol
//
STATIC
EFI_WIN_NT_THUNK_PROTOCOL *mWinNt;
//
// Cache of standard output handle .
//
STATIC
HANDLE mStdOut;
/**
Initialize OEM status code device .
@return Always return EFI_SUCCESS.
**/
EFI_STATUS
EFIAPI
OemHookStatusCodeInitialize (
VOID
)
{
EFI_HOB_GUID_TYPE *GuidHob;
//
// Retrieve WinNtThunkProtocol from GUID'ed HOB
//
GuidHob = GetFirstGuidHob (&gEfiWinNtThunkProtocolGuid);
ASSERT (GuidHob != NULL);
mWinNt = (EFI_WIN_NT_THUNK_PROTOCOL *)(*(UINTN *)(GET_GUID_HOB_DATA (GuidHob)));
ASSERT (mWinNt != NULL);
//
// Cache standard output handle.
//
mStdOut = mWinNt->GetStdHandle (STD_OUTPUT_HANDLE);
return EFI_SUCCESS;
}
/**
Report status code to OEM device.
@param CodeType Indicates the type of status code being reported. Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions" below.
@param Value Describes the current status of a hardware or software entity.
This included information about the class and subclass that is used to classify the entity
as well as an operation. For progress codes, the operation is the current activity.
For error codes, it is the exception. For debug codes, it is not defined at this time.
Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.
Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.
@param Instance The enumeration of a hardware or software entity within the system.
A system may contain multiple entities that match a class/subclass pairing.
The instance differentiates between them. An instance of 0 indicates that instance information is unavailable,
not meaningful, or not relevant. Valid instance numbers start with 1.
@param CallerId This optional parameter may be used to identify the caller.
This parameter allows the status code driver to apply different rules to different callers.
Type EFI_GUID is defined in InstallProtocolInterface() in the EFI 1.10 Specification.
@param Data This optional parameter may be used to pass additional data
@return The function always return EFI_SUCCESS.
**/
EFI_STATUS
EFIAPI
OemHookStatusCodeReport (
IN EFI_STATUS_CODE_TYPE CodeType,
IN EFI_STATUS_CODE_VALUE Value,
IN UINT32 Instance,
IN EFI_GUID *CallerId, OPTIONAL
IN EFI_STATUS_CODE_DATA *Data OPTIONAL
)
{
CHAR8 *Filename;
CHAR8 *Description;
CHAR8 *Format;
CHAR8 Buffer[EFI_STATUS_CODE_DATA_MAX_SIZE];
UINT32 ErrorLevel;
UINT32 LineNumber;
UINTN CharCount;
VA_LIST Marker;
EFI_DEBUG_INFO *DebugInfo;
Buffer[0] = '\0';
if (Data != NULL &&
ReportStatusCodeExtractAssertInfo (CodeType, Value, Data, &Filename, &Description, &LineNumber)) {
//
// Print ASSERT() information into output buffer.
//
CharCount = AsciiSPrint (
Buffer,
EFI_STATUS_CODE_DATA_MAX_SIZE,
"\n\rASSERT!: %a (%d): %a\n\r",
Filename,
LineNumber,
Description
);
//
// Callout to standard output.
//
mWinNt->WriteFile (
mStdOut,
Buffer,
CharCount,
&CharCount,
NULL
);
return EFI_SUCCESS;
} else if (Data != NULL &&
ReportStatusCodeExtractDebugInfo (Data, &ErrorLevel, &Marker, &Format)) {
//
// Print DEBUG() information into output buffer.
//
CharCount = AsciiVSPrint (
Buffer,
EFI_STATUS_CODE_DATA_MAX_SIZE,
Format,
Marker
);
} else if (Data != NULL &&
CompareGuid (&Data->Type, &gEfiStatusCodeSpecificDataGuid) &&
(CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_DEBUG_CODE) {
//
// Print specific data into output buffer.
//
DebugInfo = (EFI_DEBUG_INFO *) (Data + 1);
Marker = (VA_LIST) (DebugInfo + 1);
Format = (CHAR8 *) (((UINT64 *) Marker) + 12);
CharCount = AsciiVSPrint (Buffer, EFI_STATUS_CODE_DATA_MAX_SIZE, Format, Marker);
} else if ((CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_ERROR_CODE) {
//
// Print ERROR information into output buffer.
//
CharCount = AsciiSPrint (
Buffer,
EFI_STATUS_CODE_DATA_MAX_SIZE,
"ERROR: C%x:V%x I%x",
CodeType,
Value,
Instance
);
//
// Make sure we don't try to print values that weren't intended to be printed, especially NULL GUID pointers.
//
if (CallerId != NULL) {
CharCount += AsciiSPrint (
&Buffer[CharCount - 1],
(EFI_STATUS_CODE_DATA_MAX_SIZE - (sizeof (Buffer[0]) * CharCount)),
" %g",
CallerId
);
}
if (Data != NULL) {
CharCount += AsciiSPrint (
&Buffer[CharCount - 1],
(EFI_STATUS_CODE_DATA_MAX_SIZE - (sizeof (Buffer[0]) * CharCount)),
" %x",
Data
);
}
CharCount += AsciiSPrint (
&Buffer[CharCount - 1],
(EFI_STATUS_CODE_DATA_MAX_SIZE - (sizeof (Buffer[0]) * CharCount)),
"\n\r"
);
} else if ((CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_PROGRESS_CODE) {
CharCount = AsciiSPrint (
Buffer,
EFI_STATUS_CODE_DATA_MAX_SIZE,
"PROGRESS CODE: V%x I%x\n\r",
Value,
Instance
);
} else {
CharCount = AsciiSPrint (
Buffer,
EFI_STATUS_CODE_DATA_MAX_SIZE,
"Undefined: C%x:V%x I%x\n\r",
CodeType,
Value,
Instance
);
}
//
// Callout to standard output.
//
mWinNt->WriteFile (
mStdOut,
Buffer,
CharCount,
&CharCount,
NULL
);
return EFI_SUCCESS;
}

View File

@ -0,0 +1,34 @@
/**@file
Common header file shared by all source files.
This file includes package header files, library classes and protocol, PPI & GUID definitions.
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 __COMMON_HEADER_H_
#define __COMMON_HEADER_H_
//
// The package level header files this module uses
//
#include <PiDxe.h>
#include <WinNtDxe.h>
//
// The protocols, PPI and GUID defintions for this module
//
//
// The Library classes this module consumes
//
#include <Library/WinNtLib.h>
#include <Library/DebugLib.h>
#include <Library/HobLib.h>
#endif

View File

@ -0,0 +1,85 @@
#/** @file
# A library to produce the global variable 'gWinNt'
#
# This library contains a single global variable 'gWinNt' along with a constructor to initialize that global.
# 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.
#
#
#**/
################################################################################
#
# Defines Section - statements that will be processed to create a Makefile.
#
################################################################################
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = DxeWinNtLib
FILE_GUID = f6b5871d-5226-41b3-a569-3ff893fdc7bc
MODULE_TYPE = DXE_DRIVER
VERSION_STRING = 1.0
LIBRARY_CLASS = WinNtLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
EDK_RELEASE_VERSION = 0x00020000
EFI_SPECIFICATION_VERSION = 0x00020000
CONSTRUCTOR = WinNtLibConstructor
#
# The following information is for reference only and not required by the build tools.
#
# VALID_ARCHITECTURES = IA32
#
# HOB Guid C Name: gEfiWinNtThunkProtocolGuid Hob Type: GUID_EXTENSION
#
################################################################################
#
# Sources Section - list of files that are required for the build to succeed.
#
################################################################################
[Sources.common]
WinNtLib.c
CommonHeader.h
################################################################################
#
# Includes Section - list of Include locations that are required for
# this module.
#
################################################################################
[Includes]
$(WORKSPACE)/MdePkg/Include/Library
################################################################################
#
# Package Dependency Section - list of Package files that are required for
# this module.
#
################################################################################
[Packages]
Nt32Pkg/Nt32Pkg.dec
MdePkg/MdePkg.dec
################################################################################
#
# Library Class Section - list of Library Classes that are required for
# this module.
#
################################################################################
[LibraryClasses]
HobLib
DebugLib

View File

@ -0,0 +1,54 @@
<?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>DxeWinNtLib</ModuleName>
<ModuleType>DXE_DRIVER</ModuleType>
<GuidValue>f6b5871d-5226-41b3-a569-3ff893fdc7bc</GuidValue>
<Version>1.0</Version>
<Abstract>A library to produce the global variable 'gWinNt'</Abstract>
<Description>This library contains a single global variable 'gWinNt' along with a constructor to initialize that global.</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</SupportedArchitectures>
<BinaryModule>false</BinaryModule>
<OutputFileBasename>DxeWinNtLib</OutputFileBasename>
</ModuleDefinitions>
<LibraryClassDefinitions>
<LibraryClass Usage="ALWAYS_PRODUCED" SupModuleList="DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER">
<Keyword>WinNtLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>DebugLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>HobLib</Keyword>
</LibraryClass>
</LibraryClassDefinitions>
<SourceFiles>
<Filename>WinNtLib.c</Filename>
</SourceFiles>
<PackageDependencies>
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
<Package PackageGuid="0fb2aa2d-10d5-40a5-a9dc-060c12a4a3f3"/>
</PackageDependencies>
<Hobs>
<HobTypes HobGuidCName="gEfiWinNtThunkProtocolGuid" Usage="ALWAYS_CONSUMED">
<HobType>GUID_EXTENSION</HobType>
</HobTypes>
</Hobs>
<Externs>
<Specification>EFI_SPECIFICATION_VERSION 0x00020000</Specification>
<Specification>EDK_RELEASE_VERSION 0x00020000</Specification>
<Extern>
<Constructor>WinNtLibConstructor</Constructor>
</Extern>
</Externs>
</ModuleSurfaceArea>

View File

@ -0,0 +1,53 @@
/*++
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:
WinNtLib.c
Abstract:
WinNt Library
--*/
//
// Include common header file for this module.
//
#include "CommonHeader.h"
EFI_WIN_NT_THUNK_PROTOCOL *gWinNt;
EFI_STATUS
WinNtLibConstructor (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
/*++
Routine Description:
Arguments:
Returns:
--*/
{
EFI_HOB_GUID_TYPE *GuidHob;
GuidHob = GetFirstGuidHob (&gEfiWinNtThunkProtocolGuid);
ASSERT (GuidHob != NULL);
gWinNt = (EFI_WIN_NT_THUNK_PROTOCOL *)(*(UINTN *)(GET_GUID_HOB_DATA (GuidHob)));
ASSERT (gWinNt != NULL);
return EFI_SUCCESS;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,362 @@
/*++
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:
BdsConnect.c
Abstract:
BDS Lib functions which relate with connect the device
--*/
//
// Include common header file for this module.
//
#include "CommonHeader.h"
VOID
BdsLibConnectAll (
VOID
)
/*++
Routine Description:
This function will connect all the system driver to controller
first, and then special connect the default console, this make
sure all the system controller avialbe and the platform default
console connected.
Arguments:
None
Returns:
None
--*/
{
//
// Connect the platform console first
//
BdsLibConnectAllDefaultConsoles ();
//
// Generic way to connect all the drivers
//
BdsLibConnectAllDriversToAllControllers ();
//
// Here we have the assumption that we have already had
// platform default console
//
BdsLibConnectAllDefaultConsoles ();
}
VOID
BdsLibGenericConnectAll (
VOID
)
/*++
Routine Description:
This function will connect all the system drivers to all controllers
first, and then connect all the console devices the system current
have. After this we should get all the device work and console avariable
if the system have console device.
Arguments:
None
Returns:
None
--*/
{
//
// Most generic way to connect all the drivers
//
BdsLibConnectAllDriversToAllControllers ();
BdsLibConnectAllConsoles ();
}
EFI_STATUS
BdsLibConnectDevicePath (
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathToConnect
)
/*++
Routine Description:
This function will create all handles associate with every device
path node. If the handle associate with one device path node can not
be created success, then still give one chance to do the dispatch,
which load the missing drivers if possible.
Arguments:
DevicePathToConnect - The device path which will be connected, it can
be a multi-instance device path
Returns:
EFI_SUCCESS - All handles associate with every device path
node have been created
EFI_OUT_OF_RESOURCES - There is no resource to create new handles
EFI_NOT_FOUND - Create the handle associate with one device
path node failed
--*/
{
EFI_STATUS Status;
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
EFI_DEVICE_PATH_PROTOCOL *CopyOfDevicePath;
EFI_DEVICE_PATH_PROTOCOL *Instance;
EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath;
EFI_DEVICE_PATH_PROTOCOL *Next;
EFI_HANDLE Handle;
EFI_HANDLE PreviousHandle;
UINTN Size;
if (DevicePathToConnect == NULL) {
return EFI_SUCCESS;
}
DevicePath = DuplicateDevicePath (DevicePathToConnect);
CopyOfDevicePath = DevicePath;
if (DevicePath == NULL) {
return EFI_OUT_OF_RESOURCES;
}
do {
//
// The outer loop handles multi instance device paths.
// Only console variables contain multiple instance device paths.
//
// After this call DevicePath points to the next Instance
//
Instance = GetNextDevicePathInstance (&DevicePath, &Size);
Next = Instance;
while (!IsDevicePathEndType (Next)) {
Next = NextDevicePathNode (Next);
}
SetDevicePathEndNode (Next);
//
// Start the real work of connect with RemainingDevicePath
//
PreviousHandle = NULL;
do {
//
// Find the handle that best matches the Device Path. If it is only a
// partial match the remaining part of the device path is returned in
// RemainingDevicePath.
//
RemainingDevicePath = Instance;
Status = gBS->LocateDevicePath (&gEfiDevicePathProtocolGuid, &RemainingDevicePath, &Handle);
if (!EFI_ERROR (Status)) {
if (Handle == PreviousHandle) {
//
// If no forward progress is made try invoking the Dispatcher.
// A new FV may have been added to the system an new drivers
// may now be found.
// Status == EFI_SUCCESS means a driver was dispatched
// Status == EFI_NOT_FOUND means no new drivers were dispatched
//
Status = gDS->Dispatch ();
}
if (!EFI_ERROR (Status)) {
PreviousHandle = Handle;
//
// Connect all drivers that apply to Handle and RemainingDevicePath,
// the Recursive flag is FALSE so only one level will be expanded.
//
// Do not check the connect status here, if the connect controller fail,
// then still give the chance to do dispatch, because partial
// RemainingDevicepath may be in the new FV
//
// 1. If the connect fail, RemainingDevicepath and handle will not
// change, so next time will do the dispatch, then dispatch's status
// will take effect
// 2. If the connect success, the RemainingDevicepath and handle will
// change, then avoid the dispatch, we have chance to continue the
// next connection
//
gBS->ConnectController (Handle, NULL, RemainingDevicePath, FALSE);
}
}
//
// Loop until RemainingDevicePath is an empty device path
//
} while (!EFI_ERROR (Status) && !IsDevicePathEnd (RemainingDevicePath));
} while (DevicePath != NULL);
if (CopyOfDevicePath != NULL) {
FreePool (CopyOfDevicePath);
}
//
// All handle with DevicePath exists in the handle database
//
return Status;
}
EFI_STATUS
BdsLibConnectAllEfi (
VOID
)
/*++
Routine Description:
This function will connect all current system handles recursively. The
connection will finish until every handle's child handle created if it have.
Arguments:
None
Returns:
EFI_SUCCESS - All handles and it's child handle have been connected
EFI_STATUS - Return the status of gBS->LocateHandleBuffer().
--*/
{
EFI_STATUS Status;
UINTN HandleCount;
EFI_HANDLE *HandleBuffer;
UINTN Index;
Status = gBS->LocateHandleBuffer (
AllHandles,
NULL,
NULL,
&HandleCount,
&HandleBuffer
);
if (EFI_ERROR (Status)) {
return Status;
}
for (Index = 0; Index < HandleCount; Index++) {
Status = gBS->ConnectController (HandleBuffer[Index], NULL, NULL, TRUE);
}
FreePool (HandleBuffer);
return EFI_SUCCESS;
}
EFI_STATUS
BdsLibDisconnectAllEfi (
VOID
)
/*++
Routine Description:
This function will disconnect all current system handles. The disconnection
will finish until every handle have been disconnected.
Arguments:
None
Returns:
EFI_SUCCESS - All handles have been disconnected
EFI_STATUS - Return the status of gBS->LocateHandleBuffer().
--*/
{
EFI_STATUS Status;
UINTN HandleCount;
EFI_HANDLE *HandleBuffer;
UINTN Index;
//
// Disconnect all
//
Status = gBS->LocateHandleBuffer (
AllHandles,
NULL,
NULL,
&HandleCount,
&HandleBuffer
);
if (EFI_ERROR (Status)) {
return Status;
}
for (Index = 0; Index < HandleCount; Index++) {
Status = gBS->DisconnectController (HandleBuffer[Index], NULL, NULL);
}
FreePool (HandleBuffer);
return EFI_SUCCESS;
}
VOID
BdsLibConnectAllDriversToAllControllers (
VOID
)
/*++
Routine Description:
Connects all drivers to all controllers.
This function make sure all the current system driver will manage
the correspoinding controllers if have. And at the same time, make
sure all the system controllers have driver to manage it if have.
Arguments:
None
Returns:
None
--*/
{
EFI_STATUS Status;
do {
//
// Connect All EFI 1.10 drivers following EFI 1.10 algorithm
//
BdsLibConnectAllEfi ();
//
// Check to see if it's possible to dispatch an more DXE drivers.
// The BdsLibConnectAllEfi () may have made new DXE drivers show up.
// If anything is Dispatched Status == EFI_SUCCESS and we will try
// the connect again.
//
Status = gDS->Dispatch ();
} while (!EFI_ERROR (Status));
}

View File

@ -0,0 +1,399 @@
/*++
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:
BdsConsole.c
Abstract:
BDS Lib functions which contain all the code to connect console device
--*/
//
// Include common header file for this module.
//
#include "CommonHeader.h"
BOOLEAN
IsNvNeed (
IN CHAR16 *ConVarName
)
{
CHAR16 *Ptr;
Ptr = ConVarName;
//
// If the variable includes "Dev" at last, we consider
// it does not support NV attribute.
//
while (*Ptr) {
Ptr++;
}
if ((*(Ptr - 3) == 'D') && (*(Ptr - 2) == 'e') && (*(Ptr - 1) == 'v')) {
return FALSE;
} else {
return TRUE;
}
}
EFI_STATUS
BdsLibUpdateConsoleVariable (
IN CHAR16 *ConVarName,
IN EFI_DEVICE_PATH_PROTOCOL *CustomizedConDevicePath,
IN EFI_DEVICE_PATH_PROTOCOL *ExclusiveDevicePath
)
/*++
Routine Description:
This function update console variable based on ConVarName, it can
add or remove one specific console device path from the variable
Arguments:
ConVarName - Console related variable name, ConIn, ConOut, ErrOut.
CustomizedConDevicePath - The console device path which will be added to
the console variable ConVarName, this parameter
can not be multi-instance.
ExclusiveDevicePath - The console device path which will be removed
from the console variable ConVarName, this
parameter can not be multi-instance.
Returns:
EFI_UNSUPPORTED - Add or remove the same device path.
EFI_SUCCESS - Success add or remove the device path from
the console variable.
--*/
{
EFI_STATUS Status;
EFI_DEVICE_PATH_PROTOCOL *VarConsole;
UINTN DevicePathSize;
EFI_DEVICE_PATH_PROTOCOL *NewDevicePath;
EFI_DEVICE_PATH_PROTOCOL *TempNewDevicePath;
UINT32 Attributes;
VarConsole = NULL;
DevicePathSize = 0;
Status = EFI_UNSUPPORTED;
//
// Notes: check the device path point, here should check
// with compare memory
//
if (CustomizedConDevicePath == ExclusiveDevicePath) {
return EFI_UNSUPPORTED;
}
//
// Delete the ExclusiveDevicePath from current default console
//
VarConsole = BdsLibGetVariableAndSize (
ConVarName,
&gEfiGlobalVariableGuid,
&DevicePathSize
);
//
// Initialize NewDevicePath
//
NewDevicePath = VarConsole;
//
// If ExclusiveDevicePath is even the part of the instance in VarConsole, delete it.
// In the end, NewDevicePath is the final device path.
//
if (ExclusiveDevicePath != NULL && VarConsole != NULL) {
NewDevicePath = BdsLibDelPartMatchInstance (VarConsole, ExclusiveDevicePath);
}
//
// Try to append customized device path to NewDevicePath.
//
if (CustomizedConDevicePath != NULL) {
if (!BdsLibMatchDevicePaths (NewDevicePath, CustomizedConDevicePath)) {
//
// Check if there is part of CustomizedConDevicePath in NewDevicePath, delete it.
//
NewDevicePath = BdsLibDelPartMatchInstance (NewDevicePath, CustomizedConDevicePath);
//
// In the first check, the default console variable will be null,
// just append current customized device path
//
TempNewDevicePath = NewDevicePath;
NewDevicePath = AppendDevicePathInstance (NewDevicePath, CustomizedConDevicePath);
BdsLibSafeFreePool(TempNewDevicePath);
}
}
//
// The attribute for ConInDev, ConOutDev and ErrOutDev does not include NV.
//
if (IsNvNeed(ConVarName)) {
//
// ConVarName has NV attribute.
//
Attributes = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE;
} else {
//
// ConVarName does not have NV attribute.
//
Attributes = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS;
}
//
// Finally, Update the variable of the default console by NewDevicePath
//
gRT->SetVariable (
ConVarName,
&gEfiGlobalVariableGuid,
Attributes,
GetDevicePathSize (NewDevicePath),
NewDevicePath
);
if (VarConsole == NewDevicePath) {
BdsLibSafeFreePool(VarConsole);
} else {
BdsLibSafeFreePool(VarConsole);
BdsLibSafeFreePool(NewDevicePath);
}
return EFI_SUCCESS;
}
EFI_STATUS
BdsLibConnectConsoleVariable (
IN CHAR16 *ConVarName
)
/*++
Routine Description:
Connect the console device base on the variable ConVarName, if
device path of the ConVarName is multi-instance device path, if
anyone of the instances is connected success, then this function
will return success.
Arguments:
ConVarName - Console related variable name, ConIn, ConOut, ErrOut.
Returns:
EFI_NOT_FOUND - There is not any console devices connected success
EFI_SUCCESS - Success connect any one instance of the console
device path base on the variable ConVarName.
--*/
{
EFI_STATUS Status;
EFI_DEVICE_PATH_PROTOCOL *StartDevicePath;
UINTN VariableSize;
EFI_DEVICE_PATH_PROTOCOL *Instance;
EFI_DEVICE_PATH_PROTOCOL *Next;
EFI_DEVICE_PATH_PROTOCOL *CopyOfDevicePath;
UINTN Size;
BOOLEAN DeviceExist;
Status = EFI_SUCCESS;
DeviceExist = FALSE;
//
// Check if the console variable exist
//
StartDevicePath = BdsLibGetVariableAndSize (
ConVarName,
&gEfiGlobalVariableGuid,
&VariableSize
);
if (StartDevicePath == NULL) {
return EFI_UNSUPPORTED;
}
CopyOfDevicePath = StartDevicePath;
do {
//
// Check every instance of the console variable
//
Instance = GetNextDevicePathInstance (&CopyOfDevicePath, &Size);
Next = Instance;
while (!IsDevicePathEndType (Next)) {
Next = NextDevicePathNode (Next);
}
SetDevicePathEndNode (Next);
//
// Connect the instance device path
//
Status = BdsLibConnectDevicePath (Instance);
if (EFI_ERROR (Status)) {
//
// Delete the instance from the console varialbe
//
BdsLibUpdateConsoleVariable (ConVarName, NULL, Instance);
} else {
DeviceExist = TRUE;
}
BdsLibSafeFreePool(Instance);
} while (CopyOfDevicePath != NULL);
FreePool (StartDevicePath);
if (DeviceExist == FALSE) {
return EFI_NOT_FOUND;
}
return EFI_SUCCESS;
}
VOID
BdsLibConnectAllConsoles (
VOID
)
/*++
Routine Description:
This function will search every simpletxt devive in current system,
and make every simpletxt device as pertantial console device.
Arguments:
None
Returns:
None
--*/
{
EFI_STATUS Status;
UINTN Index;
EFI_DEVICE_PATH_PROTOCOL *ConDevicePath;
UINTN HandleCount;
EFI_HANDLE *HandleBuffer;
Index = 0;
HandleCount = 0;
HandleBuffer = NULL;
ConDevicePath = NULL;
//
// Update all the console varables
//
Status = gBS->LocateHandleBuffer (
ByProtocol,
&gEfiSimpleTextInProtocolGuid,
NULL,
&HandleCount,
&HandleBuffer
);
for (Index = 0; Index < HandleCount; Index++) {
Status = gBS->HandleProtocol (
HandleBuffer[Index],
&gEfiDevicePathProtocolGuid,
(VOID **) &ConDevicePath
);
BdsLibUpdateConsoleVariable (L"ConIn", ConDevicePath, NULL);
}
BdsLibSafeFreePool(HandleBuffer);
Status = gBS->LocateHandleBuffer (
ByProtocol,
&gEfiSimpleTextOutProtocolGuid,
NULL,
&HandleCount,
&HandleBuffer
);
for (Index = 0; Index < HandleCount; Index++) {
Status = gBS->HandleProtocol (
HandleBuffer[Index],
&gEfiDevicePathProtocolGuid,
(VOID **) &ConDevicePath
);
BdsLibUpdateConsoleVariable (L"ConOut", ConDevicePath, NULL);
BdsLibUpdateConsoleVariable (L"ErrOut", ConDevicePath, NULL);
}
BdsLibSafeFreePool(HandleBuffer);
//
// Connect all console variables
//
BdsLibConnectAllDefaultConsoles ();
}
EFI_STATUS
BdsLibConnectAllDefaultConsoles (
VOID
)
/*++
Routine Description:
This function will connect console device base on the console
device variable ConIn, ConOut and ErrOut.
Arguments:
None
Returns:
EFI_SUCCESS - At least one of the ConIn and ConOut device have
been connected success.
EFI_STATUS - Return the status of BdsLibConnectConsoleVariable ().
--*/
{
EFI_STATUS Status;
//
// Connect all default console variables
//
//
// Because possibly the platform is legacy free, in such case,
// ConIn devices (Serial Port and PS2 Keyboard ) does not exist,
// so we need not check the status.
//
BdsLibConnectConsoleVariable (L"ConIn");
//
// It seems impossible not to have any ConOut device on platform,
// so we check the status here.
//
Status = BdsLibConnectConsoleVariable (L"ConOut");
if (EFI_ERROR (Status)) {
return Status;
}
//
// Special treat the err out device, becaues the null
// err out var is legal.
//
BdsLibConnectConsoleVariable (L"ErrOut");
return EFI_SUCCESS;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,62 @@
/**@file
Common header file shared by all source files.
This file includes package header files, library classes and protocol, PPI & GUID definitions.
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 __COMMON_HEADER_H_
#define __COMMON_HEADER_H_
//
// The package level header files this module uses
//
#include <Dxe.h>
#include <EdkDxe.h>
#include <WinNtDxe.h>
//
// The protocols, PPI and GUID defintions for this module
//
#include <Protocol/SimpleTextIn.h>
#include <Protocol/SimpleTextOut.h>
#include <Protocol/LoadedImage.h>
#include <Guid/GenericPlatformVariable.h>
#include <Guid/ShellFile.h>
#include <Protocol/SimpleFileSystem.h>
#include <Protocol/BlockIo.h>
#include <Protocol/SimpleNetwork.h>
#include <Protocol/AcpiS3Save.h>
#include <Guid/GlobalVariable.h>
#include <Protocol/FormBrowser.h>
#include <Protocol/LegacyBios.h>
#include <Protocol/DriverBinding.h>
#include <Protocol/LoadFile.h>
#include <Protocol/DevicePath.h>
#include <Protocol/FirmwareVolume.h>
//
// The Library classes this module consumes
//
#include <Library/EdkGenericBdsLib.h>
#include <Library/BaseLib.h>
#include <Library/UefiLib.h>
#include <Library/DxeServicesTableLib.h>
#include <Library/DebugLib.h>
#include <Library/PrintLib.h>
#include <Library/HobLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiRuntimeServicesTableLib.h>
#include <Library/DevicePathLib.h>
#include <Library/PerformanceLib.h>
#include <Library/PeCoffLib.h>
#endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,139 @@
#/** @file
# EDK Generic BDS Common APIs Library Instance.
#
# The library instance provides common library routines help in
# performance measurement, device path debug print, boot device selections,
# boot device connection, console supports in BDS phase and boot from boot
# device.
# 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.
#
#
#**/
################################################################################
#
# Defines Section - statements that will be processed to create a Makefile.
#
################################################################################
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = EdkGenericBdsLib
FILE_GUID = 1ec995b2-d15b-44f6-abd2-050ea7dd37d2
MODULE_TYPE = DXE_DRIVER
VERSION_STRING = 1.0
LIBRARY_CLASS = EdkGenericBdsLib|DXE_DRIVER
EDK_RELEASE_VERSION = 0x00020000
EFI_SPECIFICATION_VERSION = 0x00020000
#
# The following information is for reference only and not required by the build tools.
#
# VALID_ARCHITECTURES = IA32
#
################################################################################
#
# Sources Section - list of files that are required for the build to succeed.
#
################################################################################
[Sources.common]
BdsMisc.c
Performance.c
Performance.h
DevicePath.c
BdsConnect.c
BdsConsole.c
BdsBoot.c
CommonHeader.h
################################################################################
#
# Includes Section - list of Include locations that are required for
# this module.
#
################################################################################
[Includes]
$(WORKSPACE)/MdePkg/Include/Library
################################################################################
#
# Package Dependency Section - list of Package files that are required for
# this module.
#
################################################################################
[Packages]
Nt32Pkg/Nt32Pkg.dec
EdkModulePkg/EdkModulePkg.dec
MdePkg/MdePkg.dec
################################################################################
#
# Library Class Section - list of Library Classes that are required for
# this module.
#
################################################################################
[LibraryClasses]
PeCoffLib
PerformanceLib
DevicePathLib
UefiRuntimeServicesTableLib
UefiBootServicesTableLib
MemoryAllocationLib
BaseMemoryLib
HobLib
PrintLib
DebugLib
DxeServicesTableLib
UefiLib
BaseLib
################################################################################
#
# Guid C Name Section - list of Guids that this module uses or produces.
#
################################################################################
[Guids]
gEfiGlobalVariableGuid # ALWAYS_CONSUMED
gEfiGenericPlatformVariableGuid # ALWAYS_CONSUMED
gEfiShellFileGuid # ALWAYS_CONSUMED
################################################################################
#
# Protocol C Name Section - list of Protocol and Protocol Notify C Names
# that this module uses or produces.
#
################################################################################
[Protocols]
gEfiSimpleFileSystemProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
gEfiLoadFileProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
gEfiFormBrowserProtocolGuid # PROTOCOL ALWAYS_CONSUMED
gEfiDriverBindingProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
gEfiBlockIoProtocolGuid # PROTOCOL ALWAYS_CONSUMED
gEfiLegacyBiosProtocolGuid # PROTOCOL ALWAYS_CONSUMED
gEfiCpuArchProtocolGuid # PROTOCOL ALWAYS_CONSUMED
gEfiDevicePathProtocolGuid # PROTOCOL ALWAYS_CONSUMED
gEfiSimpleNetworkProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
gEfiSimpleTextInProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
gEfiSimpleTextOutProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
gEfiAcpiS3SaveProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
gEfiFirmwareVolumeProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
gEfiLoadedImageProtocolGuid # PROTOCOL ALWAYS_CONSUMED

View File

@ -0,0 +1,144 @@
<?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>EdkGenericBdsLib</ModuleName>
<ModuleType>DXE_DRIVER</ModuleType>
<GuidValue>1ec995b2-d15b-44f6-abd2-050ea7dd37d2</GuidValue>
<Version>1.0</Version>
<Abstract>EDK Generic BDS Common APIs Library Instance.</Abstract>
<Description>The library instance provides common library routines help in
performance measurement, device path debug print, boot device selections,
boot device connection, console supports in BDS phase and boot from boot
device.</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</SupportedArchitectures>
<BinaryModule>false</BinaryModule>
<OutputFileBasename>EdkGenericBdsLib</OutputFileBasename>
</ModuleDefinitions>
<LibraryClassDefinitions>
<LibraryClass Usage="ALWAYS_PRODUCED" SupModuleList="DXE_DRIVER">
<Keyword>EdkGenericBdsLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>BaseLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>UefiLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>DxeServicesTableLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>DebugLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>PrintLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>HobLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>BaseMemoryLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>MemoryAllocationLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>UefiBootServicesTableLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>UefiRuntimeServicesTableLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>DevicePathLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>PerformanceLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>PeCoffLib</Keyword>
</LibraryClass>
</LibraryClassDefinitions>
<SourceFiles>
<Filename>BdsBoot.c</Filename>
<Filename>BdsConsole.c</Filename>
<Filename>BdsConnect.c</Filename>
<Filename>DevicePath.c</Filename>
<Filename>Performance.h</Filename>
<Filename>Performance.c</Filename>
<Filename>BdsMisc.c</Filename>
</SourceFiles>
<PackageDependencies>
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
<Package PackageGuid="68169ab0-d41b-4009-9060-292c253ac43d"/>
<Package PackageGuid="0fb2aa2d-10d5-40a5-a9dc-060c12a4a3f3"/>
</PackageDependencies>
<Protocols>
<Protocol Usage="ALWAYS_CONSUMED">
<ProtocolCName>gEfiLoadedImageProtocolGuid</ProtocolCName>
</Protocol>
<Protocol Usage="SOMETIMES_CONSUMED">
<ProtocolCName>gEfiFirmwareVolumeProtocolGuid</ProtocolCName>
</Protocol>
<Protocol Usage="SOMETIMES_CONSUMED">
<ProtocolCName>gEfiAcpiS3SaveProtocolGuid</ProtocolCName>
</Protocol>
<Protocol Usage="SOMETIMES_CONSUMED">
<ProtocolCName>gEfiSimpleTextOutProtocolGuid</ProtocolCName>
</Protocol>
<Protocol Usage="SOMETIMES_CONSUMED">
<ProtocolCName>gEfiSimpleTextInProtocolGuid</ProtocolCName>
</Protocol>
<Protocol Usage="SOMETIMES_CONSUMED">
<ProtocolCName>gEfiSimpleNetworkProtocolGuid</ProtocolCName>
</Protocol>
<Protocol Usage="ALWAYS_CONSUMED">
<ProtocolCName>gEfiDevicePathProtocolGuid</ProtocolCName>
</Protocol>
<Protocol Usage="ALWAYS_CONSUMED">
<ProtocolCName>gEfiCpuArchProtocolGuid</ProtocolCName>
</Protocol>
<Protocol Usage="ALWAYS_CONSUMED">
<ProtocolCName>gEfiLegacyBiosProtocolGuid</ProtocolCName>
</Protocol>
<Protocol Usage="ALWAYS_CONSUMED">
<ProtocolCName>gEfiBlockIoProtocolGuid</ProtocolCName>
</Protocol>
<Protocol Usage="SOMETIMES_CONSUMED">
<ProtocolCName>gEfiDriverBindingProtocolGuid</ProtocolCName>
</Protocol>
<Protocol Usage="ALWAYS_CONSUMED">
<ProtocolCName>gEfiFormBrowserProtocolGuid</ProtocolCName>
</Protocol>
<Protocol Usage="SOMETIMES_CONSUMED">
<ProtocolCName>gEfiLoadFileProtocolGuid</ProtocolCName>
</Protocol>
<Protocol Usage="SOMETIMES_CONSUMED">
<ProtocolCName>gEfiSimpleFileSystemProtocolGuid</ProtocolCName>
</Protocol>
</Protocols>
<Guids>
<GuidCNames Usage="ALWAYS_CONSUMED">
<GuidCName>gEfiShellFileGuid</GuidCName>
</GuidCNames>
<GuidCNames Usage="ALWAYS_CONSUMED">
<GuidCName>gEfiGenericPlatformVariableGuid</GuidCName>
</GuidCNames>
<GuidCNames Usage="ALWAYS_CONSUMED">
<GuidCName>gEfiGlobalVariableGuid</GuidCName>
</GuidCNames>
</Guids>
<Externs>
<Specification>EFI_SPECIFICATION_VERSION 0x00020000</Specification>
<Specification>EDK_RELEASE_VERSION 0x00020000</Specification>
</Externs>
</ModuleSurfaceArea>

View File

@ -0,0 +1,391 @@
/*++
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:
Performance.c
Abstract:
This file include the file which can help to get the system
performance, all the function will only include if the performance
switch is set.
--*/
//
// Include common header file for this module.
//
#include "CommonHeader.h"
#include "Performance.h"
STATIC
VOID
GetShortPdbFileName (
CHAR8 *PdbFileName,
CHAR8 *GaugeString
)
/*++
Routine Description:
Arguments:
Returns:
--*/
{
UINTN Index;
UINTN Index1;
UINTN StartIndex;
UINTN EndIndex;
if (PdbFileName == NULL) {
AsciiStrCpy (GaugeString, " ");
} else {
StartIndex = 0;
for (EndIndex = 0; PdbFileName[EndIndex] != 0; EndIndex++)
;
for (Index = 0; PdbFileName[Index] != 0; Index++) {
if (PdbFileName[Index] == '\\') {
StartIndex = Index + 1;
}
if (PdbFileName[Index] == '.') {
EndIndex = Index;
}
}
Index1 = 0;
for (Index = StartIndex; Index < EndIndex; Index++) {
GaugeString[Index1] = PdbFileName[Index];
Index1++;
if (Index1 == PERF_TOKEN_LENGTH - 1) {
break;
}
}
GaugeString[Index1] = 0;
}
return ;
}
STATIC
CHAR8 *
GetPdbPath (
VOID *ImageBase
)
/*++
Routine Description:
Located PDB path name in PE image
Arguments:
ImageBase - base of PE to search
Returns:
Pointer into image at offset of PDB file name if PDB file name is found,
Otherwise a pointer to an empty string.
--*/
{
PE_COFF_LOADER_IMAGE_CONTEXT ImageContext;
ZeroMem (&ImageContext, sizeof (ImageContext));
ImageContext.Handle = ImageBase;
ImageContext.ImageRead = PeCoffLoaderImageReadFromMemory;
PeCoffLoaderGetImageInfo (&ImageContext);
return ImageContext.PdbPointer;
}
STATIC
VOID
GetNameFromHandle (
IN EFI_HANDLE Handle,
OUT CHAR8 *GaugeString
)
{
EFI_STATUS Status;
EFI_LOADED_IMAGE_PROTOCOL *Image;
CHAR8 *PdbFileName;
EFI_DRIVER_BINDING_PROTOCOL *DriverBinding;
AsciiStrCpy (GaugeString, " ");
//
// Get handle name from image protocol
//
Status = gBS->HandleProtocol (
Handle,
&gEfiLoadedImageProtocolGuid,
&Image
);
if (EFI_ERROR (Status)) {
Status = gBS->OpenProtocol (
Handle,
&gEfiDriverBindingProtocolGuid,
(VOID **) &DriverBinding,
NULL,
NULL,
EFI_OPEN_PROTOCOL_GET_PROTOCOL
);
if (EFI_ERROR (Status)) {
return ;
}
//
// Get handle name from image protocol
//
Status = gBS->HandleProtocol (
DriverBinding->ImageHandle,
&gEfiLoadedImageProtocolGuid,
&Image
);
}
PdbFileName = GetPdbPath (Image->ImageBase);
if (PdbFileName != NULL) {
GetShortPdbFileName (PdbFileName, GaugeString);
}
return ;
}
VOID
WriteBootToOsPerformanceData (
VOID
)
/*++
Routine Description:
Allocates a block of memory and writes performance data of booting to OS into it.
Arguments:
None
Returns:
None
--*/
{
EFI_STATUS Status;
EFI_CPU_ARCH_PROTOCOL *Cpu;
EFI_PHYSICAL_ADDRESS mAcpiLowMemoryBase;
UINT32 mAcpiLowMemoryLength;
UINT32 LimitCount;
PERF_HEADER mPerfHeader;
PERF_DATA mPerfData;
EFI_HANDLE *Handles;
UINTN NoHandles;
CHAR8 GaugeString[PERF_TOKEN_LENGTH];
UINT8 *Ptr;
UINT32 mIndex;
UINT64 Ticker;
UINT64 Freq;
UINT32 Duration;
UINT64 CurrentTicker;
UINT64 TimerPeriod;
UINTN LogEntryKey;
CONST VOID *Handle;
CONST CHAR8 *Token;
CONST CHAR8 *Module;
UINT64 StartTicker;
UINT64 EndTicker;
//
// Retrive time stamp count as early as possilbe
//
Ticker = AsmReadTsc ();
//
// Allocate a block of memory that contain performance data to OS
//
mAcpiLowMemoryBase = 0xFFFFFFFF;
Status = gBS->AllocatePages (
AllocateMaxAddress,
EfiReservedMemoryType,
4,
&mAcpiLowMemoryBase
);
if (EFI_ERROR (Status)) {
return ;
}
mAcpiLowMemoryLength = EFI_PAGES_TO_SIZE(4);
Ptr = (UINT8 *) ((UINT32) mAcpiLowMemoryBase + sizeof (PERF_HEADER));
LimitCount = (mAcpiLowMemoryLength - sizeof (PERF_HEADER)) / sizeof (PERF_DATA);
//
// Initialize performance data structure
//
ZeroMem (&mPerfHeader, sizeof (PERF_HEADER));
//
// Get CPU frequency
//
Status = gBS->LocateProtocol (
&gEfiCpuArchProtocolGuid,
NULL,
&Cpu
);
if (EFI_ERROR (Status)) {
gBS->FreePages (mAcpiLowMemoryBase, 4);
return ;
}
//
// Get Cpu Frequency
//
Status = Cpu->GetTimerValue (Cpu, 0, &(CurrentTicker), &TimerPeriod);
if (EFI_ERROR (Status)) {
gBS->FreePages (mAcpiLowMemoryBase, 4);
return ;
}
Freq = DivU64x32 (1000000000000, (UINTN) TimerPeriod);
mPerfHeader.CpuFreq = Freq;
//
// Record BDS raw performance data
//
mPerfHeader.BDSRaw = Ticker;
//
// Put Detailed performance data into memory
//
Handles = NULL;
Status = gBS->LocateHandleBuffer (
AllHandles,
NULL,
NULL,
&NoHandles,
&Handles
);
if (EFI_ERROR (Status)) {
gBS->FreePages (mAcpiLowMemoryBase, 4);
return ;
}
//
// Get DXE drivers performance
//
for (mIndex = 0; mIndex < NoHandles; mIndex++) {
Ticker = 0;
LogEntryKey = 0;
while ((LogEntryKey = GetPerformanceMeasurement (
LogEntryKey,
&Handle,
&Token,
&Module,
&StartTicker,
&EndTicker)) != 0) {
if ((Handle == Handles[mIndex]) && (StartTicker < EndTicker)) {
Ticker += (EndTicker - StartTicker);
}
}
Duration = (UINT32) DivU64x32 (
Ticker,
(UINT32) Freq
);
if (Duration > 0) {
ZeroMem (&mPerfData, sizeof (PERF_DATA));
GetNameFromHandle (Handles[mIndex], GaugeString);
AsciiStrCpy (mPerfData.Token, GaugeString);
mPerfData.Duration = Duration;
CopyMem (Ptr, &mPerfData, sizeof (PERF_DATA));
Ptr += sizeof (PERF_DATA);
mPerfHeader.Count++;
if (mPerfHeader.Count == LimitCount) {
goto Done;
}
}
}
FreePool (Handles);
//
// Get inserted performance data
//
LogEntryKey = 0;
while ((LogEntryKey = GetPerformanceMeasurement (
LogEntryKey,
&Handle,
&Token,
&Module,
&StartTicker,
&EndTicker)) != 0) {
if ((Handle == NULL) && (StartTicker <= EndTicker)) {
ZeroMem (&mPerfData, sizeof (PERF_DATA));
AsciiStrnCpy (mPerfData.Token, Token, DXE_PERFORMANCE_STRING_SIZE);
mPerfData.Duration = (UINT32) DivU64x32 (
EndTicker - StartTicker,
(UINT32) Freq
);
CopyMem (Ptr, &mPerfData, sizeof (PERF_DATA));
Ptr += sizeof (PERF_DATA);
mPerfHeader.Count++;
if (mPerfHeader.Count == LimitCount) {
goto Done;
}
}
}
Done:
mPerfHeader.Signiture = 0x66726550;
//
// Put performance data to memory
//
CopyMem (
(UINT32 *) (UINT32) mAcpiLowMemoryBase,
&mPerfHeader,
sizeof (PERF_HEADER)
);
gRT->SetVariable (
L"PerfDataMemAddr",
&gEfiGenericPlatformVariableGuid,
EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
sizeof (UINT32),
(VOID *) &mAcpiLowMemoryBase
);
return ;
}

View File

@ -0,0 +1,60 @@
/*++
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:
Performance.h
Abstract:
This file included the performance relete function header and
definition.
--*/
#ifndef _PERF_H_
#define _PERF_H_
//
// Include common header file for this module.
//
#include "CommonHeader.h"
#define PERF_TOKEN_LENGTH 28
#define PERF_PEI_ENTRY_MAX_NUM 50
typedef struct {
CHAR8 Token[PERF_TOKEN_LENGTH];
UINT32 Duration;
} PERF_DATA;
typedef struct {
UINT64 BootToOs;
UINT64 S3Resume;
UINT32 S3EntryNum;
PERF_DATA S3Entry[PERF_PEI_ENTRY_MAX_NUM];
UINT64 CpuFreq;
UINT64 BDSRaw;
UINT32 Count;
UINT32 Signiture;
} PERF_HEADER;
VOID
WriteBootToOsPerformanceData (
VOID
);
VOID
ClearDebugRegisters (
VOID
);
#endif

View File

@ -0,0 +1,34 @@
/**@file
Common header file shared by all source files.
This file includes package header files, library classes and protocol, PPI & GUID definitions.
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 __COMMON_HEADER_H_
#define __COMMON_HEADER_H_
//
// The package level header files this module uses
//
#include <Peim.h>
#include <WinNtPeim.h>
//
// The protocols, PPI and GUID defintions for this module
//
#include <Ppi/NtPeiLoadFile.h>
//
// The Library classes this module consumes
//
#include <Library/PeCoffGetEntryPointLib.h>
#include <Library/PeiServicesLib.h>
#endif

View File

@ -0,0 +1,92 @@
#/** @file
# Component description file for the EdkNt32PeiPeCoffGetEntryPointLib library.
#
# PeCoffGetEntryPointLib library class for NT32 instance implemented by use NTPeiLoadFile PPI.
# 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.
#
#
#**/
################################################################################
#
# Defines Section - statements that will be processed to create a Makefile.
#
################################################################################
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = EdkNt32PeiPeCoffGetEntryPointLib
FILE_GUID = 434b164e-5fa6-4a3d-bc04-02da2a4eeb26
MODULE_TYPE = PEIM
VERSION_STRING = 1.0
LIBRARY_CLASS = PeCoffGetEntryPointLib|PEI_CORE PEIM
EDK_RELEASE_VERSION = 0x00020000
EFI_SPECIFICATION_VERSION = 0x00020000
#
# The following information is for reference only and not required by the build tools.
#
# VALID_ARCHITECTURES = IA32
#
################################################################################
#
# Sources Section - list of files that are required for the build to succeed.
#
################################################################################
[Sources.common]
PeCoffGetEntryPoint.c
CommonHeader.h
################################################################################
#
# Includes Section - list of Include locations that are required for
# this module.
#
################################################################################
[Includes]
$(WORKSPACE)/MdePkg/Include/Library
################################################################################
#
# Package Dependency Section - list of Package files that are required for
# this module.
#
################################################################################
[Packages]
Nt32Pkg/Nt32Pkg.dec
MdePkg/MdePkg.dec
################################################################################
#
# Library Class Section - list of Library Classes that are required for
# this module.
#
################################################################################
[LibraryClasses]
PeiServicesLib
################################################################################
#
# PPI C Name Section - list of PPI and PPI Notify C Names that this module
# uses or produces.
#
################################################################################
[Ppis]
gNtPeiLoadFilePpiGuid # PPI ALWAYS_CONSUMED

View File

@ -0,0 +1,48 @@
<?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>EdkNt32PeiPeCoffGetEntryPointLib</ModuleName>
<ModuleType>PEIM</ModuleType>
<GuidValue>434b164e-5fa6-4a3d-bc04-02da2a4eeb26</GuidValue>
<Version>1.0</Version>
<Abstract>Component description file for the EdkNt32PeiPeCoffGetEntryPointLib library.</Abstract>
<Description>PeCoffGetEntryPointLib library class for NT32 instance implemented by use NTPeiLoadFile 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</SupportedArchitectures>
<BinaryModule>false</BinaryModule>
<OutputFileBasename>EdkNt32PeiPeCoffGetEntryPointLib</OutputFileBasename>
</ModuleDefinitions>
<LibraryClassDefinitions>
<LibraryClass Usage="ALWAYS_PRODUCED" SupModuleList="PEI_CORE PEIM">
<Keyword>PeCoffGetEntryPointLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>PeiServicesLib</Keyword>
</LibraryClass>
</LibraryClassDefinitions>
<SourceFiles>
<Filename>PeCoffGetEntryPoint.c</Filename>
</SourceFiles>
<PackageDependencies>
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
<Package PackageGuid="0fb2aa2d-10d5-40a5-a9dc-060c12a4a3f3"/>
</PackageDependencies>
<PPIs>
<Ppi Usage="ALWAYS_CONSUMED">
<PpiCName>gNtPeiLoadFilePpiGuid</PpiCName>
</Ppi>
</PPIs>
<Externs>
<Specification>EFI_SPECIFICATION_VERSION 0x00020000</Specification>
<Specification>EDK_RELEASE_VERSION 0x00020000</Specification>
</Externs>
</ModuleSurfaceArea>

View File

@ -0,0 +1,118 @@
/*++
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:
PeCoffGetEntryPoint.c
Abstract:
Tiano PE/COFF loader
Revision History
--*/
//
// Include common header file for this module.
//
#include "CommonHeader.h"
RETURN_STATUS
EFIAPI
PeCoffLoaderGetEntryPoint (
IN VOID *Pe32Data,
IN OUT VOID **EntryPoint
)
/*++
Routine Description:
Loads a PE/COFF image into memory, this is not follow the original purpose of
PeCoffGetEntryPoint library class. But it's ok that Unix package not run on a real
platform and this is for source level debug.
Arguments:
Pe32Data - Pointer to a PE/COFF Image
EntryPoint - Pointer to the entry point of the PE/COFF image
Returns:
EFI_SUCCESS if the EntryPoint was returned
EFI_INVALID_PARAMETER if the EntryPoint could not be found from Pe32Data
--*/
{
EFI_STATUS Status;
EFI_PEI_PPI_DESCRIPTOR *PpiDescriptor;
NT_PEI_LOAD_FILE_PPI *PeiNtService;
EFI_PHYSICAL_ADDRESS ImageAddress;
UINT64 ImageSize;
EFI_PHYSICAL_ADDRESS ImageEntryPoint;
Status = PeiServicesLocatePpi (
&gNtPeiLoadFilePpiGuid,
0,
&PpiDescriptor,
&PeiNtService
);
if (EFI_ERROR (Status)) {
return Status;
}
Status = PeiNtService->PeiLoadFileService (
Pe32Data,
&ImageAddress,
&ImageSize,
&ImageEntryPoint
);
*EntryPoint = (VOID*)(UINTN)ImageEntryPoint;
return Status;
}
/**
Returns the machine type of PE/COFF image.
This is copied from MDE BasePeCoffGetEntryPointLib, the code should be sync with it.
The reason is NT32 package needs to load the image to memory to support source
level debug.
@param Image Pointer to a PE/COFF header
@return Machine type or zero if not a valid iamge
**/
UINT16
EFIAPI
PeCoffLoaderGetMachineType (
IN VOID *Pe32Data
)
{
EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION Hdr;
EFI_IMAGE_DOS_HEADER *DosHdr;
DosHdr = (EFI_IMAGE_DOS_HEADER *)Pe32Data;
if (DosHdr->e_magic == EFI_IMAGE_DOS_SIGNATURE) {
Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)((UINTN)Pe32Data + DosHdr->e_lfanew);
} else {
Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)((UINTN)Pe32Data);
}
if (Hdr.Pe32->Signature == EFI_IMAGE_NT_SIGNATURE) {
return Hdr.Pe32->FileHeader.Machine;
}
return 0x0000;
}

View File

@ -0,0 +1,33 @@
/**@file
Common header file shared by all source files.
This file includes package header files, library classes and protocol, PPI & GUID definitions.
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 __COMMON_HEADER_H_
#define __COMMON_HEADER_H_
//
// The package level header files this module uses
//
#include <Peim.h>
#include <EdkPeim.h>
//
// The protocols, PPI and GUID defintions for this module
//
#include <Guid/PeiPeCoffLoader.h>
//
// The Library classes this module consumes
//
#include <Library/EdkPeCoffLoaderLib.h>
#endif

View File

@ -0,0 +1,57 @@
/*++
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:
TianoPeCoffLoader.c
Abstract:
Wrap the Base PE/COFF loader with the PE COFF Protocol
--*/
//
// Include common header file for this module.
//
#include "CommonHeader.h"
EFI_PEI_PE_COFF_LOADER_PROTOCOL *mPeiEfiPeiPeCoffLoader;
EFI_STATUS
EFIAPI
PeCoffLoaderConstructor (
IN EFI_FFS_FILE_HEADER *FfsHeader,
IN EFI_PEI_SERVICES **PeiServices
)
{
EFI_STATUS Status;
Status = (*PeiServices)->LocatePpi (
PeiServices,
&gEfiPeiPeCoffLoaderGuid,
0,
NULL,
&mPeiEfiPeiPeCoffLoader
);
return Status;
}
EFI_PEI_PE_COFF_LOADER_PROTOCOL *
EFIAPI
GetPeCoffLoaderProtocol (
)
{
return mPeiEfiPeiPeCoffLoader;
}

View File

@ -0,0 +1,81 @@
#/** @file
# Component description file for the Nt32PeCoffLoaderLib library.
#
# EdkPeCoffLoaderLib library class for NT32 instance implemented by PeiPeCoffLoader PPI.
# 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.
#
#
#**/
################################################################################
#
# Defines Section - statements that will be processed to create a Makefile.
#
################################################################################
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = Nt32PeCoffLoaderLib
FILE_GUID = 3c5702f2-9b17-4273-b60c-b96e6cd13066
MODULE_TYPE = PEIM
VERSION_STRING = 1.0
LIBRARY_CLASS = EdkPeCoffLoaderLib|DXE_CORE PEIM
EDK_RELEASE_VERSION = 0x00020000
EFI_SPECIFICATION_VERSION = 0x00020000
CONSTRUCTOR = PeCoffLoaderConstructor
#
# The following information is for reference only and not required by the build tools.
#
# VALID_ARCHITECTURES = IA32
#
################################################################################
#
# Sources Section - list of files that are required for the build to succeed.
#
################################################################################
[Sources.common]
Nt32PeCoffLoader.c
CommonHeader.h
################################################################################
#
# Includes Section - list of Include locations that are required for
# this module.
#
################################################################################
[Includes]
################################################################################
#
# Package Dependency Section - list of Package files that are required for
# this module.
#
################################################################################
[Packages]
EdkModulePkg/EdkModulePkg.dec
MdePkg/MdePkg.dec
################################################################################
#
# PPI C Name Section - list of PPI and PPI Notify C Names that this module
# uses or produces.
#
################################################################################
[Ppis]
gEfiPeiPeCoffLoaderGuid # PPI ALWAYS_CONSUMED

View File

@ -0,0 +1,48 @@
<?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>Nt32PeCoffLoaderLib</ModuleName>
<ModuleType>PEIM</ModuleType>
<GuidValue>3c5702f2-9b17-4273-b60c-b96e6cd13066</GuidValue>
<Version>1.0</Version>
<Abstract>Component description file for the Nt32PeCoffLoaderLib library.</Abstract>
<Description>EdkPeCoffLoaderLib library class for NT32 instance implemented by PeiPeCoffLoader 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</SupportedArchitectures>
<BinaryModule>false</BinaryModule>
<OutputFileBasename>Nt32PeCoffLoaderLib</OutputFileBasename>
</ModuleDefinitions>
<LibraryClassDefinitions>
<LibraryClass Usage="ALWAYS_PRODUCED" SupModuleList="DXE_CORE PEIM">
<Keyword>EdkPeCoffLoaderLib</Keyword>
</LibraryClass>
</LibraryClassDefinitions>
<SourceFiles>
<Filename>Nt32PeCoffLoader.c</Filename>
</SourceFiles>
<PackageDependencies>
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
<Package PackageGuid="68169ab0-d41b-4009-9060-292c253ac43d"/>
</PackageDependencies>
<PPIs>
<Ppi Usage="ALWAYS_CONSUMED">
<PpiCName>gEfiPeiPeCoffLoaderGuid</PpiCName>
</Ppi>
</PPIs>
<Externs>
<Specification>EFI_SPECIFICATION_VERSION 0x00020000</Specification>
<Specification>EDK_RELEASE_VERSION 0x00020000</Specification>
<Extern>
<Constructor>PeCoffLoaderConstructor</Constructor>
</Extern>
</Externs>
</ModuleSurfaceArea>

View File

@ -0,0 +1,42 @@
/**@file
Common header file shared by all source files.
This file includes package header files, library classes and protocol, PPI & GUID definitions.
Copyright (c) 2007, Intel Corporation.
All rights reserved.
This software and associated documentation (if any) is furnished
under a license and may only be used or copied in accordance
with the terms of the license. Except as permitted by such
license, no part of this software or documentation may be
reproduced, stored in a retrieval system, or transmitted in any
form or by any means without the express written consent of
Intel Corporation.
**/
#ifndef __COMMON_HEADER_H_
#define __COMMON_HEADER_H_
//
// The package level header files this module uses
//
#include <Peim.h>
#include <EdkPeim.h>
#include <WinNtPeim.h>
//
// The protocols, PPI and GUID defintions for this module
//
#include <Guid/StatusCodeDataTypeId.h>
#include <Ppi/NtThunk.h>
//
// The Library classes this module consumes
//
#include <Library/OemHookStatusCodeLib.h>
#include <Library/DebugLib.h>
#include <Library/PrintLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/ReportStatusCodeLib.h>
#include <Library/PeiServicesLib.h>
#endif

View File

@ -0,0 +1,245 @@
/** @file
OEM hook status code library functions with no library constructor/destructor
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: Nt32OemHookStatusCodeLib.c
**/
//
// Include common header file for this module.
//
#include "CommonHeader.h"
//
// Cache of WinNtThunk protocol
//
STATIC
EFI_WIN_NT_THUNK_PROTOCOL *mWinNt;
//
// Cache of standard output handle .
//
STATIC
HANDLE mStdOut;
/**
Initialize OEM status code device .
@return Always return EFI_SUCCESS.
**/
EFI_STATUS
EFIAPI
OemHookStatusCodeInitialize (
VOID
)
{
PEI_NT_THUNK_PPI *NtThunkPpi;
EFI_STATUS Status;
//
// Locate NtThunkPpi for retrieving standard output handle
//
Status = PeiServicesLocatePpi (
&gPeiNtThunkPpiGuid,
0,
NULL,
(VOID **) &NtThunkPpi
);
ASSERT_EFI_ERROR (Status);
mWinNt = (EFI_WIN_NT_THUNK_PROTOCOL *) NtThunkPpi->NtThunk ();
//
// Cache standard output handle.
//
mStdOut = mWinNt->GetStdHandle (STD_OUTPUT_HANDLE);
return EFI_SUCCESS;
}
/**
Report status code to OEM device.
@param CodeType Indicates the type of status code being reported. Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions" below.
@param Value Describes the current status of a hardware or software entity.
This included information about the class and subclass that is used to classify the entity
as well as an operation. For progress codes, the operation is the current activity.
For error codes, it is the exception. For debug codes, it is not defined at this time.
Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.
Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.
@param Instance The enumeration of a hardware or software entity within the system.
A system may contain multiple entities that match a class/subclass pairing.
The instance differentiates between them. An instance of 0 indicates that instance information is unavailable,
not meaningful, or not relevant. Valid instance numbers start with 1.
@param CallerId This optional parameter may be used to identify the caller.
This parameter allows the status code driver to apply different rules to different callers.
Type EFI_GUID is defined in InstallProtocolInterface() in the EFI 1.10 Specification.
@param Data This optional parameter may be used to pass additional data
@return The function always return EFI_SUCCESS.
**/
EFI_STATUS
EFIAPI
OemHookStatusCodeReport (
IN EFI_STATUS_CODE_TYPE CodeType,
IN EFI_STATUS_CODE_VALUE Value,
IN UINT32 Instance,
IN EFI_GUID *CallerId, OPTIONAL
IN EFI_STATUS_CODE_DATA *Data OPTIONAL
)
{
CHAR8 *Filename;
CHAR8 *Description;
CHAR8 *Format;
CHAR8 Buffer[EFI_STATUS_CODE_DATA_MAX_SIZE];
UINT32 ErrorLevel;
UINT32 LineNumber;
UINTN CharCount;
VA_LIST Marker;
EFI_DEBUG_INFO *DebugInfo;
Buffer[0] = '\0';
if (Data != NULL &&
ReportStatusCodeExtractAssertInfo (CodeType, Value, Data, &Filename, &Description, &LineNumber)) {
//
// Print ASSERT() information into output buffer.
//
CharCount = AsciiSPrint (
Buffer,
EFI_STATUS_CODE_DATA_MAX_SIZE,
"\n\rASSERT!: %a (%d): %a\n\r",
Filename,
LineNumber,
Description
);
//
// Callout to standard output.
//
mWinNt->WriteFile (
mStdOut,
Buffer,
CharCount,
&CharCount,
NULL
);
return EFI_SUCCESS;
} else if (Data != NULL &&
ReportStatusCodeExtractDebugInfo (Data, &ErrorLevel, &Marker, &Format)) {
//
// Print DEBUG() information into output buffer.
//
CharCount = AsciiVSPrint (
Buffer,
EFI_STATUS_CODE_DATA_MAX_SIZE,
Format,
Marker
);
} else if (Data != NULL &&
CompareGuid (&Data->Type, &gEfiStatusCodeSpecificDataGuid) &&
(CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_DEBUG_CODE) {
//
// Print specific data into output buffer.
//
DebugInfo = (EFI_DEBUG_INFO *) (Data + 1);
Marker = (VA_LIST) (DebugInfo + 1);
Format = (CHAR8 *) (((UINT64 *) Marker) + 12);
CharCount = AsciiVSPrint (Buffer, EFI_STATUS_CODE_DATA_MAX_SIZE, Format, Marker);
} else if ((CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_ERROR_CODE) {
//
// Print ERROR information into output buffer.
//
CharCount = AsciiSPrint (
Buffer,
EFI_STATUS_CODE_DATA_MAX_SIZE,
"ERROR: C%x:V%x I%x",
CodeType,
Value,
Instance
);
//
// Make sure we don't try to print values that weren't intended to be printed, especially NULL GUID pointers.
//
if (CallerId != NULL) {
CharCount += AsciiSPrint (
&Buffer[CharCount - 1],
(EFI_STATUS_CODE_DATA_MAX_SIZE - (sizeof (Buffer[0]) * CharCount)),
" %g",
CallerId
);
}
if (Data != NULL) {
CharCount += AsciiSPrint (
&Buffer[CharCount - 1],
(EFI_STATUS_CODE_DATA_MAX_SIZE - (sizeof (Buffer[0]) * CharCount)),
" %x",
Data
);
}
CharCount += AsciiSPrint (
&Buffer[CharCount - 1],
(EFI_STATUS_CODE_DATA_MAX_SIZE - (sizeof (Buffer[0]) * CharCount)),
"\n\r"
);
} else if ((CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_PROGRESS_CODE) {
CharCount = AsciiSPrint (
Buffer,
EFI_STATUS_CODE_DATA_MAX_SIZE,
"PROGRESS CODE: V%x I%x\n\r",
Value,
Instance
);
} else {
CharCount = AsciiSPrint (
Buffer,
EFI_STATUS_CODE_DATA_MAX_SIZE,
"Undefined: C%x:V%x I%x\n\r",
CodeType,
Value,
Instance
);
}
//
// Callout to standard output.
//
mWinNt->WriteFile (
mStdOut,
Buffer,
CharCount,
&CharCount,
NULL
);
return EFI_SUCCESS;
}

View File

@ -0,0 +1,109 @@
#/** @file
# Memory Status Code Library for UEFI drivers
#
# Lib to provide memory journal status code reporting Routines
# Copyright (c) 2007, Intel Corporation.
#
# All rights reserved.
# This software and associated documentation (if any) is furnished
# under a license and may only be used or copied in accordance
# with the terms of the license. Except as permitted by such
# license, no part of this software or documentation may be
# reproduced, stored in a retrieval system, or transmitted in any
# form or by any means without the express written consent of
# Intel Corporation.
#
#
#**/
################################################################################
#
# Defines Section - statements that will be processed to create a Makefile.
#
################################################################################
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = PeiNt32OemHookStatusCodeLib
FILE_GUID = 0C2070F9-02A7-4e8e-B584-84EA922363FB
MODULE_TYPE = PEIM
VERSION_STRING = 1.0
LIBRARY_CLASS = OemHookStatusCodeLib|PEIM
EDK_RELEASE_VERSION = 0x00020000
EFI_SPECIFICATION_VERSION = 0x00020000
#
# The following information is for reference only and not required by the build tools.
#
# VALID_ARCHITECTURES = IA32
#
################################################################################
#
# Sources Section - list of files that are required for the build to succeed.
#
################################################################################
[Sources.common]
Nt32OemHookStatusCodeLib.c
CommonHeader.h
################################################################################
#
# Includes Section - list of Include locations that are required for
# this module.
#
################################################################################
[Includes]
$(WORKSPACE)/MdePkg/Include/Library
################################################################################
#
# Package Dependency Section - list of Package files that are required for
# this module.
#
################################################################################
[Packages]
Nt32Pkg/Nt32Pkg.dec
EdkModulePkg/EdkModulePkg.dec
MdePkg/MdePkg.dec
################################################################################
#
# Library Class Section - list of Library Classes that are required for
# this module.
#
################################################################################
[LibraryClasses]
PeiServicesLib
ReportStatusCodeLib
BaseMemoryLib
PrintLib
DebugLib
################################################################################
#
# Guid C Name Section - list of Guids that this module uses or produces.
#
################################################################################
[Guids]
gEfiStatusCodeSpecificDataGuid # SOMETIMES_CONSUMED
################################################################################
#
# PPI C Name Section - list of PPI and PPI Notify C Names that this module
# uses or produces.
#
################################################################################
[Ppis]
gPeiNtThunkPpiGuid # PPI ALWAYS_CONSUMED

View File

@ -0,0 +1,68 @@
<?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>PeiNt32OemHookStatusCodeLib</ModuleName>
<ModuleType>PEIM</ModuleType>
<GuidValue>0C2070F9-02A7-4e8e-B584-84EA922363FB</GuidValue>
<Version>1.0</Version>
<Abstract>Memory Status Code Library for UEFI drivers</Abstract>
<Description>Lib to provide memory journal status code reporting Routines</Description>
<Copyright>Copyright (c) 2007, Intel Corporation.</Copyright>
<License>All rights reserved.
This software and associated documentation (if any) is furnished
under a license and may only be used or copied in accordance
with the terms of the license. Except as permitted by such
license, no part of this software or documentation may be
reproduced, stored in a retrieval system, or transmitted in any
form or by any means without the express written consent of
Intel Corporation.</License>
<Specification>FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052</Specification>
</MsaHeader>
<ModuleDefinitions>
<SupportedArchitectures>IA32</SupportedArchitectures>
<BinaryModule>false</BinaryModule>
<OutputFileBasename>PeiNt32OemHookStatusCodeLib</OutputFileBasename>
</ModuleDefinitions>
<LibraryClassDefinitions>
<LibraryClass Usage="ALWAYS_PRODUCED" SupModuleList="PEIM">
<Keyword>OemHookStatusCodeLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>DebugLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>PrintLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>BaseMemoryLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>ReportStatusCodeLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>PeiServicesLib</Keyword>
</LibraryClass>
</LibraryClassDefinitions>
<SourceFiles>
<Filename>Nt32OemHookStatusCodeLib.c</Filename>
</SourceFiles>
<PackageDependencies>
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
<Package PackageGuid="68169ab0-d41b-4009-9060-292c253ac43d"/>
<Package PackageGuid="0fb2aa2d-10d5-40a5-a9dc-060c12a4a3f3"/>
</PackageDependencies>
<PPIs>
<Ppi Usage="ALWAYS_CONSUMED">
<PpiCName>gPeiNtThunkPpiGuid</PpiCName>
</Ppi>
</PPIs>
<Guids>
<GuidCNames Usage="SOMETIMES_CONSUMED">
<GuidCName>gEfiStatusCodeSpecificDataGuid</GuidCName>
</GuidCNames>
</Guids>
<Externs>
<Specification>EFI_SPECIFICATION_VERSION 0x00020000</Specification>
<Specification>EDK_RELEASE_VERSION 0x00020000</Specification>
</Externs>
</ModuleSurfaceArea>

View File

@ -51,66 +51,66 @@
#
################################################################################
[LibraryClass.IA32.DXE_CORE]
TimerLib|$(WORKSPACE)\MdePkg\Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
[LibraryClasses.IA32.DXE_CORE]
TimerLib|$(WORKSPACE)\MdePkg\Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf
EdkPeCoffLoaderLib|$(WORKSPACE)\Nt32Pkg\Library/Nt32PeCoffLoaderLib/Nt32PeCoffLoaderLib.inf
[LibraryClass.IA32]
[LibraryClasses.IA32]
IoLib|$(WORKSPACE)\MdePkg\Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
[LibraryClass.IA32.DXE_SAL_DRIVER]
TimerLib|$(WORKSPACE)\MdePkg\Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
[LibraryClasses.IA32.DXE_SAL_DRIVER]
TimerLib|$(WORKSPACE)\MdePkg\Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf
EdkFvbServiceLib|$(WORKSPACE)\MdeModulePkg\Library/EdkFvbServiceLib/EdkFvbServiceLib.inf
OemHookStatusCodeLib|$(WORKSPACE)\Nt32Pkg\Library/DxeNt32OemHookStatusCodeLib/DxeNt32OemHookStatusCodeLib.inf
[LibraryClass.IA32.DXE_SMM_DRIVER]
[LibraryClasses.IA32.DXE_SMM_DRIVER]
WinNtLib|$(WORKSPACE)\Nt32Pkg\Library/DxeWinNtLib/DxeWinNtLib.inf
EdkFvbServiceLib|$(WORKSPACE)\MdeModulePkg\Library/EdkFvbServiceLib/EdkFvbServiceLib.inf
OemHookStatusCodeLib|$(WORKSPACE)\Nt32Pkg\Library/DxeNt32OemHookStatusCodeLib/DxeNt32OemHookStatusCodeLib.inf
[LibraryClass.IA32.PEIM]
TimerLib|$(WORKSPACE)\MdePkg\Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
[LibraryClasses.IA32.PEIM]
TimerLib|$(WORKSPACE)\MdePkg\Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf
EdkPeCoffLoaderLib|$(WORKSPACE)\Nt32Pkg\Library/Nt32PeCoffLoaderLib/Nt32PeCoffLoaderLib.inf
PeiServicesTablePointerLib|$(WORKSPACE)\MdePkg\Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointerLibMm7.inf
OemHookStatusCodeLib|$(WORKSPACE)\Nt32Pkg\Library/PeiNt32OemHookStatusCodeLib/PeiNt32OemHookStatusCodeLib.inf
PeCoffGetEntryPointLib|$(WORKSPACE)\Nt32Pkg\Library/EdkNt32PeiPeCoffGetEntryPointLib/EdkNt32PeiPeCoffGetEntryPointLib.inf
[LibraryClass.IA32.PEI_CORE]
TimerLib|$(WORKSPACE)\MdePkg\Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
[LibraryClasses.IA32.PEI_CORE]
TimerLib|$(WORKSPACE)\MdePkg\Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf
PeiServicesTablePointerLib|$(WORKSPACE)\MdePkg\Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointerLibMm7.inf
PeCoffGetEntryPointLib|$(WORKSPACE)\Nt32Pkg\Library/EdkNt32PeiPeCoffGetEntryPointLib/EdkNt32PeiPeCoffGetEntryPointLib.inf
[LibraryClass.IA32.DXE_RUNTIME_DRIVER]
[LibraryClasses.IA32.DXE_RUNTIME_DRIVER]
WinNtLib|$(WORKSPACE)\Nt32Pkg\Library/DxeWinNtLib/DxeWinNtLib.inf
EdkFvbServiceLib|$(WORKSPACE)\MdeModulePkg\Library/EdkFvbServiceLib/EdkFvbServiceLib.inf
OemHookStatusCodeLib|$(WORKSPACE)\Nt32Pkg\Library/DxeNt32OemHookStatusCodeLib/DxeNt32OemHookStatusCodeLib.inf
[LibraryClass.IA32.BASE]
TimerLib|$(WORKSPACE)\MdePkg\Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
[LibraryClasses.IA32.BASE]
TimerLib|$(WORKSPACE)\MdePkg\Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf
[LibraryClass.IA32.SEC]
TimerLib|$(WORKSPACE)\MdePkg\Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
[LibraryClasses.IA32.SEC]
TimerLib|$(WORKSPACE)\MdePkg\Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf
[LibraryClass.IA32.UEFI_DRIVER]
TimerLib|$(WORKSPACE)\MdePkg\Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
[LibraryClasses.IA32.UEFI_DRIVER]
TimerLib|$(WORKSPACE)\MdePkg\Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf
WinNtLib|$(WORKSPACE)\Nt32Pkg\Library/DxeWinNtLib/DxeWinNtLib.inf
EdkFvbServiceLib|$(WORKSPACE)\MdeModulePkg\Library/EdkFvbServiceLib/EdkFvbServiceLib.inf
OemHookStatusCodeLib|$(WORKSPACE)\Nt32Pkg\Library/DxeNt32OemHookStatusCodeLib/DxeNt32OemHookStatusCodeLib.inf
[LibraryClass.IA32.DXE_DRIVER]
TimerLib|$(WORKSPACE)\MdePkg\Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
[LibraryClasses.IA32.DXE_DRIVER]
TimerLib|$(WORKSPACE)\MdePkg\Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf
WinNtLib|$(WORKSPACE)\Nt32Pkg\Library/DxeWinNtLib/DxeWinNtLib.inf
EdkFvbServiceLib|$(WORKSPACE)\MdeModulePkg\Library/EdkFvbServiceLib/EdkFvbServiceLib.inf
OemHookStatusCodeLib|$(WORKSPACE)\Nt32Pkg\Library/DxeNt32OemHookStatusCodeLib/DxeNt32OemHookStatusCodeLib.inf
EdkGenericBdsLib|$(WORKSPACE)\Nt32Pkg\Library/EdkGenericBdsLib/EdkGenericBdsLib.inf
[LibraryClass.IA32.UEFI_APPLICATION]
TimerLib|$(WORKSPACE)\MdePkg\Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf
[LibraryClasses.IA32.UEFI_APPLICATION]
TimerLib|$(WORKSPACE)\MdePkg\Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf
WinNtLib|$(WORKSPACE)\Nt32Pkg\Library/DxeWinNtLib/DxeWinNtLib.inf
EdkFvbServiceLib|$(WORKSPACE)\MdeModulePkg\Library/EdkFvbServiceLib/EdkFvbServiceLib.inf
OemHookStatusCodeLib|$(WORKSPACE)\Nt32Pkg\Library/DxeNt32OemHookStatusCodeLib/DxeNt32OemHookStatusCodeLib.inf
[LibraryClass.common.DXE_CORE]
[LibraryClasses.common.DXE_CORE]
DebugLib|$(WORKSPACE)\MdePkg\Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
DevicePathLib|$(WORKSPACE)\MdePkg\Library/UefiDevicePathLib/UefiDevicePathLib.inf
UefiDecompressLib|$(WORKSPACE)\MdeModulePkg\Library/DxeCoreUefiDecompressLibFromHob/DxeCoreUefiDecompressLibFromHob.inf
@ -124,7 +124,7 @@
ReportStatusCodeLib|$(WORKSPACE)\MdePkg\Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
TianoDecompressLib|$(WORKSPACE)\MdeModulePkg\Library/DxeCoreTianoDecompressLibFromHob/DxeCoreTianoDecompressLibFromHob.inf
[LibraryClass.common]
[LibraryClasses.common]
TimerLib|$(WORKSPACE)\MdePkg\Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf
PrintLib|$(WORKSPACE)\MdePkg\Library/BasePrintLib/BasePrintLib.inf
UefiDecompressLib|$(WORKSPACE)\MdeModulePkg\Library/BaseUefiTianoDecompressLib/BaseUefiTianoDecompressLib.inf
@ -140,7 +140,7 @@
PciIncompatibleDeviceSupportLib|$(WORKSPACE)\MdeModulePkg\Library/EdkPciIncompatibleDeviceSupportLib/EdkPciIncompatibleDeviceSupportLib.inf
CacheMaintenanceLib|$(WORKSPACE)\MdePkg\Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf
[LibraryClass.common.DXE_SAL_DRIVER]
[LibraryClasses.common.DXE_SAL_DRIVER]
DebugLib|$(WORKSPACE)\MdePkg\Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
UefiRuntimeServicesTableLib|$(WORKSPACE)\MdePkg\Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
HobLib|$(WORKSPACE)\MdePkg\Library/DxeHobLib/DxeHobLib.inf
@ -164,7 +164,7 @@
EdkUsbLib|$(WORKSPACE)\MdeModulePkg\Library/EdkUsbLib/EdkUsbLib.inf
EdkScsiLib|$(WORKSPACE)\MdeModulePkg\Library/EdkScsiLib/EdkScsiLib.inf
[LibraryClass.common.DXE_SMM_DRIVER]
[LibraryClasses.common.DXE_SMM_DRIVER]
EdkUsbLib|$(WORKSPACE)\MdeModulePkg\Library/EdkUsbLib/EdkUsbLib.inf
DebugLib|$(WORKSPACE)\MdePkg\Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
DxeServicesTableLib|$(WORKSPACE)\MdePkg\Library/DxeServicesTableLib/DxeServicesTableLib.inf
@ -186,7 +186,7 @@
TianoDecompressLib|$(WORKSPACE)\MdeModulePkg\Library/DxeCoreTianoDecompressLibFromHob/DxeCoreTianoDecompressLibFromHob.inf
UefiRuntimeServicesTableLib|$(WORKSPACE)\MdePkg\Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
[LibraryClass.common.PEIM]
[LibraryClasses.common.PEIM]
HobLib|$(WORKSPACE)\MdePkg\Library/PeiHobLib/PeiHobLib.inf
PeiServicesTablePointerLib|$(WORKSPACE)\MdePkg\Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf
PcdLib|$(WORKSPACE)\MdePkg\Library/PeiPcdLib/PeiPcdLib.inf
@ -198,7 +198,7 @@
MemoryAllocationLib|$(WORKSPACE)\MdePkg\Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
ReportStatusCodeLib|$(WORKSPACE)\MdePkg\Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf
[LibraryClass.common.PEI_CORE]
[LibraryClasses.common.PEI_CORE]
HobLib|$(WORKSPACE)\MdePkg\Library/PeiHobLib/PeiHobLib.inf
PeiServicesTablePointerLib|$(WORKSPACE)\MdePkg\Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf
PcdLib|$(WORKSPACE)\MdePkg\Library/PeiPcdLib/PeiPcdLib.inf
@ -209,7 +209,7 @@
PeiCoreEntryPoint|$(WORKSPACE)\MdePkg\Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf
ReportStatusCodeLib|$(WORKSPACE)\MdePkg\Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf
[LibraryClass.common.DXE_RUNTIME_DRIVER]
[LibraryClasses.common.DXE_RUNTIME_DRIVER]
DebugLib|$(WORKSPACE)\MdePkg\Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
UefiRuntimeServicesTableLib|$(WORKSPACE)\MdePkg\Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
HobLib|$(WORKSPACE)\MdePkg\Library/DxeHobLib/DxeHobLib.inf
@ -234,7 +234,7 @@
EdkScsiLib|$(WORKSPACE)\MdeModulePkg\Library/EdkScsiLib/EdkScsiLib.inf
UefiDriverModelLib|$(WORKSPACE)\MdePkg\Library/UefiDriverModelLib/UefiDriverModelLib.inf
[LibraryClass.common.UEFI_DRIVER]
[LibraryClasses.common.UEFI_DRIVER]
DebugLib|$(WORKSPACE)\MdePkg\Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
UefiRuntimeServicesTableLib|$(WORKSPACE)\MdePkg\Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
HobLib|$(WORKSPACE)\MdePkg\Library/DxeHobLib/DxeHobLib.inf
@ -258,8 +258,8 @@
EdkScsiLib|$(WORKSPACE)\MdeModulePkg\Library/EdkScsiLib/EdkScsiLib.inf
UefiDriverModelLib|$(WORKSPACE)\MdePkg\Library/UefiDriverModelLib/UefiDriverModelLib.inf
[LibraryClass.common.DXE_DRIVER]
DebugLib|$(WORKSPACE)\MdePkg\Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
[LibraryClasses.common.DXE_DRIVER]
DebugLib|$(WORKSPACE)\MdePkg\Library/BaseDebugLibNull/BaseDebugLibNull.inf
UefiRuntimeServicesTableLib|$(WORKSPACE)\MdePkg\Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
HobLib|$(WORKSPACE)\MdePkg\Library/DxeHobLib/DxeHobLib.inf
EdkIfrSupportLib|$(WORKSPACE)\MdeModulePkg\Library/EdkIfrSupportLib/EdkIfrSupportLib.inf
@ -270,19 +270,19 @@
UefiDriverEntryPoint|$(WORKSPACE)\MdePkg\Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf
EdkGraphicsLib|$(WORKSPACE)\MdeModulePkg\Library/EdkGraphicsLib/EdkGraphicsLib.inf
ReportStatusCodeLib|$(WORKSPACE)\MdePkg\Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
PrintLib|$(WORKSPACE)\MdeModulePkg\Library/EdkDxePrintLib/EdkDxePrintLib.inf
PrintLib|$(WORKSPACE)\MdePkg\Library/BasePrintLib/BasePrintLib.inf
DxeServicesTableLib|$(WORKSPACE)\MdePkg\Library/DxeServicesTableLib/DxeServicesTableLib.inf
UefiDecompressLib|$(WORKSPACE)\MdeModulePkg\Library/DxeCoreUefiDecompressLibFromHob/DxeCoreUefiDecompressLibFromHob.inf
HiiLib|$(WORKSPACE)\MdePkg\Library/HiiLib/HiiLib.inf
UefiBootServicesTableLib|$(WORKSPACE)\MdePkg\Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
DevicePathLib|$(WORKSPACE)\MdePkg\Library/UefiDevicePathLib/UefiDevicePathLib.inf
BaseMemoryLib|$(WORKSPACE)\MdePkg\Library/DxeMemoryLib/DxeMemoryLib.inf
BaseMemoryLib|$(WORKSPACE)\MdePkg\Library/BaseMemoryLib/BaseMemoryLib.inf
TianoDecompressLib|$(WORKSPACE)\MdeModulePkg\Library/DxeCoreTianoDecompressLibFromHob/DxeCoreTianoDecompressLibFromHob.inf
EdkUsbLib|$(WORKSPACE)\MdeModulePkg\Library/EdkUsbLib/EdkUsbLib.inf
EdkScsiLib|$(WORKSPACE)\MdeModulePkg\Library/EdkScsiLib/EdkScsiLib.inf
UefiDriverModelLib|$(WORKSPACE)\MdePkg\Library/UefiDriverModelLib/UefiDriverModelLib.inf
[LibraryClass.common.UEFI_APPLICATION]
[LibraryClasses.common.UEFI_APPLICATION]
EdkUsbLib|$(WORKSPACE)\MdeModulePkg\Library/EdkUsbLib/EdkUsbLib.inf
DebugLib|$(WORKSPACE)\MdePkg\Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
DxeServicesTableLib|$(WORKSPACE)\MdePkg\Library/DxeServicesTableLib/DxeServicesTableLib.inf
@ -311,11 +311,11 @@
#
################################################################################
[PcdPatchableInModule.IA32]
[PcdsPatchableInModule.IA32]
PcdStatusCodeMemorySize|gEfiMdeModulePkgTokenSpaceGuid|1
PcdStatusCodeRuntimeMemorySize|gEfiMdeModulePkgTokenSpaceGuid|128
[PcdFixedAtBuild.IA32]
[PcdsFixedAtBuild.IA32]
PcdWinNtMemorySizeForSecMain|gEfiNt32PkgTokenSpaceGuid|L"64!64"|VOID*|10
PcdWinNtFirmwareVolume|gEfiNt32PkgTokenSpaceGuid|L"..\\Fv\\Fv_Recovery.fd"|VOID*|52
PcdWinNtBootMode|gEfiNt32PkgTokenSpaceGuid|1
@ -323,7 +323,6 @@
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
@ -334,637 +333,9 @@
PcdPerformanceLibraryPropertyMask|gEfiMdePkgTokenSpaceGuid|0
PcdMaxPeiPcdCallBackNumberPerPcdEntry|gEfiMdeModulePkgTokenSpaceGuid|0x08
PcdVpdBaseAddress|gEfiMdeModulePkgTokenSpaceGuid|0x0
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdFSBClock|gEfiMdePkgTokenSpaceGuid|200000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdPerformanceLibraryPropertyMask|gEfiMdePkgTokenSpaceGuid|0
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdVpdBaseAddress|gEfiMdeModulePkgTokenSpaceGuid|0x0
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdPerformanceLibraryPropertyMask|gEfiMdePkgTokenSpaceGuid|0
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaxSizePopulateCapsule|gEfiMdeModulePkgTokenSpaceGuid|0x0
PcdMaxSizeNonPopulateCapsule|gEfiMdeModulePkgTokenSpaceGuid|0x0
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdPciIncompatibleDeviceSupportMask|gEfiMdeModulePkgTokenSpaceGuid|0x0
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdPerformanceLibraryPropertyMask|gEfiMdePkgTokenSpaceGuid|0
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdReportStatusCodePropertyMask|gEfiMdePkgTokenSpaceGuid|0x06
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1F
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdMaximumLinkedListLength|gEfiMdePkgTokenSpaceGuid|1000000
PcdSpinLockTimeout|gEfiMdePkgTokenSpaceGuid|10000000
PcdDebugPropertyMask|gEfiMdePkgTokenSpaceGuid|0x1f
PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid|0xAF
PcdDebugPrintErrorLevel|gEfiMdePkgTokenSpaceGuid|0x80000000
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
[PcdFeatureFlag.IA32]
[PcdsFeatureFlag.IA32]
PcdPeiPcdDatabaseTraverseEnabled|gEfiMdeModulePkgTokenSpaceGuid|TRUE
PcdPeiPcdDatabaseCallbackOnSetEnabled|gEfiMdeModulePkgTokenSpaceGuid|TRUE
PcdPeiPcdDatabaseExEnabled|gEfiMdeModulePkgTokenSpaceGuid|TRUE
@ -992,74 +363,12 @@
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdNtEmulatorEnable|gEfiMdeModulePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDevicePathSupportDevicePathToText|gEfiMdeModulePkgTokenSpaceGuid|TRUE
PcdDevicePathSupportDevicePathFromText|gEfiMdeModulePkgTokenSpaceGuid|TRUE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdPciIsaEnable|gEfiGenericPlatformTokenSpaceGuid|FALSE
PcdPciVgaEnable|gEfiGenericPlatformTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdPciBusHotplugDeviceSupport|gEfiGenericPlatformTokenSpaceGuid|TRUE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentNameDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdDriverDiagnosticsDisable|gEfiMdePkgTokenSpaceGuid|FALSE
PcdComponentName2Disable|gEfiMdePkgTokenSpaceGuid|TRUE
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdDriverDiagnostics2Disable|gEfiMdePkgTokenSpaceGuid|TRUE
################################################################################
#
@ -1067,7 +376,7 @@
#
################################################################################
[PcdDynamic.DEFAULT]
[PcdsDynamic.DEFAULT]
PcdFlashNvStorageFtwSpareBase|gEfiGenericPlatformTokenSpaceGuid|0x0
PcdFlashNvStorageVariableSize|gEfiGenericPlatformTokenSpaceGuid|0x0
PcdWinNtCpuSpeed|gEfiNt32PkgTokenSpaceGuid|L"3000"|8
@ -1092,3 +401,4 @@
################################################################################
[Components.IA32]
$(WORKSPACE)\Nt32Pkg\WinNtThunkDxe\WinNtThunk.inf

View File

@ -73,7 +73,7 @@
gEfiWinNtFileSystemGuid = { 0x0C95A935, 0xA006, 0x11D4, { 0xBC, 0xFA, 0x00, 0x80, 0xC7, 0x3C, 0x88, 0x81 }}
gEfiWinNtPhysicalDisksGuid = { 0x0C95A92F, 0xA006, 0x11D4, { 0xBC, 0xFA, 0x00, 0x80, 0xC7, 0x3C, 0x88, 0x81 }}
gEfiWinNtVirtualDisksGuid = { 0x0C95A928, 0xA006, 0x11D4, { 0xBC, 0xFA, 0x00, 0x80, 0xC7, 0x3C, 0x88, 0x81 }}
gEfiEdkNt32PkgTokenSpaceGuid = { 0x0D79A645, 0x1D91, 0x40a6, { 0xA8, 0x1F, 0x61, 0xE6, 0x98, 0x2B, 0x32, 0xB4 }}
gEfiNt32PkgTokenSpaceGuid = { 0x0D79A645, 0x1D91, 0x40a6, { 0xA8, 0x1F, 0x61, 0xE6, 0x98, 0x2B, 0x32, 0xB4 }}
################################################################################
@ -97,23 +97,23 @@
################################################################################
[PcdFixedAtBuild.common]
PcdWinNtBootMode|0x00001006|gEfiEdkNt32PkgTokenSpaceGuid|UINT32|1
PcdWinNtFirmwareVolume|0x00001009|gEfiEdkNt32PkgTokenSpaceGuid|VOID*|L"..\\Fv\\Fv_Recovery.fd"
PcdWinNtMemorySizeForSecMain|0x0000100c|gEfiEdkNt32PkgTokenSpaceGuid|VOID*|L"64!64"
PcdWinNtBootMode|0x00001006|gEfiNt32PkgTokenSpaceGuid|UINT32|1
PcdWinNtFirmwareVolume|0x00001009|gEfiNt32PkgTokenSpaceGuid|VOID*|L"..\\Fv\\Fv_Recovery.fd"
PcdWinNtMemorySizeForSecMain|0x0000100c|gEfiNt32PkgTokenSpaceGuid|VOID*|L"64!64"
[PcdDynamic.common]
PcdWinNtPhysicalDisk|0x00001000|gEfiEdkNt32PkgTokenSpaceGuid|VOID*|L"E:RW;245760;512"
PcdWinNtVirtualDisk|0x00001001|gEfiEdkNt32PkgTokenSpaceGuid|VOID*|L"FW;40960;512"
PcdWinNtSerialPort|0x00001002|gEfiEdkNt32PkgTokenSpaceGuid|VOID*|L"COM1!COM2"
PcdWinNtUga|0x00001003|gEfiEdkNt32PkgTokenSpaceGuid|VOID*|L"UGA Window 1!UGA Window 2"
PcdWinNtFileSystem|0x00001004|gEfiEdkNt32PkgTokenSpaceGuid|VOID*|L".!..\\..\\..\\..\\EdkShellBinPkg\\bin\\ia32\\Apps"
PcdWinNtMemorySize|0x00001005|gEfiEdkNt32PkgTokenSpaceGuid|VOID*|L"64!64"
PcdWinNtCpuModel|0x00001007|gEfiEdkNt32PkgTokenSpaceGuid|VOID*|L"Intel(R) Processor Model"
PcdWinNtCpuSpeed|0x00001008|gEfiEdkNt32PkgTokenSpaceGuid|VOID*|L"3000"
PcdWinNtConsole|0x0000100a|gEfiEdkNt32PkgTokenSpaceGuid|VOID*|L"Bus Driver Console Window"
PcdWinNtGop|0x0000100d|gEfiEdkNt32PkgTokenSpaceGuid|VOID*|L"UGA Window 1!UGA Window 2"
PcdWinNtPhysicalDisk|0x00001000|gEfiNt32PkgTokenSpaceGuid|VOID*|L"E:RW;245760;512"
PcdWinNtVirtualDisk|0x00001001|gEfiNt32PkgTokenSpaceGuid|VOID*|L"FW;40960;512"
PcdWinNtSerialPort|0x00001002|gEfiNt32PkgTokenSpaceGuid|VOID*|L"COM1!COM2"
PcdWinNtUga|0x00001003|gEfiNt32PkgTokenSpaceGuid|VOID*|L"UGA Window 1!UGA Window 2"
PcdWinNtFileSystem|0x00001004|gEfiNt32PkgTokenSpaceGuid|VOID*|L".!..\\..\\..\\..\\EdkShellBinPkg\\bin\\ia32\\Apps"
PcdWinNtMemorySize|0x00001005|gEfiNt32PkgTokenSpaceGuid|VOID*|L"64!64"
PcdWinNtCpuModel|0x00001007|gEfiNt32PkgTokenSpaceGuid|VOID*|L"Intel(R) Processor Model"
PcdWinNtCpuSpeed|0x00001008|gEfiNt32PkgTokenSpaceGuid|VOID*|L"3000"
PcdWinNtConsole|0x0000100a|gEfiNt32PkgTokenSpaceGuid|VOID*|L"Bus Driver Console Window"
PcdWinNtGop|0x0000100d|gEfiNt32PkgTokenSpaceGuid|VOID*|L"UGA Window 1!UGA Window 2"
[PcdPatchableInModule.common]
PcdWinNtBootMode|0x00001006|gEfiEdkNt32PkgTokenSpaceGuid|UINT32|1
PcdWinNtFirmwareVolume|0x00001009|gEfiEdkNt32PkgTokenSpaceGuid|VOID*|L"..\\Fv\\Fv_Recovery.fd"
PcdWinNtMemorySizeForSecMain|0x0000100c|gEfiEdkNt32PkgTokenSpaceGuid|VOID*|L"64!64"
PcdWinNtBootMode|0x00001006|gEfiNt32PkgTokenSpaceGuid|UINT32|1
PcdWinNtFirmwareVolume|0x00001009|gEfiNt32PkgTokenSpaceGuid|VOID*|L"..\\Fv\\Fv_Recovery.fd"
PcdWinNtMemorySizeForSecMain|0x0000100c|gEfiNt32PkgTokenSpaceGuid|VOID*|L"64!64"

View File

@ -0,0 +1,37 @@
/**@file
Common header file shared by all source files.
This file includes package header files, library classes and protocol, PPI & GUID definitions.
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 __COMMON_HEADER_H_
#define __COMMON_HEADER_H_
//
// The package level header files this module uses
//
#include <PiDxe.h>
#include <WinNtDxe.h>
//
// The protocols, PPI and GUID defintions for this module
//
#include <Protocol/WinNtThunk.h>
#include <Protocol/DevicePath.h>
//
// The Library classes this module consumes
//
#include <Library/DebugLib.h>
#include <Library/UefiDriverEntryPoint.h>
#include <Library/WinNtLib.h>
#include <Library/UefiBootServicesTableLib.h>
#endif

View File

@ -0,0 +1,92 @@
/*++
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:
WinNtThunk.c
Abstract:
Produce WinNtThunk protocol and it's associated device path and controller
state protocols. WinNtThunk is to the NT emulation environment as
PCI_ROOT_BRIGE is to real hardware. The WinNtBusDriver is the child of this
driver.
Since we are a root hardware abstraction we do not install a Driver Binding
protocol on this handle. This driver can only support one one WinNtThunk protocol
in the system, since the device path is hard coded.
--*/
//
// Include common header file for this module.
//
#include "CommonHeader.h"
#include "WinNtThunk.h"
//
// WinNtThunk Device Path Protocol Instance
//
static WIN_NT_THUNK_DEVICE_PATH mWinNtThunkDevicePath = {
{
HARDWARE_DEVICE_PATH,
HW_VENDOR_DP,
(UINT8) (sizeof (VENDOR_DEVICE_PATH)),
(UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8),
EFI_WIN_NT_THUNK_PROTOCOL_GUID,
},
{
END_DEVICE_PATH_TYPE,
END_ENTIRE_DEVICE_PATH_SUBTYPE,
END_DEVICE_PATH_LENGTH,
0
}
};
EFI_STATUS
EFIAPI
InitializeWinNtThunk (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
/*++
Routine Description:
Install WinNtThunk Protocol and it's associated Device Path protocol
Arguments:
(Standard EFI Image entry - EFI_IMAGE_ENTRY_POINT)
Returns:
EFI_SUCEESS - WinNtThunk protocol is added or error status from
gBS->InstallMultiProtocolInterfaces().
--*/
// TODO: ImageHandle - add argument and description to function comment
// TODO: SystemTable - add argument and description to function comment
{
EFI_STATUS Status;
EFI_HANDLE ControllerHandle;
ControllerHandle = NULL;
Status = gBS->InstallMultipleProtocolInterfaces (
&ControllerHandle,
&gEfiWinNtThunkProtocolGuid,
gWinNt,
&gEfiDevicePathProtocolGuid,
&mWinNtThunkDevicePath,
NULL
);
return Status;
}

View File

@ -0,0 +1,31 @@
/*++
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:
WinNtThunk.dxs
Abstract:
Dependency expression source file.
--*/
//
// Include common header file for this module.
//
#include "CommonHeader.h"
#include <DxeDepex.h>
DEPENDENCY_START
TRUE
DEPENDENCY_END

View File

@ -0,0 +1,38 @@
/*++
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:
WinNtThunk.h
Abstract:
--*/
//
// Include common header file for this module.
//
#include "CommonHeader.h"
#ifndef _WIN_NT_THUNK_H_
#define _WIN_NT_THUNK_H_
// TODO: add protective #ifndef
//
// WinNtThunk Device Path Protocol Instance Type
//
typedef struct {
VENDOR_DEVICE_PATH Vendor;
EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
} WIN_NT_THUNK_DEVICE_PATH;
#endif

View File

@ -0,0 +1,98 @@
#/** @file
# A DXE driver to produce EFI_WIN_NT_THUNK_PROTOCOL
#
# EFI_WIN_NT_THUNK_PROTOCOL is a table of pointers to various Windows APIs used by various drivers to accomplish certain task in an NT32 emulator.
# 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.
#
#
#**/
################################################################################
#
# Defines Section - statements that will be processed to create a Makefile.
#
################################################################################
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = WinNtThunk
FILE_GUID = 0C95A916-A006-11d4-BCFA-0080C73C8881
MODULE_TYPE = DXE_DRIVER
VERSION_STRING = 1.0
EDK_RELEASE_VERSION = 0x00020000
EFI_SPECIFICATION_VERSION = 0x00020000
ENTRY_POINT = InitializeWinNtThunk
#
# The following information is for reference only and not required by the build tools.
#
# VALID_ARCHITECTURES = IA32
#
################################################################################
#
# Sources Section - list of files that are required for the build to succeed.
#
################################################################################
[Sources.common]
WinNtThunk.dxs
WinNtThunk.c
WinNtThunk.h
CommonHeader.h
################################################################################
#
# Includes Section - list of Include locations that are required for
# this module.
#
################################################################################
[Includes]
$(WORKSPACE)/MdePkg/Include/Library
$(WORKSPACE)/Nt32Pkg/Include/Library
################################################################################
#
# Package Dependency Section - list of Package files that are required for
# this module.
#
################################################################################
[Packages]
MdePkg/MdePkg.dec
Nt32Pkg/Nt32Pkg.dec
################################################################################
#
# Library Class Section - list of Library Classes that are required for
# this module.
#
################################################################################
[LibraryClasses]
UefiBootServicesTableLib
WinNtLib
UefiDriverEntryPoint
DebugLib
################################################################################
#
# Protocol C Name Section - list of Protocol and Protocol Notify C Names
# that this module uses or produces.
#
################################################################################
[Protocols]
gEfiDevicePathProtocolGuid # PROTOCOL ALWAYS_PRODUCED
gEfiWinNtThunkProtocolGuid # PROTOCOL ALWAYS_PRODUCED

View File

@ -0,0 +1,62 @@
<?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>WinNtThunk</ModuleName>
<ModuleType>DXE_DRIVER</ModuleType>
<GuidValue>0C95A916-A006-11d4-BCFA-0080C73C8881</GuidValue>
<Version>1.0</Version>
<Abstract>A DXE driver to produce EFI_WIN_NT_THUNK_PROTOCOL</Abstract>
<Description>EFI_WIN_NT_THUNK_PROTOCOL is a table of pointers to various Windows APIs used by various drivers to accomplish certain task in an NT32 emulator.</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</SupportedArchitectures>
<BinaryModule>false</BinaryModule>
<OutputFileBasename>WinNtThunk</OutputFileBasename>
</ModuleDefinitions>
<LibraryClassDefinitions>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>DebugLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>UefiDriverEntryPoint</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>WinNtLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>UefiBootServicesTableLib</Keyword>
</LibraryClass>
</LibraryClassDefinitions>
<SourceFiles>
<Filename>WinNtThunk.h</Filename>
<Filename>WinNtThunk.c</Filename>
<Filename>WinNtThunk.dxs</Filename>
</SourceFiles>
<PackageDependencies>
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
<Package PackageGuid="0fb2aa2d-10d5-40a5-a9dc-060c12a4a3f3"/>
</PackageDependencies>
<Protocols>
<Protocol Usage="ALWAYS_PRODUCED">
<ProtocolCName>gEfiWinNtThunkProtocolGuid</ProtocolCName>
</Protocol>
<Protocol Usage="ALWAYS_PRODUCED">
<ProtocolCName>gEfiDevicePathProtocolGuid</ProtocolCName>
</Protocol>
</Protocols>
<Externs>
<Specification>EFI_SPECIFICATION_VERSION 0x00020000</Specification>
<Specification>EDK_RELEASE_VERSION 0x00020000</Specification>
<Extern>
<ModuleEntryPoint>InitializeWinNtThunk</ModuleEntryPoint>
</Extern>
</Externs>
</ModuleSurfaceArea>