prevent timer overflows in libpayload
authorStefan Reinauer <stepan@coresystems.de>
Thu, 25 Mar 2010 18:53:20 +0000 (18:53 +0000)
committerStefan Reinauer <stepan@openbios.org>
Thu, 25 Mar 2010 18:53:20 +0000 (18:53 +0000)
Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Acked-by: Patrick Georgi <patrick.georgi@coresystems.de>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5292 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

payloads/libpayload/arch/i386/timer.c

index 3d8607b3cb43ff66193d959f483e9a0f9612284b..ae288eb94e4baad946b491ee5e71ba95b0aebb2c 100644 (file)
@@ -88,7 +88,7 @@ static inline void _delay(unsigned long long delta)
  */
 void ndelay(unsigned int n)
 {
-       _delay(n * cpu_khz / 1000000);
+       _delay((unsigned long long)n * cpu_khz / 1000000);
 }
 
 /**
@@ -98,7 +98,7 @@ void ndelay(unsigned int n)
  */
 void udelay(unsigned int n)
 {
-       _delay(n * cpu_khz / 1000);
+       _delay((unsigned long long)n * cpu_khz / 1000);
 }
 
 /**
@@ -108,7 +108,7 @@ void udelay(unsigned int n)
  */
 void mdelay(unsigned int m)
 {
-       _delay(m * cpu_khz);
+       _delay((unsigned long long)m * cpu_khz);
 }
 
 /**
@@ -118,5 +118,7 @@ void mdelay(unsigned int m)
  */
 void delay(unsigned int s)
 {
-       _delay(s * cpu_khz * 1000);
+       int i;
+       for (i=0; i<1000; i++)
+               _delay((unsigned long long)s * cpu_khz);
 }