]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseLib/HighBitSet32.c
Clean up DEC files:
[mirror_edk2.git] / MdePkg / Library / BaseLib / HighBitSet32.c
index 65f067ac1adfd9e1634ae2f18447f55ee5e3ff05..8d055fe3973f2bb7bcbe4205b8c1f9832d6bd4fd 100644 (file)
@@ -1,17 +1,20 @@
 /** @file\r
   Math worker functions.\r
 \r
-  Copyright (c) 2006, Intel Corporation<BR>\r
-  All rights reserved. This program and the accompanying materials\r
+  Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
+  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
+  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
 \r
 **/\r
 \r
+\r
+\r
+\r
 #include "BaseLibInternals.h"\r
 \r
 /**\r
@@ -24,8 +27,8 @@
 \r
   @param  Operand The 32-bit operand to evaluate.\r
 \r
-  @return Position of the highest bit set in Operand if found.\r
-  @retval -1  Operand is zero.\r
+  @retval 0..31  Position of the highest bit set in Operand if found.\r
+  @retval -1     Operand is zero.\r
 \r
 **/\r
 INTN\r
@@ -36,6 +39,9 @@ HighBitSet32 (
 {\r
   INTN                              BitIndex;\r
 \r
-  for (BitIndex = -1; Operand != 0; BitIndex++, Operand >>= 1);\r
+  if (Operand == 0) {\r
+    return - 1;\r
+  }\r
+  for (BitIndex = 31; (INT32)Operand > 0; BitIndex--, Operand <<= 1);\r
   return BitIndex;\r
 }\r