summaryrefslogtreecommitdiff
path: root/MdePkg/Library/BaseLib/Math64.c
AgeCommit message (Collapse)Author
2015-12-31MdePkg/BaseLib: do not rely on undefined behavior in arithmetic shiftArd Biesheuvel
The runtime test whether the compiler supports arithmetic shift of negative signed numbers currently relies on undefined behavior in C, which means that all bets are off regarding whether the condition that follows passes or fails, regardless of whether the compiler in fact supports arithmetic shift or not. Relevant quote from ISO C99 (6.5.7/4) The result of E1 << E2 is E1 left-shifted E2 bit positions; vacated bits are filled with zeros. If E1 has an unsigned type, the value of the result is E1 × 2^E2, reduced modulo one more than the maximum value representable in the result type. If E1 has a signed type and nonnegative value, and E1 × 2^E2 is representable in the result type, then that is the resulting value; otherwise, the behavior is undefined. For historic purposes, let's keep the test in place (although it is doubtful we actually need it) but rewrite it in a way that prevents compilers from this century from doing whacky things with it. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Liming Gao <liming.gao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19580 6f19259b-4bc3-4df7-8a09-765794883524
2010-06-24Minor grammatical work--mostly adding periods. Items with ONLY period added ↵myronporter
did not have the heading date changed, but Items with content changes had heading copyright dates updated. Sending separately a list of files missing Doxygen @param and @return information. (PENDING) git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10596 6f19259b-4bc3-4df7-8a09-765794883524
2010-04-23Update the copyright notice formathhtian
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10405 6f19259b-4bc3-4df7-8a09-765794883524
2008-12-11Synchronize BaseLib h files to c files.gikidy
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6983 6f19259b-4bc3-4df7-8a09-765794883524
2008-10-20removed blank lines to refine source codes.vanjeff
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6135 6f19259b-4bc3-4df7-8a09-765794883524
2008-09-24Update BaseLib according to code review comments.xli24
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5956 6f19259b-4bc3-4df7-8a09-765794883524
2008-09-17remove unnecessary comments introduced by tools from MdePkg. The regular ↵vanjeff
express is "//^p//[ ]Include[ ]common[ ]header[ ]file[ ]for[ ]this[ ]module[.]^p//" git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5911 6f19259b-4bc3-4df7-8a09-765794883524
2008-07-08Code scrub:yshang1
MdePkg/Library/BaseCacheMaintenanceLib MdePkg/Library/BaseDebugLibNull MdePkg/Library/BaseIoLibIntrinsic MdePkg/Library/BaseLib MdePkg/Library/BaseMemoryLib MdePkg/Library/BaseMemoryLibMmx MdePkg/Library/BaseMemoryLibOptDxe MdePkg/Library/BaseMemoryLibOptPei MdePkg/Library/BaseMemoryLibRepStr MdePkg/Library/BaseMemoryLibSse2 MdePkg/Library/BasePeCoffGetEntryPointLib git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5426 6f19259b-4bc3-4df7-8a09-765794883524
2007-07-12Removed MdePkg usage of ModuleName: in file headersAJFISH
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3217 6f19259b-4bc3-4df7-8a09-765794883524
2007-06-29Removed CommonHeader.h generated file from the MdePkg. AJFISH
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2922 6f19259b-4bc3-4df7-8a09-765794883524
2007-06-22Import some basic libraries instances for Mde Packages. vanjeff
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2704 6f19259b-4bc3-4df7-8a09-765794883524
2007-06-01Moved the MdePkg to OldMdePkg so that new code in MdePkg does not break ↵lhauch
existing builds. Also updated the SPD and FPD files UiNames git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2616 6f19259b-4bc3-4df7-8a09-765794883524
2007-01-25Make MDE package pass intel IPF compiler with /W4 /WX switched on.xli24
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2312 6f19259b-4bc3-4df7-8a09-765794883524
2006-07-201.Added EFIAPI for some assembly functions declarevanjeff
2.Modified some functions header git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1052 6f19259b-4bc3-4df7-8a09-765794883524
2006-07-191. added functions header for BaseUefiDecompressLivanjeff
2. added some internal functions header for BaseLib 3. added EFIAPI for some internal assembly files declare git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1050 6f19259b-4bc3-4df7-8a09-765794883524
2006-06-04UefiLib:qhuang8
Add two new interfaces of EfiCreateEventLegacyBootEx & EfiCreateEventReadyToBootEx Fix a bug in EfiCreateEventLegacyBoot & EfiCreateEventReadyToBoot. (#51) PciLib: Add missing ASSERT()s in PciReadBuffer() & PciWriteBuffer() (#70) IoLib Add ASSERT()s to check alignment. MemoryAllocationLib: For AllocateXXXCopyBuffer(). Add ASSERT()s for cases when allocations fails. BaseLib: Change the return type of InternalMathModU64x32 from UINT64 to UINT32 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@416 6f19259b-4bc3-4df7-8a09-765794883524
2006-04-21Initial import.bbahnsen
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3 6f19259b-4bc3-4df7-8a09-765794883524