34#define ASSERT_INVALID_PCI_ADDRESS(A) \
35 ASSERT (((A) & ~0xfffffff) == 0)
41 UINTN PhysicalAddress;
54UINTN mDxeRuntimePciExpressLibPciExpressBaseSize = 0;
137 Status =
gBS->CreateEvent (
138 EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE,
215 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
316 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
339 Status =
gDS->GetMemorySpaceDescriptor (Address, &Descriptor);
340 if (EFI_ERROR (Status)) {
348 Status =
gDS->SetMemorySpaceAttributes (Address, 0x1000, Descriptor.
Attributes | EFI_MEMORY_RUNTIME);
349 if (EFI_ERROR (Status)) {
361 if (NewTable ==
NULL) {
395 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
426 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
461 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
496 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
534 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
575 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
620 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
669 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
718 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
772 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
808 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
840 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
876 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
912 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
951 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
993 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
1039 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
1089 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
1139 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
1194 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
1230 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
1262 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
1298 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
1334 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
1373 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
1415 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
1461 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
1511 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
1561 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
1616 if (Address >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
1667 ASSERT (((StartAddress & 0xFFF) + Size) <= 0x1000);
1672 if (StartAddress >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
1680 ASSERT (Buffer !=
NULL);
1687 if ((StartAddress & 1) != 0) {
1692 StartAddress +=
sizeof (UINT8);
1693 Size -=
sizeof (UINT8);
1694 Buffer = (UINT8 *)Buffer + 1;
1697 if ((Size >=
sizeof (UINT16)) && ((StartAddress & 2) != 0)) {
1703 StartAddress +=
sizeof (UINT16);
1704 Size -=
sizeof (UINT16);
1705 Buffer = (UINT16 *)Buffer + 1;
1708 while (Size >=
sizeof (UINT32)) {
1714 StartAddress +=
sizeof (UINT32);
1715 Size -=
sizeof (UINT32);
1716 Buffer = (UINT32 *)Buffer + 1;
1719 if (Size >=
sizeof (UINT16)) {
1724 StartAddress +=
sizeof (UINT16);
1725 Size -=
sizeof (UINT16);
1726 Buffer = (UINT16 *)Buffer + 1;
1729 if (Size >=
sizeof (UINT8)) {
1778 ASSERT (((StartAddress & 0xFFF) + Size) <= 0x1000);
1783 if (StartAddress >= mDxeRuntimePciExpressLibPciExpressBaseSize) {
1791 ASSERT (Buffer !=
NULL);
1798 if ((StartAddress & 1) != 0) {
1803 StartAddress +=
sizeof (UINT8);
1804 Size -=
sizeof (UINT8);
1805 Buffer = (UINT8 *)Buffer + 1;
1808 if ((Size >=
sizeof (UINT16)) && ((StartAddress & 2) != 0)) {
1813 StartAddress +=
sizeof (UINT16);
1814 Size -=
sizeof (UINT16);
1815 Buffer = (UINT16 *)Buffer + 1;
1818 while (Size >=
sizeof (UINT32)) {
1823 StartAddress +=
sizeof (UINT32);
1824 Size -=
sizeof (UINT32);
1825 Buffer = (UINT32 *)Buffer + 1;
1828 if (Size >=
sizeof (UINT16)) {
1833 StartAddress +=
sizeof (UINT16);
1834 Size -=
sizeof (UINT16);
1835 Buffer = (UINT16 *)Buffer + 1;
1838 if (Size >=
sizeof (UINT8)) {
UINT16 EFIAPI ReadUnaligned16(IN CONST UINT16 *Buffer)
UINT32 EFIAPI WriteUnaligned32(OUT UINT32 *Buffer, IN UINT32 Value)
VOID EFIAPI CpuBreakpoint(VOID)
UINT16 EFIAPI WriteUnaligned16(OUT UINT16 *Buffer, IN UINT16 Value)
UINT32 EFIAPI ReadUnaligned32(IN CONST UINT32 *Buffer)
VOID EFIAPI FreePool(IN VOID *Buffer)
VOID *EFIAPI ReallocateRuntimePool(IN UINTN OldSize, IN UINTN NewSize, IN VOID *OldBuffer OPTIONAL)
UINT16 EFIAPI MmioBitFieldAndThenOr16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 AndData, IN UINT16 OrData)
UINT8 EFIAPI MmioBitFieldRead8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit)
UINT32 EFIAPI MmioBitFieldWrite32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 Value)
UINT8 EFIAPI MmioBitFieldOr8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 OrData)
UINT8 EFIAPI MmioBitFieldWrite8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 Value)
UINT8 EFIAPI MmioAnd8(IN UINTN Address, IN UINT8 AndData)
UINT16 EFIAPI MmioAndThenOr16(IN UINTN Address, IN UINT16 AndData, IN UINT16 OrData)
UINT32 EFIAPI MmioBitFieldAndThenOr32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 AndData, IN UINT32 OrData)
UINT8 EFIAPI MmioBitFieldAndThenOr8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 AndData, IN UINT8 OrData)
UINT16 EFIAPI MmioBitFieldWrite16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 Value)
UINT32 EFIAPI MmioBitFieldOr32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 OrData)
UINT16 EFIAPI MmioBitFieldAnd16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 AndData)
UINT32 EFIAPI MmioBitFieldRead32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit)
UINT16 EFIAPI MmioBitFieldOr16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 OrData)
UINT32 EFIAPI MmioAnd32(IN UINTN Address, IN UINT32 AndData)
UINT32 EFIAPI MmioOr32(IN UINTN Address, IN UINT32 OrData)
UINT8 EFIAPI MmioAndThenOr8(IN UINTN Address, IN UINT8 AndData, IN UINT8 OrData)
UINT16 EFIAPI MmioBitFieldRead16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit)
UINT16 EFIAPI MmioRead16(IN UINTN Address)
UINT8 EFIAPI MmioRead8(IN UINTN Address)
UINT8 EFIAPI MmioOr8(IN UINTN Address, IN UINT8 OrData)
UINT8 EFIAPI MmioWrite8(IN UINTN Address, IN UINT8 Value)
UINT32 EFIAPI MmioRead32(IN UINTN Address)
UINT16 EFIAPI MmioAnd16(IN UINTN Address, IN UINT16 AndData)
UINT8 EFIAPI MmioBitFieldAnd8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 AndData)
UINT16 EFIAPI MmioOr16(IN UINTN Address, IN UINT16 OrData)
UINT16 EFIAPI MmioWrite16(IN UINTN Address, IN UINT16 Value)
UINT32 EFIAPI MmioAndThenOr32(IN UINTN Address, IN UINT32 AndData, IN UINT32 OrData)
UINT32 EFIAPI MmioBitFieldAnd32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 AndData)
UINT32 EFIAPI MmioWrite32(IN UINTN Address, IN UINT32 Value)
#define RETURN_UNSUPPORTED
#define RETURN_OUT_OF_RESOURCES
#define ASSERT_EFI_ERROR(StatusParameter)
RETURN_STATUS EFIAPI PciExpressRegisterForRuntimeAccess(IN UINTN Address)
UINT8 EFIAPI PciExpressBitFieldAnd8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 AndData)
UINT32 EFIAPI PciExpressWrite32(IN UINTN Address, IN UINT32 Value)
UINT16 EFIAPI PciExpressBitFieldAnd16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 AndData)
UINT8 EFIAPI PciExpressAndThenOr8(IN UINTN Address, IN UINT8 AndData, IN UINT8 OrData)
UINT32 EFIAPI PciExpressBitFieldOr32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 OrData)
UINT16 EFIAPI PciExpressOr16(IN UINTN Address, IN UINT16 OrData)
UINT8 EFIAPI PciExpressBitFieldAndThenOr8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 AndData, IN UINT8 OrData)
UINT16 EFIAPI PciExpressBitFieldAndThenOr16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 AndData, IN UINT16 OrData)
UINT32 EFIAPI PciExpressBitFieldWrite32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 Value)
UINT16 EFIAPI PciExpressRead16(IN UINTN Address)
UINTN EFIAPI PciExpressReadBuffer(IN UINTN StartAddress, IN UINTN Size, OUT VOID *Buffer)
UINT8 EFIAPI PciExpressWrite8(IN UINTN Address, IN UINT8 Value)
UINT8 EFIAPI PciExpressBitFieldWrite8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 Value)
UINT8 EFIAPI PciExpressAnd8(IN UINTN Address, IN UINT8 AndData)
UINT32 EFIAPI PciExpressOr32(IN UINTN Address, IN UINT32 OrData)
UINT16 EFIAPI PciExpressWrite16(IN UINTN Address, IN UINT16 Value)
UINTN EFIAPI PciExpressWriteBuffer(IN UINTN StartAddress, IN UINTN Size, IN VOID *Buffer)
UINT8 EFIAPI PciExpressOr8(IN UINTN Address, IN UINT8 OrData)
#define ASSERT_INVALID_PCI_ADDRESS(A)
UINT32 EFIAPI PciExpressBitFieldAndThenOr32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 AndData, IN UINT32 OrData)
UINT8 EFIAPI PciExpressBitFieldOr8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT8 OrData)
UINT32 EFIAPI PciExpressBitFieldAnd32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT32 AndData)
UINT16 EFIAPI PciExpressBitFieldWrite16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 Value)
UINT16 EFIAPI PciExpressBitFieldOr16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit, IN UINT16 OrData)
UINT16 EFIAPI PciExpressAndThenOr16(IN UINTN Address, IN UINT16 AndData, IN UINT16 OrData)
UINT32 EFIAPI PciExpressAndThenOr32(IN UINTN Address, IN UINT32 AndData, IN UINT32 OrData)
UINT8 EFIAPI PciExpressBitFieldRead8(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit)
UINT16 EFIAPI PciExpressAnd16(IN UINTN Address, IN UINT16 AndData)
UINT8 EFIAPI PciExpressRead8(IN UINTN Address)
UINT32 EFIAPI PciExpressBitFieldRead32(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit)
UINT32 EFIAPI PciExpressAnd32(IN UINTN Address, IN UINT32 AndData)
UINT32 EFIAPI PciExpressRead32(IN UINTN Address)
STATIC UINTN PcdPciExpressBaseSize(VOID)
UINT16 EFIAPI PciExpressBitFieldRead16(IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit)
UINTN mDxeRuntimePciExpressLibPciExpressBaseAddress
UINTN mDxeRuntimePciExpressLibNumberOfRuntimeRanges
UINTN mDxeRuntimePciExpressLibLastRuntimeRange
PCI_EXPRESS_RUNTIME_REGISTRATION_TABLE * mDxeRuntimePciExpressLibRegistrationTable
EFI_EVENT mDxeRuntimePciExpressLibVirtualNotifyEvent
EFI_STATUS EFIAPI DxeRuntimePciExpressLibConstructor(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
VOID EFIAPI DxeRuntimePciExpressLibVirtualNotify(IN EFI_EVENT Event, IN VOID *Context)
UINTN GetPciExpressAddress(IN UINTN Address)
EFI_STATUS EFIAPI DxeRuntimePciExpressLibDestructor(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
#define PcdGet64(TokenName)
BOOLEAN EFIAPI EfiAtRuntime(VOID)
EFI_STATUS EFIAPI EfiConvertPointer(IN UINTN DebugDisposition, IN OUT VOID **Address)
BOOLEAN EFIAPI EfiGoneVirtual(VOID)