On Mon, 08 Jun 2009 16:50:51 +0100, linux-mips@xxxxxxxxxxxxxx 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@xxxxxxxxxxxxxxxxxx> Subject: [PATCH] fix __ndelay build error and add 'ull' suffix for 32-bit kernel Signed-off-by: Atsushi Nemoto <anemo@xxxxxxxxxxxxx> --- 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