]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseLib/HighBitSet32.c
Update copyright for files modified in this year
[mirror_edk2.git] / MdePkg / Library / BaseLib / HighBitSet32.c
index 65f067ac1adfd9e1634ae2f18447f55ee5e3ff05..1fdb0594f8c03f04c4ffe03cdd4521a973a3bf53 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Math worker functions.\r
 \r
-  Copyright (c) 2006, Intel Corporation<BR>\r
+  Copyright (c) 2006 - 2008, 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
@@ -12,6 +12,9 @@
 \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