THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
- Module Name: PciLib.c\r
-\r
**/\r
\r
+\r
+#include <Base.h>\r
+\r
+\r
+#include <Library/PciCf8Lib.h>\r
+#include <Library/IoLib.h>\r
+#include <Library/DebugLib.h>\r
+\r
//\r
// Declare I/O Ports used to perform PCI Confguration Cycles\r
//\r
{\r
UINTN ReturnValue;\r
\r
- ASSERT_INVALID_PCI_ADDRESS (StartAddress);\r
+ ASSERT_INVALID_PCI_ADDRESS (StartAddress, 0);\r
ASSERT (((StartAddress & 0xFFF) + Size) <= 0x100);\r
\r
if (Size == 0) {\r
//\r
// Read a byte if StartAddress is byte aligned\r
//\r
- *(UINT8*)Buffer = PciCf8Read8 (StartAddress);\r
+ *(volatile UINT8 *)Buffer = PciCf8Read8 (StartAddress);\r
StartAddress += sizeof (UINT8);\r
Size -= sizeof (UINT8);\r
Buffer = (UINT8*)Buffer + 1;\r
//\r
// Read a word if StartAddress is word aligned\r
//\r
- *(UINT16*)Buffer = PciCf8Read16 (StartAddress);\r
+ *(volatile UINT16 *)Buffer = PciCf8Read16 (StartAddress);\r
StartAddress += sizeof (UINT16);\r
Size -= sizeof (UINT16);\r
Buffer = (UINT16*)Buffer + 1;\r
//\r
// Read as many double words as possible\r
//\r
- *(UINT32*)Buffer = PciCf8Read32 (StartAddress);\r
+ *(volatile UINT32 *)Buffer = PciCf8Read32 (StartAddress);\r
StartAddress += sizeof (UINT32);\r
Size -= sizeof (UINT32);\r
Buffer = (UINT32*)Buffer + 1;\r
//\r
// Read the last remaining word if exist\r
//\r
- *(UINT16*)Buffer = PciCf8Read16 (StartAddress);\r
+ *(volatile UINT16 *)Buffer = PciCf8Read16 (StartAddress);\r
StartAddress += sizeof (UINT16);\r
Size -= sizeof (UINT16);\r
Buffer = (UINT16*)Buffer + 1;\r
//\r
// Read the last remaining byte if exist\r
//\r
- *(UINT8*)Buffer = PciCf8Read8 (StartAddress);\r
+ *(volatile UINT8 *)Buffer = PciCf8Read8 (StartAddress);\r
}\r
\r
return ReturnValue;\r
{\r
UINTN ReturnValue;\r
\r
- ASSERT_INVALID_PCI_ADDRESS (StartAddress);\r
+ ASSERT_INVALID_PCI_ADDRESS (StartAddress, 0);\r
ASSERT (((StartAddress & 0xFFF) + Size) <= 0x100);\r
\r
if (Size == 0) {\r