tree fded2593c6d7e7a8e72728601573c6db7ceaa115
parent fd6480f27e38f86ddea78eb5b46db249dfd09f17
author Adam Brooks <[EMAIL PROTECTED]> Wed, 07 Sep 2005 17:24:36 +0100
committer Russell King <[EMAIL PROTECTED]> Wed, 07 Sep 2005 17:24:36 +0100

[ARM] 2871/1: Fixes an issue with gettimeofday not working correctly on Intel 
IOP3xx processors

Patch from Adam Brooks

The current gettimeofday implementation for the IOP3xx processors reads the 
contents of the timer interrupt register and does math on the value to figure 
out exactly what time it is.  To do this it  multiplies the contents of the 
timer register with a large constant.  The result is then divided by a large 
constant.  Unfortunately the result of the first multiplication is often too 
large for the register to hold.  The solution is to combine the two large 
constants to a single smaller constant at compile time.  Then the timer value 
can be divided by single smaller constant without any overflow issues.

Signed-off-by: Adam Brooks <[EMAIL PROTECTED]>
Signed-off-by: Deepak Saxena <[EMAIL PROTECTED]>
Signed-off-by: Russell King <[EMAIL PROTECTED]>

 arch/arm/mach-iop3xx/iop321-time.c |    2 +-
 arch/arm/mach-iop3xx/iop331-time.c |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-iop3xx/iop321-time.c 
b/arch/arm/mach-iop3xx/iop321-time.c
--- a/arch/arm/mach-iop3xx/iop321-time.c
+++ b/arch/arm/mach-iop3xx/iop321-time.c
@@ -60,7 +60,7 @@ static unsigned long iop321_gettimeoffse
        /*
         * Now convert them to usec.
         */
-       usec = (unsigned long)(elapsed * (tick_nsec / 1000)) / LATCH;
+       usec = (unsigned long)(elapsed / (CLOCK_TICK_RATE/1000000));
 
        return usec;
 }
diff --git a/arch/arm/mach-iop3xx/iop331-time.c 
b/arch/arm/mach-iop3xx/iop331-time.c
--- a/arch/arm/mach-iop3xx/iop331-time.c
+++ b/arch/arm/mach-iop3xx/iop331-time.c
@@ -58,7 +58,7 @@ static unsigned long iop331_gettimeoffse
        /*
         * Now convert them to usec.
         */
-       usec = (unsigned long)(elapsed * (tick_nsec / 1000)) / LATCH;
+       usec = (unsigned long)(elapsed / (CLOCK_TICK_RATE/1000000));
 
        return usec;
 }
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to