linux-mips
[Top] [All Lists]

Re: MIPS: Outline udelay and fix a few issues.

To: linux-mips@linux-mips.org
Subject: Re: MIPS: Outline udelay and fix a few issues.
From: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Date: Tue, 09 Jun 2009 11:12:48 +0900 (JST)
Cc: ralf@linux-mips.org
In-reply-to: <S20022929AbZFHPuy/20090608155054Z+9196@ftp.linux-mips.org>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <S20022929AbZFHPuy/20090608155054Z+9196@ftp.linux-mips.org>
Sender: linux-mips-bounce@linux-mips.org
On Mon, 08 Jun 2009 16:50:51 +0100, linux-mips@linux-mips.org wrote:
> Outlining fixes the issue were on certain CPUs such as the R10000 family
> the delay loop would need an extra cycle if it overlaps a cacheline
> boundary.
> 
> The rewrite also fixes build errors with GCC 4.4 which was changed in
> way incompatible with the kernel's inline assembly.
> 
> Relying on pure C for computation of the delay value removes the need for
> explicit.  The price we pay is a slight slowdown of the computation - to
> be fixed on another day.

Please fix this commit.

------------------------------------------------------
From: Atsushi Nemoto <nemoto@toshiba-tops.co.jp>
Subject: [PATCH] fix __ndelay build error and add 'ull' suffix for 32-bit kernel

Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
---
 arch/mips/lib/delay.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/mips/lib/delay.c b/arch/mips/lib/delay.c
index f69c6b5..6b3b1de 100644
--- a/arch/mips/lib/delay.c
+++ b/arch/mips/lib/delay.c
@@ -43,7 +43,7 @@ void __udelay(unsigned long us)
 {
        unsigned int lpj = current_cpu_data.udelay_val;
 
-       __delay((us * 0x000010c7 * HZ * lpj) >> 32);
+       __delay((us * 0x000010c7ull * HZ * lpj) >> 32);
 }
 EXPORT_SYMBOL(__udelay);
 
@@ -51,6 +51,6 @@ void __ndelay(unsigned long ns)
 {
        unsigned int lpj = current_cpu_data.udelay_val;
 
-       __delay((us * 0x00000005 * HZ * lpj) >> 32);
+       __delay((ns * 0x00000005ull * HZ * lpj) >> 32);
 }
 EXPORT_SYMBOL(__ndelay);


Also, a block comment in delay.c should be updated...

---
Atsushi Nemoto

<Prev in Thread] Current Thread [Next in Thread>