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
|