ASSERT (((A) & (~0xfffffff | (M))) == 0)\r
\r
/**\r
- Translate PCI Lib address into format of PCI CFG2 PPI.\r
+ Translate PCI Lib address into format of PCI Root Bridge I/O Protocol.\r
\r
@param A Address that encodes the PCI Bus, Device, Function and\r
Register.\r
\r
**/\r
-#define PCI_TO_PCICFG2_ADDRESS(A) \\r
- (((A) << 4) & 0xff000000) | (((A) >> 4) & 0x00000700) | (((A) << 1) & 0x001f0000) | ((UINT64)((A) & 0xFFF) << 32)\r
+#define PCI_TO_PCI_ROOT_BRIDGE_IO_ADDRESS(A) \\r
+ ((((A) << 4) & 0xff000000) | (((A) >> 4) & 0x00000700) | (((A) << 1) & 0x001f0000) | (LShiftU64((A) & 0xfff, 32)))\r
\r
//\r
// Global varible to cache pointer to PCI Root Bridge I/O protocol.\r
mPciRootBridgeIo->Pci.Read (\r
mPciRootBridgeIo,\r
Width,\r
- PCI_TO_PCICFG2_ADDRESS (Address),\r
+ PCI_TO_PCI_ROOT_BRIDGE_IO_ADDRESS (Address),\r
1,\r
&Data\r
);\r
mPciRootBridgeIo->Pci.Write (\r
mPciRootBridgeIo,\r
Width,\r
- PCI_TO_PCICFG2_ADDRESS (Address),\r
+ PCI_TO_PCI_ROOT_BRIDGE_IO_ADDRESS (Address),\r
1,\r
&Data\r
);\r
UINTN ReturnValue;\r
\r
ASSERT_INVALID_PCI_ADDRESS (StartAddress, 0);\r
- ASSERT (((StartAddress & 0xFFF) + Size) <= 0x100);\r
+ ASSERT (((StartAddress & 0xFFF) + Size) <= 0x1000);\r
\r
if (Size == 0) {\r
return Size;\r
//\r
ReturnValue = Size;\r
\r
- if ((StartAddress & 1) != 0) {\r
+ if ((StartAddress & BIT0) != 0) {\r
//\r
// Read a byte if StartAddress is byte aligned\r
//\r
Buffer = (UINT8*)Buffer + 1;\r
}\r
\r
- if (Size >= sizeof (UINT16) && (StartAddress & 2) != 0) {\r
+ if (Size >= sizeof (UINT16) && (StartAddress & BIT1) != 0) {\r
//\r
// Read a word if StartAddress is word aligned\r
//\r
UINTN ReturnValue;\r
\r
ASSERT_INVALID_PCI_ADDRESS (StartAddress, 0);\r
- ASSERT (((StartAddress & 0xFFF) + Size) <= 0x100);\r
+ ASSERT (((StartAddress & 0xFFF) + Size) <= 0x1000);\r
\r
if (Size == 0) {\r
return 0;\r
//\r
ReturnValue = Size;\r
\r
- if ((StartAddress & 1) != 0) {\r
+ if ((StartAddress & BIT0) != 0) {\r
//\r
// Write a byte if StartAddress is byte aligned\r
//\r
Buffer = (UINT8*)Buffer + 1;\r
}\r
\r
- if (Size >= sizeof (UINT16) && (StartAddress & 2) != 0) {\r
+ if (Size >= sizeof (UINT16) && (StartAddress & BIT1) != 0) {\r
//\r
// Write a word if StartAddress is word aligned\r
//\r