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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux