]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseLib/Math64.c
MdePkg/BaseLib: re-specify Base64Decode(), and add temporary stub impl
[mirror_edk2.git] / MdePkg / Library / BaseLib / Math64.c
index 02a29fb73f9904e60a5a479db53f4725f8b992b1..154b97ae79f2d205a7762b4eaf31148e21d2d311 100644 (file)
@@ -2,22 +2,11 @@
   Leaf math worker functions that require 64-bit arithmetic support from the\r
   compiler.\r
 \r
-  Copyright (c) 2006, Intel Corporation<BR>\r
-  All rights reserved. This program and the accompanying materials\r
-  are licensed and made available under the terms and conditions of the BSD License\r
-  which accompanies this distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php\r
-\r
-  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
+  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
-//\r
-// Include common header file for this module.\r
-//\r
-\r
-\r
 #include "BaseLibInternals.h"\r
 \r
 /**\r
@@ -30,7 +19,7 @@
   @param  Operand The 64-bit operand to shift left.\r
   @param  Count   The number of bits to shift left.\r
 \r
-  @return Operand << Count\r
+  @return Operand << Count.\r
 \r
 **/\r
 UINT64\r
@@ -53,7 +42,7 @@ InternalMathLShiftU64 (
   @param  Operand The 64-bit operand to shift right.\r
   @param  Count   The number of bits to shift right.\r
 \r
-  @return Operand >> Count\r
+  @return Operand >> Count.\r
 \r
 **/\r
 UINT64\r
@@ -73,12 +62,10 @@ InternalMathRShiftU64 (
   This function shifts the 64-bit value Operand to the right by Count bits. The\r
   high Count bits are set to bit 63 of Operand.  The shifted value is returned.\r
 \r
-  If Count is greater than 63, then ASSERT().\r
-\r
   @param  Operand The 64-bit operand to shift right.\r
   @param  Count   The number of bits to shift right.\r
 \r
-  @return Operand arithmetically shifted right by Count\r
+  @return Operand arithmetically shifted right by Count.\r
 \r
 **/\r
 UINT64\r
@@ -93,7 +80,7 @@ InternalMathARShiftU64 (
   //\r
   // Test if this compiler supports arithmetic shift\r
   //\r
-  TestValue = (((-1) << (sizeof (-1) * 8 - 1)) >> (sizeof (-1) * 8 - 1));\r
+  TestValue = (INTN)((INT64)(1ULL << 63) >> 63);\r
   if (TestValue == -1) {\r
     //\r
     // Arithmetic shift is supported\r
@@ -120,7 +107,7 @@ InternalMathARShiftU64 (
   @param  Operand The 64-bit operand to rotate left.\r
   @param  Count   The number of bits to rotate left.\r
 \r
-  @return Operand <<< Count\r
+  @return Operand <<< Count.\r
 \r
 **/\r
 UINT64\r
@@ -144,7 +131,7 @@ InternalMathLRotU64 (
   @param  Operand The 64-bit operand to rotate right.\r
   @param  Count   The number of bits to rotate right.\r
 \r
-  @return Operand >>> Count\r
+  @return Operand >>> Count.\r
 \r
 **/\r
 UINT64\r
@@ -166,7 +153,7 @@ InternalMathRRotU64 (
 \r
   @param  Operand A 64-bit unsigned value.\r
 \r
-  @return The byte swaped Operand.\r
+  @return The byte swapped Operand.\r
 \r
 **/\r
 UINT64\r
@@ -185,10 +172,10 @@ InternalMathSwapBytes64 (
 }\r
 \r
 /**\r
-  Multiples a 64-bit unsigned integer by a 32-bit unsigned integer\r
+  Multiplies a 64-bit unsigned integer by a 32-bit unsigned integer\r
   and generates a 64-bit unsigned result.\r
 \r
-  This function multiples the 64-bit unsigned value Multiplicand by the 32-bit\r
+  This function multiplies the 64-bit unsigned value Multiplicand by the 32-bit\r
   unsigned value Multiplier and generates a 64-bit unsigned result. This 64-\r
   bit unsigned result is returned.\r
 \r
@@ -210,17 +197,17 @@ InternalMathMultU64x32 (
 \r
 \r
 /**\r
-  Multiples a 64-bit unsigned integer by a 64-bit unsigned integer\r
+  Multiplies a 64-bit unsigned integer by a 64-bit unsigned integer\r
   and generates a 64-bit unsigned result.\r
 \r
-  This function multiples the 64-bit unsigned value Multiplicand by the 64-bit\r
+  This function multiplies the 64-bit unsigned value Multiplicand by the 64-bit\r
   unsigned value Multiplier and generates a 64-bit unsigned result. This 64-\r
   bit unsigned result is returned.\r
 \r
   @param  Multiplicand  A 64-bit unsigned value.\r
   @param  Multiplier    A 64-bit unsigned value.\r
 \r
-  @return Multiplicand * Multiplier\r
+  @return Multiplicand * Multiplier.\r
 \r
 **/\r
 UINT64\r
@@ -241,10 +228,10 @@ InternalMathMultU64x64 (
   unsigned value Divisor and generates a 64-bit unsigned quotient. This\r
   function returns the 64-bit unsigned quotient.\r
 \r
-   @param  Dividend  A 64-bit unsigned value.\r
+  @param  Dividend  A 64-bit unsigned value.\r
   @param  Divisor   A 32-bit unsigned value.\r
 \r
-  @return Dividend / Divisor\r
+  @return Dividend / Divisor.\r
 \r
 **/\r
 UINT64\r
@@ -258,8 +245,8 @@ InternalMathDivU64x32 (
 }\r
 \r
 /**\r
-  Divides a 64-bit unsigned integer by a 32-bit unsigned integer\r
-  and generates a 32-bit unsigned remainder.\r
+  Divides a 64-bit unsigned integer by a 32-bit unsigned integer and\r
+  generates a 32-bit unsigned remainder.\r
 \r
   This function divides the 64-bit unsigned value Dividend by the 32-bit\r
   unsigned value Divisor and generates a 32-bit remainder. This function\r
@@ -268,7 +255,7 @@ InternalMathDivU64x32 (
   @param  Dividend  A 64-bit unsigned value.\r
   @param  Divisor   A 32-bit unsigned value.\r
 \r
-  @return Dividend % Divisor\r
+  @return Dividend % Divisor.\r
 \r
 **/\r
 UINT32\r
@@ -295,7 +282,7 @@ InternalMathModU64x32 (
   @param  Remainder A pointer to a 32-bit unsigned value. This parameter is\r
                     optional and may be NULL.\r
 \r
-  @return Dividend / Divisor\r
+  @return Dividend / Divisor.\r
 \r
 **/\r
 UINT64\r
@@ -303,7 +290,7 @@ EFIAPI
 InternalMathDivRemU64x32 (\r
   IN      UINT64                    Dividend,\r
   IN      UINT32                    Divisor,\r
-  OUT     UINT32                    *Remainder  OPTIONAL\r
+  OUT     UINT32                    *Remainder OPTIONAL\r
   )\r
 {\r
   if (Remainder != NULL) {\r
@@ -334,7 +321,7 @@ EFIAPI
 InternalMathDivRemU64x64 (\r
   IN      UINT64                    Dividend,\r
   IN      UINT64                    Divisor,\r
-  OUT     UINT64                    *Remainder  OPTIONAL\r
+  OUT     UINT64                    *Remainder OPTIONAL\r
   )\r
 {\r
   if (Remainder != NULL) {\r
@@ -345,19 +332,19 @@ InternalMathDivRemU64x64 (
 \r
 /**\r
   Divides a 64-bit signed integer by a 64-bit signed integer and\r
-  generates a  64-bit signed result and a optional 64-bit signed remainder.\r
+  generates a 64-bit signed result and an optional 64-bit signed remainder.\r
 \r
-  This function divides the 64-bit unsigned value Dividend by the 64-bit\r
-  unsigned value Divisor and generates a 64-bit unsigned quotient. If Remainder\r
-  is not NULL, then the 64-bit unsigned remainder is returned in Remainder.\r
-  This function returns the 64-bit unsigned quotient.\r
+  This function divides the 64-bit signed value Dividend by the 64-bit\r
+  signed value Divisor and generates a 64-bit signed quotient. If Remainder\r
+  is not NULL, then the 64-bit signed remainder is returned in Remainder.\r
+  This function returns the 64-bit signed quotient.\r
 \r
   @param  Dividend  A 64-bit signed value.\r
   @param  Divisor   A 64-bit signed value.\r
   @param  Remainder A pointer to a 64-bit signed value. This parameter is\r
                     optional and may be NULL.\r
 \r
-  @return Dividend / Divisor\r
+  @return Dividend / Divisor.\r
 \r
 **/\r
 INT64\r