From 394bbc5930f78732f0bc5daf286beb3f8e39f27d Mon Sep 17 00:00:00 2001 From: klu2 Date: Thu, 8 May 2008 04:11:25 +0000 Subject: [PATCH] 1) Fix some casting working in X64 building 2) Use SetMem/CopyMem function to do structure initialization to avoid X64 compiler call standard C library. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5180 6f19259b-4bc3-4df7-8a09-765794883524 --- DuetPkg/8254TimerDxe/Timer.c | 2 +- DuetPkg/BootSector/Makefile | 36 +++++++++---------- DuetPkg/EfiLdr/TianoDecompress.c | 31 +++++----------- DuetPkg/FSVariable/FSVariable.c | 6 +++- .../PcatPciRootBridgeIo.c | 4 +-- .../x64/PcatIo.c | 28 +++++++-------- 6 files changed, 48 insertions(+), 59 deletions(-) diff --git a/DuetPkg/8254TimerDxe/Timer.c b/DuetPkg/8254TimerDxe/Timer.c index f74827061e..c7deadd737 100644 --- a/DuetPkg/8254TimerDxe/Timer.c +++ b/DuetPkg/8254TimerDxe/Timer.c @@ -265,7 +265,7 @@ Returns: // // Convert TimerPeriod into 8254 counts // - TimerCount = DivU64x32 (MultU64x32 (119318, (UINTN) TimerPeriod) + 500000, 1000000); + TimerCount = DivU64x32 (MultU64x32 (119318, (UINT32) TimerPeriod) + 500000, 1000000); // // Check for overflow diff --git a/DuetPkg/BootSector/Makefile b/DuetPkg/BootSector/Makefile index e88743d1cf..aaa8ac1daa 100644 --- a/DuetPkg/BootSector/Makefile +++ b/DuetPkg/BootSector/Makefile @@ -37,74 +37,74 @@ all: $(TARGET_FILES) #============= $(OUTPUT_DIR)\bootsect.obj:$(MODULE_DIR)\bootsect.asm - "$(ASM)" /c /omf /Fo"$(OUTPUT_DIR)\bootsect.obj" /FR"$(OUTPUT_DIR)\bootsect.txt" "$(MODULE_DIR)\bootsect.asm" + "$(ASM16)" /c /omf /Fo"$(OUTPUT_DIR)\bootsect.obj" /FR"$(OUTPUT_DIR)\bootsect.txt" "$(MODULE_DIR)\bootsect.asm" $(OUTPUT_DIR)\bootsect.com:$(OUTPUT_DIR)\bootsect.obj - "$(ASMLINK)" /tiny $(OUTPUT_DIR)\bootsect.obj,$(OUTPUT_DIR)\bootsect.com,$(OUTPUT_DIR)\bootsect.map,,, + "$(ASMLINK16)" /tiny $(OUTPUT_DIR)\bootsect.obj,$(OUTPUT_DIR)\bootsect.com,$(OUTPUT_DIR)\bootsect.map,,, #============= $(OUTPUT_DIR)\bs16.obj:$(MODULE_DIR)\bs16.asm - "$(ASM)" /c /omf /Fo"$(OUTPUT_DIR)\bs16.obj" "$(MODULE_DIR)\bs16.asm" + "$(ASM16)" /c /omf /Fo"$(OUTPUT_DIR)\bs16.obj" "$(MODULE_DIR)\bs16.asm" $(OUTPUT_DIR)\bs16.com:$(OUTPUT_DIR)\bs16.obj - "$(ASMLINK)" /tiny $(OUTPUT_DIR)\bs16.obj,$(OUTPUT_DIR)\bs16.com,$(OUTPUT_DIR)\bs16.map,,, + "$(ASMLINK16)" /tiny $(OUTPUT_DIR)\bs16.obj,$(OUTPUT_DIR)\bs16.com,$(OUTPUT_DIR)\bs16.map,,, #============= $(OUTPUT_DIR)\bs32.obj:$(MODULE_DIR)\bs32.asm - "$(ASM)" /c /omf /Fo"$(OUTPUT_DIR)\bs32.obj" "$(MODULE_DIR)\bs32.asm" + "$(ASM16)" /c /omf /Fo"$(OUTPUT_DIR)\bs32.obj" "$(MODULE_DIR)\bs32.asm" $(OUTPUT_DIR)\bs32.com:$(OUTPUT_DIR)\bs32.obj - "$(ASMLINK)" /tiny $(OUTPUT_DIR)\bs32.obj,$(OUTPUT_DIR)\bs32.com,$(OUTPUT_DIR)\bs32.map,,, + "$(ASMLINK16)" /tiny $(OUTPUT_DIR)\bs32.obj,$(OUTPUT_DIR)\bs32.com,$(OUTPUT_DIR)\bs32.map,,, #============= $(OUTPUT_DIR)\Gpt.obj:$(MODULE_DIR)\Gpt.asm - "$(ASM)" /c /omf /Fo"$(OUTPUT_DIR)\Gpt.obj" "$(MODULE_DIR)\Gpt.asm" + "$(ASM16)" /c /omf /Fo"$(OUTPUT_DIR)\Gpt.obj" "$(MODULE_DIR)\Gpt.asm" $(OUTPUT_DIR)\Gpt.com:$(OUTPUT_DIR)\Gpt.obj - "$(ASMLINK)" /tiny $(OUTPUT_DIR)\Gpt.obj,$(OUTPUT_DIR)\Gpt.com,$(OUTPUT_DIR)\Gpt.map,,, + "$(ASMLINK16)" /tiny $(OUTPUT_DIR)\Gpt.obj,$(OUTPUT_DIR)\Gpt.com,$(OUTPUT_DIR)\Gpt.map,,, #============= $(OUTPUT_DIR)\Mbr.obj:$(MODULE_DIR)\Mbr.asm - "$(ASM)" /c /omf /Fo"$(OUTPUT_DIR)\Mbr.obj" "$(MODULE_DIR)\Mbr.asm" + "$(ASM16)" /c /omf /Fo"$(OUTPUT_DIR)\Mbr.obj" "$(MODULE_DIR)\Mbr.asm" $(OUTPUT_DIR)\Mbr.com:$(OUTPUT_DIR)\Mbr.obj - "$(ASMLINK)" /tiny $(OUTPUT_DIR)\Mbr.obj,$(OUTPUT_DIR)\Mbr.com,$(OUTPUT_DIR)\Mbr.map,,, + "$(ASMLINK16)" /tiny $(OUTPUT_DIR)\Mbr.obj,$(OUTPUT_DIR)\Mbr.com,$(OUTPUT_DIR)\Mbr.map,,, #============ $(OUTPUT_DIR)\Start.obj:$(MODULE_DIR)\Start.asm - "$(ASM)" /c /omf /Fo"$(OUTPUT_DIR)\Start.obj" "$(MODULE_DIR)\Start.asm" + "$(ASM16)" /c /omf /Fo"$(OUTPUT_DIR)\Start.obj" "$(MODULE_DIR)\Start.asm" $(OUTPUT_DIR)\Start.com:$(OUTPUT_DIR)\Start.obj - "$(ASMLINK)" /tiny $(OUTPUT_DIR)\Start.obj,$(OUTPUT_DIR)\Start.com,$(OUTPUT_DIR)\Start.map,,, + "$(ASMLINK16)" /tiny $(OUTPUT_DIR)\Start.obj,$(OUTPUT_DIR)\Start.com,$(OUTPUT_DIR)\Start.map,,, #============= $(OUTPUT_DIR)\Start16.obj:$(MODULE_DIR)\Start16.asm - "$(ASM)" /c /omf /Fo"$(OUTPUT_DIR)\Start16.obj" "$(MODULE_DIR)\Start16.asm" + "$(ASM16)" /c /omf /Fo"$(OUTPUT_DIR)\Start16.obj" "$(MODULE_DIR)\Start16.asm" $(OUTPUT_DIR)\Start16.com:$(OUTPUT_DIR)\Start16.obj - "$(ASMLINK)" /tiny $(OUTPUT_DIR)\Start16.obj,$(OUTPUT_DIR)\Start16.com,$(OUTPUT_DIR)\Start16.map,,, + "$(ASMLINK16)" /tiny $(OUTPUT_DIR)\Start16.obj,$(OUTPUT_DIR)\Start16.com,$(OUTPUT_DIR)\Start16.map,,, #============= $(OUTPUT_DIR)\Start32.obj:$(MODULE_DIR)\Start32.asm - "$(ASM)" /c /omf /Fo"$(OUTPUT_DIR)\Start32.obj" "$(MODULE_DIR)\Start32.asm" + "$(ASM16)" /c /omf /Fo"$(OUTPUT_DIR)\Start32.obj" "$(MODULE_DIR)\Start32.asm" $(OUTPUT_DIR)\Start32.com:$(OUTPUT_DIR)\Start32.obj - "$(ASMLINK)" /tiny $(OUTPUT_DIR)\Start32.obj,$(OUTPUT_DIR)\Start32.com,$(OUTPUT_DIR)\Start32.map,,, + "$(ASMLINK16)" /tiny $(OUTPUT_DIR)\Start32.obj,$(OUTPUT_DIR)\Start32.com,$(OUTPUT_DIR)\Start32.map,,, #============= $(OUTPUT_DIR)\efi32.obj:$(MODULE_DIR)\efi32.asm - "$(ASM)" /c /omf /Fo"$(OUTPUT_DIR)\efi32.obj" "$(MODULE_DIR)\efi32.asm" + "$(ASM16)" /c /omf /Fo"$(OUTPUT_DIR)\efi32.obj" "$(MODULE_DIR)\efi32.asm" $(OUTPUT_DIR)\efi32.com:$(OUTPUT_DIR)\efi32.obj - "$(ASMLINK)" /tiny $(OUTPUT_DIR)\efi32.obj,$(OUTPUT_DIR)\efi32.com,$(OUTPUT_DIR)\efi32.map,,, + "$(ASMLINK16)" /tiny $(OUTPUT_DIR)\efi32.obj,$(OUTPUT_DIR)\efi32.com,$(OUTPUT_DIR)\efi32.map,,, #============= diff --git a/DuetPkg/EfiLdr/TianoDecompress.c b/DuetPkg/EfiLdr/TianoDecompress.c index 9a9ab70be4..df7efbd750 100644 --- a/DuetPkg/EfiLdr/TianoDecompress.c +++ b/DuetPkg/EfiLdr/TianoDecompress.c @@ -201,9 +201,7 @@ Returns: UINT16 NextCode; UINT16 Mask; - for (Index = 1; Index <= 16; Index++) { - Count[Index] = 0; - } + SetMem (&Count[1], sizeof(UINT16) * 16, 0); for (Index = 0; Index < NumOfChar; Index++) { Count[BitLen[Index]]++; @@ -235,9 +233,7 @@ Returns: if (Index != 0) { Index3 = (UINT16) (1U << TableBits); - while (Index != Index3) { - Table[Index++] = 0; - } + SetMem(&Table[Index], sizeof(UINT16) * (Index3 - Index + 1), 0); } Avail = NumOfChar; @@ -388,9 +384,7 @@ Returns: Sd->mPTTable[Index] = CharC; } - for (Index = 0; Index < nn; Index++) { - Sd->mPTLen[Index] = 0; - } + SetMem ((VOID*) &Sd->mPTLen, nn * sizeof(UINT8), 0); return 0; } @@ -421,10 +415,7 @@ Returns: } } - while (Index < nn) { - Sd->mPTLen[Index++] = 0; - } - + SetMem ((VOID*) &Sd->mPTLen[Index], (nn - Index) * sizeof(UINT8), 0); return MakeTable (Sd, nn, Sd->mPTLen, 8, Sd->mPTTable); } @@ -457,9 +448,7 @@ Returns: (VOID) if (Number == 0) { CharC = (UINT16) GetBits (Sd, CBIT); - for (Index = 0; Index < NC; Index++) { - Sd->mCLen[Index] = 0; - } + SetMem ((VOID*)&Sd->mCLen, sizeof(UINT8) * NC, 0); for (Index = 0; Index < 4096; Index++) { Sd->mCTable[Index] = CharC; @@ -513,9 +502,7 @@ Returns: (VOID) } } - while (Index < NC) { - Sd->mCLen[Index++] = 0; - } + SetMem ((VOID*) &Sd->mCLen[Index], sizeof(UINT8) * (NC - Index), 0); MakeTable (Sd, NC, Sd->mCLen, 12, Sd->mCTable); @@ -731,7 +718,6 @@ Returns: --*/ { - UINT32 Index; UINT32 CompSize; UINT32 OrigSize; EFI_STATUS Status; @@ -773,9 +759,8 @@ Returns: Src = Src + 8; - for (Index = 0; Index < sizeof (SCRATCH_DATA); Index++) { - ((UINT8 *) Sd)[Index] = 0; - } + SetMem ((VOID*) Sd, sizeof(SCRATCH_DATA), 0); + // // The length of the field 'Position Set Code Length Array Size' in Block Header. // For EFI 1.1 de/compression algorithm(Version 1), mPBit = 4 diff --git a/DuetPkg/FSVariable/FSVariable.c b/DuetPkg/FSVariable/FSVariable.c index 085a492952..1ec2e56d3e 100644 --- a/DuetPkg/FSVariable/FSVariable.c +++ b/DuetPkg/FSVariable/FSVariable.c @@ -1165,7 +1165,11 @@ Returns: return Status; } - VariableStoreEntry = FlashMapEntryData->Entries[0]; + CopyMem( + (VOID*)&VariableStoreEntry, + (VOID*)&FlashMapEntryData->Entries[0], + sizeof(EFI_FLASH_SUBAREA_ENTRY) + ); // // Mark the variable storage region of the FLASH as RUNTIME diff --git a/DuetPkg/PciRootBridgeNoEnumerationDxe/PcatPciRootBridgeIo.c b/DuetPkg/PciRootBridgeNoEnumerationDxe/PcatPciRootBridgeIo.c index abb6acbd96..84abcf603a 100644 --- a/DuetPkg/PciRootBridgeNoEnumerationDxe/PcatPciRootBridgeIo.c +++ b/DuetPkg/PciRootBridgeNoEnumerationDxe/PcatPciRootBridgeIo.c @@ -270,7 +270,7 @@ PcatRootBridgeIoPollMem ( { EFI_STATUS Status; UINT64 NumberOfTicks; - UINTN Remainder; + UINT32 Remainder; if (Result == NULL) { return EFI_INVALID_PARAMETER; @@ -332,7 +332,7 @@ PcatRootBridgeIoPollIo ( { EFI_STATUS Status; UINT64 NumberOfTicks; - UINTN Remainder; + UINT32 Remainder; if (Result == NULL) { return EFI_INVALID_PARAMETER; diff --git a/DuetPkg/PciRootBridgeNoEnumerationDxe/x64/PcatIo.c b/DuetPkg/PciRootBridgeNoEnumerationDxe/x64/PcatIo.c index 830dcbb8c7..0a786f823d 100644 --- a/DuetPkg/PciRootBridgeNoEnumerationDxe/x64/PcatIo.c +++ b/DuetPkg/PciRootBridgeNoEnumerationDxe/x64/PcatIo.c @@ -122,7 +122,7 @@ PcatRootBridgeIoPciRW ( UsePciExpressAccess = FALSE; - EfiCopyMem (&PciAddress, &UserAddress, sizeof(UINT64)); + CopyMem (&PciAddress, &UserAddress, sizeof(UINT64)); if (PciAddress.ExtendedRegister > 0xFF) { // @@ -136,9 +136,9 @@ PcatRootBridgeIoPciRW ( } } else { if (PciAddress.ExtendedRegister != 0) { - Pci.Reg = PciAddress.ExtendedRegister & 0xFF; + Pci.Bits.Reg = PciAddress.ExtendedRegister & 0xFF; } else { - Pci.Reg = PciAddress.Register; + Pci.Bits.Reg = PciAddress.Register; } // // Note: We can also use PciExpress access here, if wanted. @@ -146,11 +146,11 @@ PcatRootBridgeIoPciRW ( } if (!UsePciExpressAccess) { - Pci.Func = PciAddress.Function; - Pci.Dev = PciAddress.Device; - Pci.Bus = PciAddress.Bus; - Pci.Reserved = 0; - Pci.Enable = 1; + Pci.Bits.Func = PciAddress.Function; + Pci.Bits.Dev = PciAddress.Device; + Pci.Bits.Bus = PciAddress.Bus; + Pci.Bits.Reserved = 0; + Pci.Bits.Enable = 1; // // PCI Config access are all 32-bit alligned, but by accessing the @@ -160,11 +160,11 @@ PcatRootBridgeIoPciRW ( // To read a byte of PCI config space you load 0xcf8 and // read 0xcfc, 0xcfd, 0xcfe, 0xcff // - PciDataStride = Pci.Reg & 0x03; + PciDataStride = Pci.Bits.Reg & 0x03; while (Count) { PciAligned = Pci; - PciAligned.Reg &= 0xfc; + PciAligned.Bits.Reg &= 0xfc; PciData = (UINTN)PrivateData->PciData + PciDataStride; EfiAcquireLock(&PrivateData->PciLock); This->Io.Write (This, EfiPciWidthUint32, PrivateData->PciAddress, 1, &PciAligned); @@ -176,7 +176,7 @@ PcatRootBridgeIoPciRW ( EfiReleaseLock(&PrivateData->PciLock); UserBuffer = ((UINT8 *)UserBuffer) + OutStride; PciDataStride = (PciDataStride + InStride) % 4; - Pci.Reg += InStride; + Pci.Bits.Reg += InStride; Count -= 1; } } else { @@ -425,7 +425,7 @@ CheckForRom ( LastImage = TRUE; - EfiZeroMem (&EfiRomHeader, sizeof(EfiRomHeader)); + ZeroMem (&EfiRomHeader, sizeof(EfiRomHeader)); IoDev->Mem.Read ( IoDev, EfiPciWidthUint8, @@ -438,7 +438,7 @@ CheckForRom ( if (EfiRomHeader.Signature == 0xaa55) { - EfiZeroMem (&Pcir, sizeof(Pcir)); + ZeroMem (&Pcir, sizeof(Pcir)); IoDev->Mem.Read ( IoDev, EfiPciWidthUint8, @@ -480,7 +480,7 @@ CheckForRom ( &TempPciOptionRomDescriptors ); if (mPciOptionRomTable.PciOptionRomCount > 0) { - EfiCopyMem( + CopyMem( TempPciOptionRomDescriptors, mPciOptionRomTable.PciOptionRomDescriptors, (UINT32)mPciOptionRomTable.PciOptionRomCount * sizeof(EFI_PCI_OPTION_ROM_DESCRIPTOR) -- 2.39.2