Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / acpi / utilities / utmath.c
index 2525c1a..4a33604 100644 (file)
@@ -5,7 +5,7 @@
  ******************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2005, R. Byron Moore
+ * Copyright (C) 2000 - 2006, R. Byron Moore
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #include <acpi/acpi.h>
 
-
 #define _COMPONENT          ACPI_UTILITIES
-        ACPI_MODULE_NAME    ("utmath")
+ACPI_MODULE_NAME("utmath")
 
 /*
  * Support for double-precision integer divide.  This code is included here
  * in order to support kernel environments where the double-precision math
  * library is not available.
  */
-
 #ifndef ACPI_USE_NATIVE_DIVIDE
 /*******************************************************************************
  *
  *              32-bit remainder.
  *
  ******************************************************************************/
-
 acpi_status
-acpi_ut_short_divide (
-       acpi_integer                    dividend,
-       u32                             divisor,
-       acpi_integer                    *out_quotient,
-       u32                             *out_remainder)
+acpi_ut_short_divide(acpi_integer dividend,
+                    u32 divisor,
+                    acpi_integer * out_quotient, u32 * out_remainder)
 {
-       union uint64_overlay            dividend_ovl;
-       union uint64_overlay            quotient;
-       u32                             remainder32;
-
-
-       ACPI_FUNCTION_TRACE ("ut_short_divide");
+       union uint64_overlay dividend_ovl;
+       union uint64_overlay quotient;
+       u32 remainder32;
 
+       ACPI_FUNCTION_TRACE("ut_short_divide");
 
        /* Always check for a zero divisor */
 
        if (divisor == 0) {
-               ACPI_REPORT_ERROR (("acpi_ut_short_divide: Divide by zero\n"));
-               return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO);
+               ACPI_ERROR((AE_INFO, "Divide by zero"));
+               return_ACPI_STATUS(AE_AML_DIVIDE_BY_ZERO);
        }
 
        dividend_ovl.full = dividend;
@@ -100,9 +92,9 @@ acpi_ut_short_divide (
         * The quotient is 64 bits, the remainder is always 32 bits,
         * and is generated by the second divide.
         */
-       ACPI_DIV_64_BY_32 (0, dividend_ovl.part.hi, divisor,
+       ACPI_DIV_64_BY_32(0, dividend_ovl.part.hi, divisor,
                          quotient.part.hi, remainder32);
-       ACPI_DIV_64_BY_32 (remainder32, dividend_ovl.part.lo, divisor,
+       ACPI_DIV_64_BY_32(remainder32, dividend_ovl.part.lo, divisor,
                          quotient.part.lo, remainder32);
 
        /* Return only what was requested */
@@ -114,10 +106,9 @@ acpi_ut_short_divide (
                *out_remainder = remainder32;
        }
 
-       return_ACPI_STATUS (AE_OK);
+       return_ACPI_STATUS(AE_OK);
 }
 
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ut_divide
@@ -134,34 +125,30 @@ acpi_ut_short_divide (
  ******************************************************************************/
 
 acpi_status
-acpi_ut_divide (
-       acpi_integer                    in_dividend,
-       acpi_integer                    in_divisor,
-       acpi_integer                    *out_quotient,
-       acpi_integer                    *out_remainder)
+acpi_ut_divide(acpi_integer in_dividend,
+              acpi_integer in_divisor,
+              acpi_integer * out_quotient, acpi_integer * out_remainder)
 {
-       union uint64_overlay            dividend;
-       union uint64_overlay            divisor;
-       union uint64_overlay            quotient;
-       union uint64_overlay            remainder;
-       union uint64_overlay            normalized_dividend;
-       union uint64_overlay            normalized_divisor;
-       u32                             partial1;
-       union uint64_overlay            partial2;
-       union uint64_overlay            partial3;
-
-
-       ACPI_FUNCTION_TRACE ("ut_divide");
-
+       union uint64_overlay dividend;
+       union uint64_overlay divisor;
+       union uint64_overlay quotient;
+       union uint64_overlay remainder;
+       union uint64_overlay normalized_dividend;
+       union uint64_overlay normalized_divisor;
+       u32 partial1;
+       union uint64_overlay partial2;
+       union uint64_overlay partial3;
+
+       ACPI_FUNCTION_TRACE("ut_divide");
 
        /* Always check for a zero divisor */
 
        if (in_divisor == 0) {
-               ACPI_REPORT_ERROR (("acpi_ut_divide: Divide by zero\n"));
-               return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO);
+               ACPI_ERROR((AE_INFO, "Divide by zero"));
+               return_ACPI_STATUS(AE_AML_DIVIDE_BY_ZERO);
        }
 
-       divisor.full  = in_divisor;
+       divisor.full = in_divisor;
        dividend.full = in_dividend;
        if (divisor.part.hi == 0) {
                /*
@@ -174,9 +161,9 @@ acpi_ut_divide (
                 * The quotient is 64 bits, the remainder is always 32 bits,
                 * and is generated by the second divide.
                 */
-               ACPI_DIV_64_BY_32 (0, dividend.part.hi, divisor.part.lo,
+               ACPI_DIV_64_BY_32(0, dividend.part.hi, divisor.part.lo,
                                  quotient.part.hi, partial1);
-               ACPI_DIV_64_BY_32 (partial1, dividend.part.lo, divisor.part.lo,
+               ACPI_DIV_64_BY_32(partial1, dividend.part.lo, divisor.part.lo,
                                  quotient.part.lo, remainder.part.lo);
        }
 
@@ -185,23 +172,23 @@ acpi_ut_divide (
                 * 2) The general case where the divisor is a full 64 bits
                 * is more difficult
                 */
-               quotient.part.hi   = 0;
+               quotient.part.hi = 0;
                normalized_dividend = dividend;
                normalized_divisor = divisor;
 
                /* Normalize the operands (shift until the divisor is < 32 bits) */
 
                do {
-                       ACPI_SHIFT_RIGHT_64 (normalized_divisor.part.hi,
-                                        normalized_divisor.part.lo);
-                       ACPI_SHIFT_RIGHT_64 (normalized_dividend.part.hi,
-                                        normalized_dividend.part.lo);
+                       ACPI_SHIFT_RIGHT_64(normalized_divisor.part.hi,
+                                           normalized_divisor.part.lo);
+                       ACPI_SHIFT_RIGHT_64(normalized_dividend.part.hi,
+                                           normalized_dividend.part.lo);
 
                } while (normalized_divisor.part.hi != 0);
 
                /* Partial divide */
 
-               ACPI_DIV_64_BY_32 (normalized_dividend.part.hi,
+               ACPI_DIV_64_BY_32(normalized_dividend.part.hi,
                                  normalized_dividend.part.lo,
                                  normalized_divisor.part.lo,
                                  quotient.part.lo, partial1);
@@ -210,8 +197,9 @@ acpi_ut_divide (
                 * The quotient is always 32 bits, and simply requires adjustment.
                 * The 64-bit remainder must be generated.
                 */
-               partial1      = quotient.part.lo * divisor.part.hi;
-               partial2.full = (acpi_integer) quotient.part.lo * divisor.part.lo;
+               partial1 = quotient.part.lo * divisor.part.hi;
+               partial2.full =
+                   (acpi_integer) quotient.part.lo * divisor.part.lo;
                partial3.full = (acpi_integer) partial2.part.hi + partial1;
 
                remainder.part.hi = partial3.part.lo;
@@ -224,16 +212,15 @@ acpi_ut_divide (
                                                quotient.part.lo--;
                                                remainder.full -= divisor.full;
                                        }
-                               }
-                               else {
+                               } else {
                                        quotient.part.lo--;
                                        remainder.full -= divisor.full;
                                }
                        }
 
-                       remainder.full    = remainder.full - dividend.full;
-                       remainder.part.hi = (u32) -((s32) remainder.part.hi);
-                       remainder.part.lo = (u32) -((s32) remainder.part.lo);
+                       remainder.full = remainder.full - dividend.full;
+                       remainder.part.hi = (u32) - ((s32) remainder.part.hi);
+                       remainder.part.lo = (u32) - ((s32) remainder.part.lo);
 
                        if (remainder.part.lo) {
                                remainder.part.hi--;
@@ -250,15 +237,16 @@ acpi_ut_divide (
                *out_remainder = remainder.full;
        }
 
-       return_ACPI_STATUS (AE_OK);
+       return_ACPI_STATUS(AE_OK);
 }
 
 #else
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ut_short_divide, acpi_ut_divide
  *
+ * PARAMETERS:  See function headers above
+ *
  * DESCRIPTION: Native versions of the ut_divide functions. Use these if either
  *              1) The target is a 64-bit platform and therefore 64-bit
  *                 integer math is supported directly by the machine.
@@ -267,23 +255,19 @@ acpi_ut_divide (
  *                 perform the divide.
  *
  ******************************************************************************/
-
 acpi_status
-acpi_ut_short_divide (
-       acpi_integer                    in_dividend,
-       u32                             divisor,
-       acpi_integer                    *out_quotient,
-       u32                             *out_remainder)
+acpi_ut_short_divide(acpi_integer in_dividend,
+                    u32 divisor,
+                    acpi_integer * out_quotient, u32 * out_remainder)
 {
 
-       ACPI_FUNCTION_TRACE ("ut_short_divide");
-
+       ACPI_FUNCTION_TRACE("ut_short_divide");
 
        /* Always check for a zero divisor */
 
        if (divisor == 0) {
-               ACPI_REPORT_ERROR (("acpi_ut_short_divide: Divide by zero\n"));
-               return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO);
+               ACPI_ERROR((AE_INFO, "Divide by zero"));
+               return_ACPI_STATUS(AE_AML_DIVIDE_BY_ZERO);
        }
 
        /* Return only what was requested */
@@ -295,27 +279,23 @@ acpi_ut_short_divide (
                *out_remainder = (u32) in_dividend % divisor;
        }
 
-       return_ACPI_STATUS (AE_OK);
+       return_ACPI_STATUS(AE_OK);
 }
 
 acpi_status
-acpi_ut_divide (
-       acpi_integer                    in_dividend,
-       acpi_integer                    in_divisor,
-       acpi_integer                    *out_quotient,
-       acpi_integer                    *out_remainder)
+acpi_ut_divide(acpi_integer in_dividend,
+              acpi_integer in_divisor,
+              acpi_integer * out_quotient, acpi_integer * out_remainder)
 {
-       ACPI_FUNCTION_TRACE ("ut_divide");
-
+       ACPI_FUNCTION_TRACE("ut_divide");
 
        /* Always check for a zero divisor */
 
        if (in_divisor == 0) {
-               ACPI_REPORT_ERROR (("acpi_ut_divide: Divide by zero\n"));
-               return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO);
+               ACPI_ERROR((AE_INFO, "Divide by zero"));
+               return_ACPI_STATUS(AE_AML_DIVIDE_BY_ZERO);
        }
 
-
        /* Return only what was requested */
 
        if (out_quotient) {
@@ -325,9 +305,7 @@ acpi_ut_divide (
                *out_remainder = in_dividend % in_divisor;
        }
 
-       return_ACPI_STATUS (AE_OK);
+       return_ACPI_STATUS(AE_OK);
 }
 
 #endif
-
-