linux-mips.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] MIPS: Use GCC __builtin_prefetch() to implement prefetch().
@ 2010-05-14 19:44 David Daney
  2010-05-21 18:05 ` Ralf Baechle
  0 siblings, 1 reply; 2+ messages in thread
From: David Daney @ 2010-05-14 19:44 UTC (permalink / raw)
  To: linux-mips, ralf; +Cc: David Daney

GCC's __builtin_prefetch() was introduced a long time ago, all
supported GCC versions have it.  Lets do what the big boys up in
linux/prefetch.h do, except we use '1' as the third parameter to
provoke 'PREF 0,...'  and 'PREF 1,...' instead of other prefetch
hints.

This allows for better code generation.  In theory the existing
embedded asm could be optimized, but the compiler has these builtins,
so there is really no point.

Signed-off-by: David Daney <ddaney@caviumnetworks.com>
---
 arch/mips/include/asm/processor.h |   12 +++---------
 1 files changed, 3 insertions(+), 9 deletions(-)

diff --git a/arch/mips/include/asm/processor.h b/arch/mips/include/asm/processor.h
index ab38791..5d33b72 100644
--- a/arch/mips/include/asm/processor.h
+++ b/arch/mips/include/asm/processor.h
@@ -344,16 +344,10 @@ unsigned long get_wchan(struct task_struct *p);
 #ifdef CONFIG_CPU_HAS_PREFETCH
 
 #define ARCH_HAS_PREFETCH
+#define prefetch(x) __builtin_prefetch((x), 0, 1)
 
-static inline void prefetch(const void *addr)
-{
-	__asm__ __volatile__(
-	"	.set	mips4		\n"
-	"	pref	%0, (%1)	\n"
-	"	.set	mips0		\n"
-	:
-	: "i" (Pref_Load), "r" (addr));
-}
+#define ARCH_HAS_PREFETCHW
+#define prefetchw(x) __builtin_prefetch((x), 1, 1)
 
 #endif
 
-- 
1.6.6.1

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] MIPS: Use GCC __builtin_prefetch() to implement prefetch().
  2010-05-14 19:44 [PATCH] MIPS: Use GCC __builtin_prefetch() to implement prefetch() David Daney
@ 2010-05-21 18:05 ` Ralf Baechle
  0 siblings, 0 replies; 2+ messages in thread
From: Ralf Baechle @ 2010-05-21 18:05 UTC (permalink / raw)
  To: David Daney; +Cc: linux-mips

On Fri, May 14, 2010 at 12:44:18PM -0700, David Daney wrote:

> GCC's __builtin_prefetch() was introduced a long time ago, all
> supported GCC versions have it.  Lets do what the big boys up in
> linux/prefetch.h do, except we use '1' as the third parameter to
> provoke 'PREF 0,...'  and 'PREF 1,...' instead of other prefetch
> hints.
> 
> This allows for better code generation.  In theory the existing
> embedded asm could be optimized, but the compiler has these builtins,
> so there is really no point.

Applied, thanks.

  Ralf

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2010-05-21 18:06 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-14 19:44 [PATCH] MIPS: Use GCC __builtin_prefetch() to implement prefetch() David Daney
2010-05-21 18:05 ` Ralf Baechle

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).