From: Pierre Gondois <pierre.gond...@arm.com> The following command line: build -b NOOPT -a IA32 -t VS2017 -p edk2\EmbeddedPkg\EmbeddedPkg.dsc
Generates the following error: MmcDxe.lib(Diagnostics.obj) : error LNK2001: unresolved external symbol __allshl MmcDxe.lib(Diagnostics.obj) : error LNK2001: unresolved external symbol __aullshr MmcDxe.lib(MmcBlockIo.obj) : error LNK2001: unresolved external symbol __allmul These erros are due to the use of shift/multiply operations on UINT64 variable on a IA32 architecture. Signed-off-by: Pierre Gondois <pierre.gond...@arm.com> --- The changes can be seen at: https://github.com/PierreARM/edk2/commits/831_Fix_VS2017_build_error_v1 Notes: v1: - Fix VS2017 build errors. [Pierre] EmbeddedPkg/Universal/MmcDxe/Diagnostics.c | 10 +++++++--- EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c | 6 +++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/EmbeddedPkg/Universal/MmcDxe/Diagnostics.c b/EmbeddedPkg/Universal/MmcDxe/Diagnostics.c index 20defeb8745a2eb243f316ba9d4e0d03016e260b..49b069043093544a3cbadc46fda4de483803d638 100644 --- a/EmbeddedPkg/Universal/MmcDxe/Diagnostics.c +++ b/EmbeddedPkg/Universal/MmcDxe/Diagnostics.c @@ -1,7 +1,7 @@ /** @file Diagnostics Protocol implementation for the MMC DXE driver - Copyright (c) 2011-2014, ARM Limited. All rights reserved. + Copyright (c) 2011-2020, ARM Limited. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent @@ -56,7 +56,7 @@ GenerateRandomBuffer ( UINT64* Buffer64 = (UINT64*)Buffer; for (i = 0; i < (BufferSize >> 3); i++) { - *Buffer64 = i | (~i << 32); + *Buffer64 = i | LShiftU64 (~i, 32); Buffer64++; } } @@ -227,7 +227,11 @@ MmcDriverDiagnosticsRunDiagnostics ( // LBA=10 Size=BlockSize DiagnosticLog (L"MMC Driver Diagnostics - Test: Any Block\n"); - Status = MmcReadWriteDataTest (MmcHostInstance, MmcHostInstance->BlockIo.Media->LastBlock >> 1, MmcHostInstance->BlockIo.Media->BlockSize); + Status = MmcReadWriteDataTest ( + MmcHostInstance, + RShiftU64 (MmcHostInstance->BlockIo.Media->LastBlock, 1), + MmcHostInstance->BlockIo.Media->BlockSize + ); // LBA=LastBlock Size=BlockSize DiagnosticLog (L"MMC Driver Diagnostics - Test: Last Block\n"); diff --git a/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c b/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c index b508c466d9c5c52ffff7855ea32cbd427927e27b..2a5d72d4daf6045e691e51d5b82ed8e6fb721121 100644 --- a/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c +++ b/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c @@ -1,6 +1,6 @@ /** @file * -* Copyright (c) 2011-2015, ARM Limited. All rights reserved. +* Copyright (c) 2011-2020, ARM Limited. All rights reserved. * * SPDX-License-Identifier: BSD-2-Clause-Patent * @@ -149,7 +149,7 @@ MmcTransferBlock ( if (MmcHostInstance->CardInfo.OCRData.AccessMode & SD_CARD_CAPACITY) { CmdArg = Lba; } else { - CmdArg = Lba * This->Media->BlockSize; + CmdArg = MultU64x32 (Lba, This->Media->BlockSize); } } else { //Set command argument based on the card access mode (Byte mode or Block mode) @@ -157,7 +157,7 @@ MmcTransferBlock ( MMC_OCR_ACCESS_SECTOR) { CmdArg = Lba; } else { - CmdArg = Lba * This->Media->BlockSize; + CmdArg = MultU64x32 (Lba, This->Media->BlockSize); } } -- 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)' -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#61831): https://edk2.groups.io/g/devel/message/61831 Mute This Topic: https://groups.io/mt/75211230/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-