mirror of https://github.com/acidanthera/audk.git
synchronize the files with the MDE_Library_Spec
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6701 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
aef389d314
commit
badcbfb238
|
@ -1,6 +1,10 @@
|
||||||
/** @file
|
/** @file
|
||||||
Provides services to access PCI Configuration Space using the I/O ports 0xCF8 and 0xCFC.
|
Provides services to access PCI Configuration Space using the I/O ports 0xCF8 and 0xCFC.
|
||||||
|
|
||||||
|
This library is identical to the PCI Library, except the access method for performing PCI
|
||||||
|
configuration cycles must be though I/O ports 0xCF8 and 0xCFC. This library only allows
|
||||||
|
access to PCI Segment #0.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2008, Intel Corporation
|
Copyright (c) 2006 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
/** @file
|
/** @file
|
||||||
Provides services to access PCI Configuration Space using the MMIO PCI Express window.
|
Provides services to access PCI Configuration Space using the MMIO PCI Express window.
|
||||||
|
|
||||||
|
This library is identical to the PCI Library, except the access method for performing PCI
|
||||||
|
configuration cycles must be though the 256 MB PCI Express MMIO window whose base address
|
||||||
|
is defined by PcdPciExpressBaseAddress.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2008, Intel Corporation
|
Copyright (c) 2006 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
@ -968,7 +972,7 @@ PciExpressBitFieldAndThenOr32 (
|
||||||
@param Size Size in bytes of the transfer.
|
@param Size Size in bytes of the transfer.
|
||||||
@param Buffer Pointer to a buffer receiving the data read.
|
@param Buffer Pointer to a buffer receiving the data read.
|
||||||
|
|
||||||
@return Size read daata from StartAddress.
|
@return Size read data from StartAddress.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
UINTN
|
UINTN
|
||||||
|
|
|
@ -1,6 +1,15 @@
|
||||||
/** @file
|
/** @file
|
||||||
Provides services to access PCI Configuration Space.
|
Provides services to access PCI Configuration Space.
|
||||||
|
|
||||||
|
These functions perform PCI configuration cycles using the default PCI configuration
|
||||||
|
access method. This may use I/O ports 0xCF8 and 0xCFC to perform PCI configuration accesses,
|
||||||
|
or it may use MMIO registers relative to the PcdPciExpressBaseAddress, or it may use some
|
||||||
|
alternate access method. Modules will typically use the PCI Library for its PCI configuration
|
||||||
|
accesses. However, if a module requires a mix of PCI access methods, the PCI CF8 Library or
|
||||||
|
PCI Express Library may be used in conjunction with the PCI Library. The functionality of
|
||||||
|
these three libraries is identical. The PCI CF8 Library and PCI Express Library simply use
|
||||||
|
explicit access methods.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2008, Intel Corporation
|
Copyright (c) 2006 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
|
|
@ -1,6 +1,28 @@
|
||||||
/** @file
|
/** @file
|
||||||
Provides services to access PCI Configuration Space on a platform with multiple PCI segments.
|
Provides services to access PCI Configuration Space on a platform with multiple PCI segments.
|
||||||
|
|
||||||
|
The PCI Segment Library function provide services to read, write, and modify the PCI configuration
|
||||||
|
registers on PCI root bridges on any supported PCI segment. These library services take a single
|
||||||
|
address parameter that encodes the PCI Segment, PCI Bus, PCI Device, PCI Function, and PCI Register.
|
||||||
|
The layout of this address parameter is as follows:
|
||||||
|
|
||||||
|
PCI Register: Bits 0..11
|
||||||
|
PCI Function Bits 12..14
|
||||||
|
PCI Device Bits 15..19
|
||||||
|
PCI Bus Bits 20..27
|
||||||
|
Reserved Bits 28..31. Must be 0.
|
||||||
|
PCI Segment Bits 32..47
|
||||||
|
Reserved Bits 48..63. Must be 0.
|
||||||
|
|
||||||
|
| Reserved (MBZ) | Segment | Reserved (MBZ) | Bus | Device | Function | Register |
|
||||||
|
63 48 47 32 31 28 27 20 19 15 14 12 11 0
|
||||||
|
|
||||||
|
These functions perform PCI configuration cycles using the default PCI configuration access
|
||||||
|
method. This may use I/O ports 0xCF8 and 0xCFC to perform PCI configuration accesses, or it
|
||||||
|
may use MMIO registers relative to the PcdPciExpressBaseAddress, or it may use some alternate
|
||||||
|
access method. Modules will typically use the PCI Segment Library for its PCI configuration
|
||||||
|
accesses when PCI Segments other than Segment #0 must be accessed.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2008, Intel Corporation
|
Copyright (c) 2006 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
@ -46,6 +68,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
Reads and returns the 8-bit PCI configuration register specified by Address.
|
Reads and returns the 8-bit PCI configuration register specified by Address.
|
||||||
This function must guarantee that all PCI read and write operations are serialized.
|
This function must guarantee that all PCI read and write operations are serialized.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
|
||||||
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
||||||
|
@ -64,6 +87,7 @@ PciSegmentRead8 (
|
||||||
|
|
||||||
Writes the 8-bit PCI configuration register specified by Address with the value specified by Value.
|
Writes the 8-bit PCI configuration register specified by Address with the value specified by Value.
|
||||||
Value is returned. This function must guarantee that all PCI read and write operations are serialized.
|
Value is returned. This function must guarantee that all PCI read and write operations are serialized.
|
||||||
|
|
||||||
If Address > 0x0FFFFFFF, then ASSERT().
|
If Address > 0x0FFFFFFF, then ASSERT().
|
||||||
|
|
||||||
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
||||||
|
@ -87,6 +111,7 @@ PciSegmentWrite8 (
|
||||||
and writes the result to the 8-bit PCI configuration register specified by Address.
|
and writes the result to the 8-bit PCI configuration register specified by Address.
|
||||||
The value written to the PCI configuration register is returned.
|
The value written to the PCI configuration register is returned.
|
||||||
This function must guarantee that all PCI read and write operations are serialized.
|
This function must guarantee that all PCI read and write operations are serialized.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
|
||||||
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
||||||
|
@ -135,6 +160,7 @@ PciSegmentAnd8 (
|
||||||
and writes the result to the 8-bit PCI configuration register specified by Address.
|
and writes the result to the 8-bit PCI configuration register specified by Address.
|
||||||
The value written to the PCI configuration register is returned.
|
The value written to the PCI configuration register is returned.
|
||||||
This function must guarantee that all PCI read and write operations are serialized.
|
This function must guarantee that all PCI read and write operations are serialized.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
|
||||||
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
||||||
|
@ -158,6 +184,7 @@ PciSegmentAndThenOr8 (
|
||||||
Reads the bit field in an 8-bit PCI configuration register.
|
Reads the bit field in an 8-bit PCI configuration register.
|
||||||
The bit field is specified by the StartBit and the EndBit.
|
The bit field is specified by the StartBit and the EndBit.
|
||||||
The value of the bit field is returned.
|
The value of the bit field is returned.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
If StartBit is greater than 7, then ASSERT().
|
If StartBit is greater than 7, then ASSERT().
|
||||||
If EndBit is greater than 7, then ASSERT().
|
If EndBit is greater than 7, then ASSERT().
|
||||||
|
@ -216,6 +243,11 @@ PciSegmentBitFieldWrite8 (
|
||||||
performs a bitwise inclusive OR between the read result and the value specified by OrData,
|
performs a bitwise inclusive OR between the read result and the value specified by OrData,
|
||||||
and writes the result to the 8-bit PCI configuration register specified by Address.
|
and writes the result to the 8-bit PCI configuration register specified by Address.
|
||||||
|
|
||||||
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If StartBit is greater than 7, then ASSERT().
|
||||||
|
If EndBit is greater than 7, then ASSERT().
|
||||||
|
If EndBit is less than StartBit, then ASSERT().
|
||||||
|
|
||||||
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
||||||
@param StartBit The ordinal of the least significant bit in the bit field.
|
@param StartBit The ordinal of the least significant bit in the bit field.
|
||||||
The ordinal of the least significant bit in a byte is bit 0.
|
The ordinal of the least significant bit in a byte is bit 0.
|
||||||
|
@ -245,6 +277,7 @@ PciSegmentBitFieldOr8 (
|
||||||
The value written to the PCI configuration register is returned.
|
The value written to the PCI configuration register is returned.
|
||||||
This function must guarantee that all PCI read and write operations are serialized.
|
This function must guarantee that all PCI read and write operations are serialized.
|
||||||
Extra left bits in OrData are stripped.
|
Extra left bits in OrData are stripped.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
If StartBit is greater than 7, then ASSERT().
|
If StartBit is greater than 7, then ASSERT().
|
||||||
If EndBit is greater than 7, then ASSERT().
|
If EndBit is greater than 7, then ASSERT().
|
||||||
|
@ -279,6 +312,7 @@ PciSegmentBitFieldAnd8 (
|
||||||
The value written to the PCI configuration register is returned.
|
The value written to the PCI configuration register is returned.
|
||||||
This function must guarantee that all PCI read and write operations are serialized.
|
This function must guarantee that all PCI read and write operations are serialized.
|
||||||
Extra left bits in AndData are stripped.
|
Extra left bits in AndData are stripped.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
If StartBit is greater than 7, then ASSERT().
|
If StartBit is greater than 7, then ASSERT().
|
||||||
If EndBit is greater than 7, then ASSERT().
|
If EndBit is greater than 7, then ASSERT().
|
||||||
|
@ -310,7 +344,9 @@ PciSegmentBitFieldAndThenOr8 (
|
||||||
|
|
||||||
Reads and returns the 16-bit PCI configuration register specified by Address.
|
Reads and returns the 16-bit PCI configuration register specified by Address.
|
||||||
This function must guarantee that all PCI read and write operations are serialized.
|
This function must guarantee that all PCI read and write operations are serialized.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 16-bit boundary, then ASSERT().
|
||||||
|
|
||||||
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
||||||
|
|
||||||
|
@ -328,7 +364,9 @@ PciSegmentRead16 (
|
||||||
|
|
||||||
Writes the 16-bit PCI configuration register specified by Address with the value specified by Value.
|
Writes the 16-bit PCI configuration register specified by Address with the value specified by Value.
|
||||||
Value is returned. This function must guarantee that all PCI read and write operations are serialized.
|
Value is returned. This function must guarantee that all PCI read and write operations are serialized.
|
||||||
If Address > 0x0FFFFFFF, then ASSERT().
|
|
||||||
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 16-bit boundary, then ASSERT().
|
||||||
|
|
||||||
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
||||||
@param Value The value to write.
|
@param Value The value to write.
|
||||||
|
@ -351,7 +389,9 @@ PciSegmentWrite16 (
|
||||||
and writes the result to the 16-bit PCI configuration register specified by Address.
|
and writes the result to the 16-bit PCI configuration register specified by Address.
|
||||||
The value written to the PCI configuration register is returned.
|
The value written to the PCI configuration register is returned.
|
||||||
This function must guarantee that all PCI read and write operations are serialized.
|
This function must guarantee that all PCI read and write operations are serialized.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 16-bit boundary, then ASSERT().
|
||||||
|
|
||||||
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
||||||
@param OrData The value to OR with the PCI configuration register.
|
@param OrData The value to OR with the PCI configuration register.
|
||||||
|
@ -374,7 +414,9 @@ PciSegmentOr16 (
|
||||||
and writes the result to the 16-bit PCI configuration register specified by Address.
|
and writes the result to the 16-bit PCI configuration register specified by Address.
|
||||||
The value written to the PCI configuration register is returned.
|
The value written to the PCI configuration register is returned.
|
||||||
This function must guarantee that all PCI read and write operations are serialized.
|
This function must guarantee that all PCI read and write operations are serialized.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 16-bit boundary, then ASSERT().
|
||||||
|
|
||||||
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
||||||
@param AndData The value to AND with the PCI configuration register.
|
@param AndData The value to AND with the PCI configuration register.
|
||||||
|
@ -399,7 +441,9 @@ PciSegmentAnd16 (
|
||||||
and writes the result to the 16-bit PCI configuration register specified by Address.
|
and writes the result to the 16-bit PCI configuration register specified by Address.
|
||||||
The value written to the PCI configuration register is returned.
|
The value written to the PCI configuration register is returned.
|
||||||
This function must guarantee that all PCI read and write operations are serialized.
|
This function must guarantee that all PCI read and write operations are serialized.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 16-bit boundary, then ASSERT().
|
||||||
|
|
||||||
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
||||||
@param AndData The value to AND with the PCI configuration register.
|
@param AndData The value to AND with the PCI configuration register.
|
||||||
|
@ -422,7 +466,9 @@ PciSegmentAndThenOr16 (
|
||||||
Reads the bit field in a 16-bit PCI configuration register.
|
Reads the bit field in a 16-bit PCI configuration register.
|
||||||
The bit field is specified by the StartBit and the EndBit.
|
The bit field is specified by the StartBit and the EndBit.
|
||||||
The value of the bit field is returned.
|
The value of the bit field is returned.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 16-bit boundary, then ASSERT().
|
||||||
If StartBit is greater than 7, then ASSERT().
|
If StartBit is greater than 7, then ASSERT().
|
||||||
If EndBit is greater than 7, then ASSERT().
|
If EndBit is greater than 7, then ASSERT().
|
||||||
If EndBit is less than StartBit, then ASSERT().
|
If EndBit is less than StartBit, then ASSERT().
|
||||||
|
@ -451,7 +497,9 @@ PciSegmentBitFieldRead16 (
|
||||||
The bit field is specified by the StartBit and the EndBit.
|
The bit field is specified by the StartBit and the EndBit.
|
||||||
All other bits in the destination PCI configuration register are preserved.
|
All other bits in the destination PCI configuration register are preserved.
|
||||||
The new value of the 16-bit register is returned.
|
The new value of the 16-bit register is returned.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 16-bit boundary, then ASSERT().
|
||||||
If StartBit is greater than 7, then ASSERT().
|
If StartBit is greater than 7, then ASSERT().
|
||||||
If EndBit is greater than 7, then ASSERT().
|
If EndBit is greater than 7, then ASSERT().
|
||||||
If EndBit is less than StartBit, then ASSERT().
|
If EndBit is less than StartBit, then ASSERT().
|
||||||
|
@ -480,6 +528,12 @@ PciSegmentBitFieldWrite16 (
|
||||||
performs a bitwise inclusive OR between the read result and the value specified by OrData,
|
performs a bitwise inclusive OR between the read result and the value specified by OrData,
|
||||||
and writes the result to the 16-bit PCI configuration register specified by Address.
|
and writes the result to the 16-bit PCI configuration register specified by Address.
|
||||||
|
|
||||||
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 16-bit boundary, then ASSERT().
|
||||||
|
If StartBit is greater than 15, then ASSERT().
|
||||||
|
If EndBit is greater than 15, then ASSERT().
|
||||||
|
If EndBit is less than StartBit, then ASSERT().
|
||||||
|
|
||||||
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
||||||
@param StartBit The ordinal of the least significant bit in the bit field.
|
@param StartBit The ordinal of the least significant bit in the bit field.
|
||||||
The ordinal of the least significant bit in a byte is bit 0.
|
The ordinal of the least significant bit in a byte is bit 0.
|
||||||
|
@ -509,7 +563,9 @@ PciSegmentBitFieldOr16 (
|
||||||
The value written to the PCI configuration register is returned.
|
The value written to the PCI configuration register is returned.
|
||||||
This function must guarantee that all PCI read and write operations are serialized.
|
This function must guarantee that all PCI read and write operations are serialized.
|
||||||
Extra left bits in OrData are stripped.
|
Extra left bits in OrData are stripped.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 16-bit boundary, then ASSERT().
|
||||||
If StartBit is greater than 7, then ASSERT().
|
If StartBit is greater than 7, then ASSERT().
|
||||||
If EndBit is greater than 7, then ASSERT().
|
If EndBit is greater than 7, then ASSERT().
|
||||||
If EndBit is less than StartBit, then ASSERT().
|
If EndBit is less than StartBit, then ASSERT().
|
||||||
|
@ -543,7 +599,9 @@ PciSegmentBitFieldAnd16 (
|
||||||
The value written to the PCI configuration register is returned.
|
The value written to the PCI configuration register is returned.
|
||||||
This function must guarantee that all PCI read and write operations are serialized.
|
This function must guarantee that all PCI read and write operations are serialized.
|
||||||
Extra left bits in AndData are stripped.
|
Extra left bits in AndData are stripped.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 16-bit boundary, then ASSERT()..
|
||||||
If StartBit is greater than 7, then ASSERT().
|
If StartBit is greater than 7, then ASSERT().
|
||||||
If EndBit is greater than 7, then ASSERT().
|
If EndBit is greater than 7, then ASSERT().
|
||||||
If EndBit is less than StartBit, then ASSERT().
|
If EndBit is less than StartBit, then ASSERT().
|
||||||
|
@ -574,7 +632,9 @@ PciSegmentBitFieldAndThenOr16 (
|
||||||
|
|
||||||
Reads and returns the 32-bit PCI configuration register specified by Address.
|
Reads and returns the 32-bit PCI configuration register specified by Address.
|
||||||
This function must guarantee that all PCI read and write operations are serialized.
|
This function must guarantee that all PCI read and write operations are serialized.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 32-bit boundary, then ASSERT().
|
||||||
|
|
||||||
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
||||||
|
|
||||||
|
@ -592,7 +652,9 @@ PciSegmentRead32 (
|
||||||
|
|
||||||
Writes the 32-bit PCI configuration register specified by Address with the value specified by Value.
|
Writes the 32-bit PCI configuration register specified by Address with the value specified by Value.
|
||||||
Value is returned. This function must guarantee that all PCI read and write operations are serialized.
|
Value is returned. This function must guarantee that all PCI read and write operations are serialized.
|
||||||
If Address > 0x0FFFFFFF, then ASSERT().
|
|
||||||
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 32-bit boundary, then ASSERT().
|
||||||
|
|
||||||
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
||||||
@param Value The value to write.
|
@param Value The value to write.
|
||||||
|
@ -615,7 +677,9 @@ PciSegmentWrite32 (
|
||||||
and writes the result to the 32-bit PCI configuration register specified by Address.
|
and writes the result to the 32-bit PCI configuration register specified by Address.
|
||||||
The value written to the PCI configuration register is returned.
|
The value written to the PCI configuration register is returned.
|
||||||
This function must guarantee that all PCI read and write operations are serialized.
|
This function must guarantee that all PCI read and write operations are serialized.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 32-bit boundary, then ASSERT().
|
||||||
|
|
||||||
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
||||||
@param OrData The value to OR with the PCI configuration register.
|
@param OrData The value to OR with the PCI configuration register.
|
||||||
|
@ -638,7 +702,9 @@ PciSegmentOr32 (
|
||||||
and writes the result to the 32-bit PCI configuration register specified by Address.
|
and writes the result to the 32-bit PCI configuration register specified by Address.
|
||||||
The value written to the PCI configuration register is returned.
|
The value written to the PCI configuration register is returned.
|
||||||
This function must guarantee that all PCI read and write operations are serialized.
|
This function must guarantee that all PCI read and write operations are serialized.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 32-bit boundary, then ASSERT().
|
||||||
|
|
||||||
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
||||||
@param AndData The value to AND with the PCI configuration register.
|
@param AndData The value to AND with the PCI configuration register.
|
||||||
|
@ -663,7 +729,9 @@ PciSegmentAnd32 (
|
||||||
and writes the result to the 32-bit PCI configuration register specified by Address.
|
and writes the result to the 32-bit PCI configuration register specified by Address.
|
||||||
The value written to the PCI configuration register is returned.
|
The value written to the PCI configuration register is returned.
|
||||||
This function must guarantee that all PCI read and write operations are serialized.
|
This function must guarantee that all PCI read and write operations are serialized.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 32-bit boundary, then ASSERT().
|
||||||
|
|
||||||
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
||||||
@param AndData The value to AND with the PCI configuration register.
|
@param AndData The value to AND with the PCI configuration register.
|
||||||
|
@ -686,7 +754,9 @@ PciSegmentAndThenOr32 (
|
||||||
Reads the bit field in a 32-bit PCI configuration register.
|
Reads the bit field in a 32-bit PCI configuration register.
|
||||||
The bit field is specified by the StartBit and the EndBit.
|
The bit field is specified by the StartBit and the EndBit.
|
||||||
The value of the bit field is returned.
|
The value of the bit field is returned.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 32-bit boundary, then ASSERT().
|
||||||
If StartBit is greater than 7, then ASSERT().
|
If StartBit is greater than 7, then ASSERT().
|
||||||
If EndBit is greater than 7, then ASSERT().
|
If EndBit is greater than 7, then ASSERT().
|
||||||
If EndBit is less than StartBit, then ASSERT().
|
If EndBit is less than StartBit, then ASSERT().
|
||||||
|
@ -715,7 +785,9 @@ PciSegmentBitFieldRead32 (
|
||||||
The bit field is specified by the StartBit and the EndBit.
|
The bit field is specified by the StartBit and the EndBit.
|
||||||
All other bits in the destination PCI configuration register are preserved.
|
All other bits in the destination PCI configuration register are preserved.
|
||||||
The new value of the 32-bit register is returned.
|
The new value of the 32-bit register is returned.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 32-bit boundary, then ASSERT().
|
||||||
If StartBit is greater than 7, then ASSERT().
|
If StartBit is greater than 7, then ASSERT().
|
||||||
If EndBit is greater than 7, then ASSERT().
|
If EndBit is greater than 7, then ASSERT().
|
||||||
If EndBit is less than StartBit, then ASSERT().
|
If EndBit is less than StartBit, then ASSERT().
|
||||||
|
@ -744,6 +816,12 @@ PciSegmentBitFieldWrite32 (
|
||||||
performs a bitwise inclusive OR between the read result and the value specified by OrData,
|
performs a bitwise inclusive OR between the read result and the value specified by OrData,
|
||||||
and writes the result to the 32-bit PCI configuration register specified by Address.
|
and writes the result to the 32-bit PCI configuration register specified by Address.
|
||||||
|
|
||||||
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 32-bit boundary, then ASSERT().
|
||||||
|
If StartBit is greater than 7, then ASSERT().
|
||||||
|
If EndBit is greater than 7, then ASSERT().
|
||||||
|
If EndBit is less than StartBit, then ASSERT().
|
||||||
|
|
||||||
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
@param Address Address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
||||||
@param StartBit The ordinal of the least significant bit in the bit field.
|
@param StartBit The ordinal of the least significant bit in the bit field.
|
||||||
The ordinal of the least significant bit in a byte is bit 0.
|
The ordinal of the least significant bit in a byte is bit 0.
|
||||||
|
@ -773,7 +851,9 @@ PciSegmentBitFieldOr32 (
|
||||||
The value written to the PCI configuration register is returned.
|
The value written to the PCI configuration register is returned.
|
||||||
This function must guarantee that all PCI read and write operations are serialized.
|
This function must guarantee that all PCI read and write operations are serialized.
|
||||||
Extra left bits in OrData are stripped.
|
Extra left bits in OrData are stripped.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 32-bit boundary, then ASSERT().
|
||||||
If StartBit is greater than 7, then ASSERT().
|
If StartBit is greater than 7, then ASSERT().
|
||||||
If EndBit is greater than 7, then ASSERT().
|
If EndBit is greater than 7, then ASSERT().
|
||||||
If EndBit is less than StartBit, then ASSERT().
|
If EndBit is less than StartBit, then ASSERT().
|
||||||
|
@ -807,7 +887,9 @@ PciSegmentBitFieldAnd32 (
|
||||||
The value written to the PCI configuration register is returned.
|
The value written to the PCI configuration register is returned.
|
||||||
This function must guarantee that all PCI read and write operations are serialized.
|
This function must guarantee that all PCI read and write operations are serialized.
|
||||||
Extra left bits in AndData are stripped.
|
Extra left bits in AndData are stripped.
|
||||||
|
|
||||||
If any reserved bits in Address are set, then ASSERT().
|
If any reserved bits in Address are set, then ASSERT().
|
||||||
|
If Address is not aligned on a 32-bit boundary, then ASSERT().
|
||||||
If StartBit is greater than 7, then ASSERT().
|
If StartBit is greater than 7, then ASSERT().
|
||||||
If EndBit is greater than 7, then ASSERT().
|
If EndBit is greater than 7, then ASSERT().
|
||||||
If EndBit is less than StartBit, then ASSERT().
|
If EndBit is less than StartBit, then ASSERT().
|
||||||
|
@ -840,16 +922,17 @@ PciSegmentBitFieldAndThenOr32 (
|
||||||
and Size into the buffer specified by Buffer.
|
and Size into the buffer specified by Buffer.
|
||||||
This function only allows the PCI configuration registers from a single PCI function to be read.
|
This function only allows the PCI configuration registers from a single PCI function to be read.
|
||||||
Size is returned.
|
Size is returned.
|
||||||
|
|
||||||
If any reserved bits in StartAddress are set, then ASSERT().
|
If any reserved bits in StartAddress are set, then ASSERT().
|
||||||
If ((StartAddress & 0xFFF) + Size) > 0x1000, then ASSERT().
|
If ((StartAddress & 0xFFF) + Size) > 0x1000, then ASSERT().
|
||||||
If (StartAddress + Size - 1) > 0x0FFFFFFF, then ASSERT().
|
If (StartAddress + Size - 1) > 0x0FFFFFFF, then ASSERT().
|
||||||
If Buffer is NULL, then ASSERT().
|
If Size > 0 and Buffer is NULL, then ASSERT().
|
||||||
|
|
||||||
@param StartAddress Starting address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
@param StartAddress Starting address that encodes the PCI Segment, Bus, Device, Function, and Register.
|
||||||
@param Size Size in bytes of the transfer.
|
@param Size Size in bytes of the transfer.
|
||||||
@param Buffer Pointer to a buffer receiving the data read.
|
@param Buffer Pointer to a buffer receiving the data read.
|
||||||
|
|
||||||
@return The paramter of Size.
|
@return The parameter of Size.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
UINTN
|
UINTN
|
||||||
|
@ -867,6 +950,7 @@ PciSegmentReadBuffer (
|
||||||
and Size from the buffer specified by Buffer.
|
and Size from the buffer specified by Buffer.
|
||||||
This function only allows the PCI configuration registers from a single PCI function to be written.
|
This function only allows the PCI configuration registers from a single PCI function to be written.
|
||||||
Size is returned.
|
Size is returned.
|
||||||
|
|
||||||
If any reserved bits in StartAddress are set, then ASSERT().
|
If any reserved bits in StartAddress are set, then ASSERT().
|
||||||
If ((StartAddress & 0xFFF) + Size) > 0x1000, then ASSERT().
|
If ((StartAddress & 0xFFF) + Size) > 0x1000, then ASSERT().
|
||||||
If (StartAddress + Size - 1) > 0x0FFFFFFF, then ASSERT().
|
If (StartAddress + Size - 1) > 0x0FFFFFFF, then ASSERT().
|
||||||
|
@ -876,7 +960,7 @@ PciSegmentReadBuffer (
|
||||||
@param Size Size in bytes of the transfer.
|
@param Size Size in bytes of the transfer.
|
||||||
@param Buffer Pointer to a buffer containing the data to write.
|
@param Buffer Pointer to a buffer containing the data to write.
|
||||||
|
|
||||||
@return The paramter of Size.
|
@return The parameter of Size.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
UINTN
|
UINTN
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
/** @file
|
/** @file
|
||||||
Provides services to load and relocate a PE/COFF image.
|
Provides services to load and relocate a PE/COFF image.
|
||||||
|
|
||||||
|
The PE/COFF Loader Library abstracts the implementation of a PE/COFF loader for
|
||||||
|
IA-32, x86, IPF, and EBC processor types. The library functions are memory based
|
||||||
|
and can be ported easily to any environment.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2007, Intel Corporation
|
Copyright (c) 2006 - 2007, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
@ -31,9 +35,35 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
#define IMAGE_ERROR_FAILED_RELOCATION 9
|
#define IMAGE_ERROR_FAILED_RELOCATION 9
|
||||||
#define IMAGE_ERROR_FAILED_ICACHE_FLUSH 10
|
#define IMAGE_ERROR_FAILED_ICACHE_FLUSH 10
|
||||||
|
|
||||||
//
|
/**
|
||||||
// PE/COFF Loader Read Function passed in by caller
|
Reads contents of a PE/COFF image.
|
||||||
//
|
|
||||||
|
A function of this type reads contents of the PE/COFF image specified by FileHandle. The read
|
||||||
|
operation copies ReadSize bytes from the PE/COFF image starting at byte offset FileOffset into
|
||||||
|
the buffer specified by Buffer. The size of the buffer actually read is returned in ReadSize.
|
||||||
|
If FileOffset specifies an offset past the end of the PE/COFF image, a ReadSize of 0 is returned.
|
||||||
|
A function of this type must be registered in the ImageRead field of a PE_COFF_LOADER_IMAGE_CONTEXT
|
||||||
|
structure for the PE/COFF Loader Library service to function correctly. This function abstracts access
|
||||||
|
to a PE/COFF image so it can be implemented in an environment specific manner. For example, SEC and PEI
|
||||||
|
environments may access memory directly to read the contents of a PE/COFF image, and DXE or UEFI
|
||||||
|
environments may require protocol services to read the contents of PE/COFF image
|
||||||
|
stored on FLASH, disk, or network devices.
|
||||||
|
|
||||||
|
If FileHandle is not a valid handle, then ASSERT().
|
||||||
|
If ReadSize is NULL, then ASSERT().
|
||||||
|
If Buffer is NULL, then ASSERT().
|
||||||
|
|
||||||
|
@param FileHandle Pointer to the file handle to read the PE/COFF image.
|
||||||
|
@param FileOffset Offset into the PE/COFF image to begin the read operation.
|
||||||
|
@param ReadSize On input, the size in bytes of the requested read operation.
|
||||||
|
On output, the number of bytes actually read.
|
||||||
|
@param Buffer Output buffer that contains the data read from the PE/COFF image.
|
||||||
|
|
||||||
|
@retval RETURN_SUCCESS The specified portion of the PE/COFF image was read and the size
|
||||||
|
@retval RETURN_DEVICE_ERROR The specified portion of the PE/COFF image could not be read due
|
||||||
|
to a device error.
|
||||||
|
|
||||||
|
**/
|
||||||
typedef
|
typedef
|
||||||
RETURN_STATUS
|
RETURN_STATUS
|
||||||
(EFIAPI *PE_COFF_LOADER_READ_FILE) (
|
(EFIAPI *PE_COFF_LOADER_READ_FILE) (
|
||||||
|
@ -169,6 +199,8 @@ typedef struct {
|
||||||
If any errors occur while computing the fields of ImageContext,
|
If any errors occur while computing the fields of ImageContext,
|
||||||
then the error status is returned in the ImageError field of ImageContext.
|
then the error status is returned in the ImageError field of ImageContext.
|
||||||
If the image is a TE image, then SectionAlignment is set to 0.
|
If the image is a TE image, then SectionAlignment is set to 0.
|
||||||
|
The ImageRead and Handle fields of ImageContext structure must be valid prior
|
||||||
|
to invoking this service.
|
||||||
|
|
||||||
@param ImageContext Pointer to the image context structure that describes the PE/COFF
|
@param ImageContext Pointer to the image context structure that describes the PE/COFF
|
||||||
image that needs to be examined by this function.
|
image that needs to be examined by this function.
|
||||||
|
@ -191,6 +223,12 @@ PeCoffLoaderGetImageInfo (
|
||||||
ImageContext as the relocation base address. Otherwise, use the DestinationAddress field
|
ImageContext as the relocation base address. Otherwise, use the DestinationAddress field
|
||||||
of ImageContext as the relocation base address. The caller must allocate the relocation
|
of ImageContext as the relocation base address. The caller must allocate the relocation
|
||||||
fixup log buffer and fill in the FixupData field of ImageContext prior to calling this function.
|
fixup log buffer and fill in the FixupData field of ImageContext prior to calling this function.
|
||||||
|
|
||||||
|
The ImageRead, Handle, PeCoffHeaderOffset, IsTeImage, Machine, ImageType, ImageAddress,
|
||||||
|
ImageSize, DestinationAddress, RelocationsStripped, SectionAlignment, SizeOfHeaders,
|
||||||
|
DebugDirectoryEntryRva, EntryPoint, FixupDataSize, CodeView, PdbPointer, and FixupData of
|
||||||
|
the ImageContext structure must be valid prior to invoking this service.
|
||||||
|
|
||||||
If ImageContext is NULL, then ASSERT().
|
If ImageContext is NULL, then ASSERT().
|
||||||
|
|
||||||
@param ImageContext Pointer to the image context structure that describes the PE/COFF
|
@param ImageContext Pointer to the image context structure that describes the PE/COFF
|
||||||
|
@ -217,6 +255,10 @@ PeCoffLoaderRelocateImage (
|
||||||
specified by the ImageAddress and ImageSize fields of ImageContext. The caller must allocate
|
specified by the ImageAddress and ImageSize fields of ImageContext. The caller must allocate
|
||||||
the load buffer and fill in the ImageAddress and ImageSize fields prior to calling this function.
|
the load buffer and fill in the ImageAddress and ImageSize fields prior to calling this function.
|
||||||
The EntryPoint, FixupDataSize, CodeView, and PdbPointer fields of ImageContext are computed.
|
The EntryPoint, FixupDataSize, CodeView, and PdbPointer fields of ImageContext are computed.
|
||||||
|
The ImageRead, Handle, PeCoffHeaderOffset, IsTeImage, Machine, ImageType, ImageAddress, ImageSize,
|
||||||
|
DestinationAddress, RelocationsStripped, SectionAlignment, SizeOfHeaders, and DebugDirectoryEntryRva
|
||||||
|
fields of the ImageContext structure must be valid prior to invoking this service.
|
||||||
|
|
||||||
If ImageContext is NULL, then ASSERT().
|
If ImageContext is NULL, then ASSERT().
|
||||||
|
|
||||||
@param ImageContext Pointer to the image context structure that describes the PE/COFF
|
@param ImageContext Pointer to the image context structure that describes the PE/COFF
|
||||||
|
@ -241,13 +283,24 @@ PeCoffLoaderLoadImage (
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
ImageRead function that operates on a memory buffer whos base is passed into
|
Reads contents of a PE/COFF image from a buffer in system memory.
|
||||||
FileHandle.
|
|
||||||
|
|
||||||
@param FileHandle Ponter to baes of the input stream
|
This is the default implementation of a PE_COFF_LOADER_READ_FILE function
|
||||||
@param FileOffset Offset to the start of the buffer
|
that assumes FileHandle pointer to the beginning of a PE/COFF image.
|
||||||
@param ReadSize Number of bytes to copy into the buffer
|
This function reads contents of the PE/COFF image that starts at the system memory
|
||||||
@param Buffer Location to place results of read
|
address specified by FileHandle. The read operation copies ReadSize bytes from the
|
||||||
|
PE/COFF image starting at byte offset FileOffset into the buffer specified by Buffer.
|
||||||
|
The size of the buffer actually read is returned in ReadSize.
|
||||||
|
|
||||||
|
If FileHandle is NULL, then ASSERT().
|
||||||
|
If ReadSize is NULL, then ASSERT().
|
||||||
|
If Buffer is NULL, then ASSERT().
|
||||||
|
|
||||||
|
@param FileHandle Pointer to base of the input stream
|
||||||
|
@param FileOffset Offset into the PE/COFF image to begin the read operation.
|
||||||
|
@param ReadSize On input, the size in bytes of the requested read operation.
|
||||||
|
On output, the number of bytes actually read.
|
||||||
|
@param Buffer Output buffer that contains the data read from the PE/COFF image.
|
||||||
|
|
||||||
@retval RETURN_SUCCESS Data is read from FileOffset from the Handle into
|
@retval RETURN_SUCCESS Data is read from FileOffset from the Handle into
|
||||||
the buffer.
|
the buffer.
|
||||||
|
@ -270,10 +323,13 @@ PeCoffLoaderImageReadFromMemory (
|
||||||
the fixups with a virtual mapping.
|
the fixups with a virtual mapping.
|
||||||
|
|
||||||
|
|
||||||
@param ImageBase Base address of relocated image
|
@param ImageBase Base address of a PE/COFF image that has been loaded
|
||||||
@param VirtImageBase Virtual mapping for ImageBase
|
and relocated into system memory.
|
||||||
@param ImageSize Size of the image to relocate
|
@param VirtImageBase The request virtual address that the PE/COFF image is to
|
||||||
@param RelocationData Location to place results of read
|
be fixed up for.
|
||||||
|
@param ImageSize The size, in bytes, of the PE/COFF image.
|
||||||
|
@param RelocationData A pointer to the relocation data that was collected when the PE/COFF
|
||||||
|
image was relocated using PeCoffLoaderRelocateImage().
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID
|
VOID
|
||||||
|
@ -287,11 +343,15 @@ PeCoffLoaderRelocateImageForRuntime (
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Unloads a loaded PE/COFF image from memory and releases its taken resource.
|
Unloads a loaded PE/COFF image from memory and releases its taken resource.
|
||||||
|
Releases any environment specific resources that were allocated when the image
|
||||||
|
specified by ImageContext was loaded using PeCoffLoaderLoadImage().
|
||||||
|
|
||||||
For NT32 emulator, the PE/COFF image loaded by system needs to release.
|
For NT32 emulator, the PE/COFF image loaded by system needs to release.
|
||||||
For real platform, the PE/COFF image loaded by Core doesn't needs to be unloaded,
|
For real platform, the PE/COFF image loaded by Core doesn't needs to be unloaded,
|
||||||
this function can simply return RETURN_SUCCESS.
|
this function can simply return RETURN_SUCCESS.
|
||||||
|
|
||||||
|
If ImageContext is NULL, then ASSERT().
|
||||||
|
|
||||||
@param ImageContext Pointer to the image context structure that describes the PE/COFF
|
@param ImageContext Pointer to the image context structure that describes the PE/COFF
|
||||||
image to be unloaded.
|
image to be unloaded.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue