vserver 1.9.5.x5
[linux-2.6.git] / drivers / acpi / hardware / hwtimer.c
index 1f94d6f..1906167 100644 (file)
@@ -6,7 +6,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2004, R. Byron Moore
+ * Copyright (C) 2000 - 2005, R. Byron Moore
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -42,6 +42,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
+#include <linux/module.h>
+
 #include <acpi/acpi.h>
 
 #define _COMPONENT          ACPI_HARDWARE
@@ -112,6 +114,7 @@ acpi_get_timer (
 
        return_ACPI_STATUS (status);
 }
+EXPORT_SYMBOL(acpi_get_timer);
 
 
 /******************************************************************************
@@ -149,10 +152,9 @@ acpi_get_timer_duration (
        u32                             end_ticks,
        u32                             *time_elapsed)
 {
-       u32                             delta_ticks = 0;
-       union uint64_overlay            normalized_ticks;
        acpi_status                     status;
-       acpi_integer                    out_quotient;
+       u32                             delta_ticks;
+       acpi_integer                    quotient;
 
 
        ACPI_FUNCTION_TRACE ("acpi_get_timer_duration");
@@ -164,7 +166,7 @@ acpi_get_timer_duration (
 
        /*
         * Compute Tick Delta:
-        * Handle (max one) timer rollovers on 24- versus 32-bit timers.
+        * Handle (max one) timer rollovers on 24-bit versus 32-bit timers.
         */
        if (start_ticks < end_ticks) {
                delta_ticks = end_ticks - start_ticks;
@@ -181,23 +183,21 @@ acpi_get_timer_duration (
                        delta_ticks = (0xFFFFFFFF - start_ticks) + end_ticks;
                }
        }
-       else {
+       else /* start_ticks == end_ticks */ {
                *time_elapsed = 0;
                return_ACPI_STATUS (AE_OK);
        }
 
        /*
-        * Compute Duration (Requires a 64-bit divide):
+        * Compute Duration (Requires a 64-bit multiply and divide):
         *
         * time_elapsed = (delta_ticks * 1000000) / PM_TIMER_FREQUENCY;
         */
-       normalized_ticks.full = ((u64) delta_ticks) * 1000000;
+       status = acpi_ut_short_divide (((u64) delta_ticks) * 1000000,
+                        PM_TIMER_FREQUENCY, &quotient, NULL);
 
-       status = acpi_ut_short_divide (&normalized_ticks.full, PM_TIMER_FREQUENCY,
-                          &out_quotient, NULL);
-
-       *time_elapsed = (u32) out_quotient;
+       *time_elapsed = (u32) quotient;
        return_ACPI_STATUS (status);
 }
-
+EXPORT_SYMBOL(acpi_get_timer_duration);