From 5dc4fd785603177d77d186f0d8d56ce7613db2cf Mon Sep 17 00:00:00 2001 From: xli24 Date: Tue, 19 May 2009 07:09:45 +0000 Subject: Fix the unaligned issue of PCI read/write buffer. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8333 6f19259b-4bc3-4df7-8a09-765794883524 --- MdePkg/Library/PeiPciSegmentLibPciCfg2/PciSegmentLib.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'MdePkg/Library/PeiPciSegmentLibPciCfg2') diff --git a/MdePkg/Library/PeiPciSegmentLibPciCfg2/PciSegmentLib.c b/MdePkg/Library/PeiPciSegmentLibPciCfg2/PciSegmentLib.c index 332d2a9b45..a08298aaa2 100644 --- a/MdePkg/Library/PeiPciSegmentLibPciCfg2/PciSegmentLib.c +++ b/MdePkg/Library/PeiPciSegmentLibPciCfg2/PciSegmentLib.c @@ -1259,7 +1259,7 @@ PciSegmentReadBuffer ( // // Read a word if StartAddress is word aligned // - *(volatile UINT16 *)Buffer = PciSegmentRead16 (StartAddress); + WriteUnaligned16 (Buffer, PciSegmentRead16 (StartAddress)); StartAddress += sizeof (UINT16); Size -= sizeof (UINT16); Buffer = (UINT16*)Buffer + 1; @@ -1269,7 +1269,7 @@ PciSegmentReadBuffer ( // // Read as many double words as possible // - *(volatile UINT32 *)Buffer = PciSegmentRead32 (StartAddress); + WriteUnaligned32 (Buffer, PciSegmentRead32 (StartAddress)); StartAddress += sizeof (UINT32); Size -= sizeof (UINT32); Buffer = (UINT32*)Buffer + 1; @@ -1279,7 +1279,7 @@ PciSegmentReadBuffer ( // // Read the last remaining word if exist // - *(volatile UINT16 *)Buffer = PciSegmentRead16 (StartAddress); + WriteUnaligned16 (Buffer, PciSegmentRead16 (StartAddress)); StartAddress += sizeof (UINT16); Size -= sizeof (UINT16); Buffer = (UINT16*)Buffer + 1; @@ -1358,7 +1358,7 @@ PciSegmentWriteBuffer ( // // Write a word if StartAddress is word aligned // - PciSegmentWrite16 (StartAddress, *(UINT16*)Buffer); + PciSegmentWrite16 (StartAddress, ReadUnaligned16 (Buffer)); StartAddress += sizeof (UINT16); Size -= sizeof (UINT16); Buffer = (UINT16*)Buffer + 1; @@ -1368,7 +1368,7 @@ PciSegmentWriteBuffer ( // // Write as many double words as possible // - PciSegmentWrite32 (StartAddress, *(UINT32*)Buffer); + PciSegmentWrite32 (StartAddress, ReadUnaligned32 (Buffer)); StartAddress += sizeof (UINT32); Size -= sizeof (UINT32); Buffer = (UINT32*)Buffer + 1; @@ -1378,7 +1378,7 @@ PciSegmentWriteBuffer ( // // Write the last remaining word if exist // - PciSegmentWrite16 (StartAddress, *(UINT16*)Buffer); + PciSegmentWrite16 (StartAddress, ReadUnaligned16 (Buffer)); StartAddress += sizeof (UINT16); Size -= sizeof (UINT16); Buffer = (UINT16*)Buffer + 1; -- cgit v1.2.3