diff mbox

[Xen-devel,01/17] xen: x86 & generic: change to __builtin_prefetch()

Message ID 1395330365-9901-1-git-send-email-ian.campbell@citrix.com
State Superseded
Headers show

Commit Message

Ian Campbell March 20, 2014, 3:45 p.m. UTC
Quoting Andi Kleen in Linux b483570a13be from 2007:
    gcc 3.2+ supports __builtin_prefetch, so it's possible to use it on all
    architectures. Change the generic fallback in linux/prefetch.h to use it
    instead of noping it out. gcc should do the right thing when the
    architecture doesn't support prefetching

    Undefine the x86-64 inline assembler version and use the fallback.

ARM wants to use the builtins.

Fix a pair of spelling errors, one of which was from Lucas De Marchi in the
Linux tree.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Cc: Keir Fraser <keir@xen.org>
Cc: Jan Beulich <jbeulich@suse.com>
---
 xen/include/xen/prefetch.h |   13 +++----------
 1 file changed, 3 insertions(+), 10 deletions(-)

Comments

Jan Beulich March 20, 2014, 4:12 p.m. UTC | #1
>>> On 20.03.14 at 16:45, Ian Campbell <ian.campbell@citrix.com> wrote:
> Quoting Andi Kleen in Linux b483570a13be from 2007:
>     gcc 3.2+ supports __builtin_prefetch, so it's possible to use it on all
>     architectures. Change the generic fallback in linux/prefetch.h to use it
>     instead of noping it out. gcc should do the right thing when the
>     architecture doesn't support prefetching
> 
>     Undefine the x86-64 inline assembler version and use the fallback.
> 
> ARM wants to use the builtins.
> 
> Fix a pair of spelling errors, one of which was from Lucas De Marchi in the
> Linux tree.
> 
> Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
> Cc: Keir Fraser <keir@xen.org>

Reviewed-by: Jan Beulich <jbeulich@suse.com>

> ---
>  xen/include/xen/prefetch.h |   13 +++----------
>  1 file changed, 3 insertions(+), 10 deletions(-)
> 
> diff --git a/xen/include/xen/prefetch.h b/xen/include/xen/prefetch.h
> index 8d7d3ff..ba73998 100644
> --- a/xen/include/xen/prefetch.h
> +++ b/xen/include/xen/prefetch.h
> @@ -28,24 +28,17 @@
>  	prefetchw(x)	- prefetches the cacheline at "x" for write
>  	spin_lock_prefetch(x) - prefectches the spinlock *x for taking
>  	
> -	there is also PREFETCH_STRIDE which is the architecure-prefered 
> +	there is also PREFETCH_STRIDE which is the architecture-preferred
>  	"lookahead" size for prefetching streamed operations.
>  	
>  */
>  
> -/*
> - *	These cannot be do{}while(0) macros. See the mental gymnastics in
> - *	the loop macro.
> - */
> - 
>  #ifndef ARCH_HAS_PREFETCH
> -#define ARCH_HAS_PREFETCH
> -static inline void prefetch(const void *x) {;}
> +#define prefetch(x) __builtin_prefetch(x)
>  #endif
>  
>  #ifndef ARCH_HAS_PREFETCHW
> -#define ARCH_HAS_PREFETCHW
> -static inline void prefetchw(const void *x) {;}
> +#define prefetchw(x) __builtin_prefetch(x,1)
>  #endif
>  
>  #ifndef ARCH_HAS_SPINLOCK_PREFETCH
> -- 
> 1.7.10.4
diff mbox

Patch

diff --git a/xen/include/xen/prefetch.h b/xen/include/xen/prefetch.h
index 8d7d3ff..ba73998 100644
--- a/xen/include/xen/prefetch.h
+++ b/xen/include/xen/prefetch.h
@@ -28,24 +28,17 @@ 
 	prefetchw(x)	- prefetches the cacheline at "x" for write
 	spin_lock_prefetch(x) - prefectches the spinlock *x for taking
 	
-	there is also PREFETCH_STRIDE which is the architecure-prefered 
+	there is also PREFETCH_STRIDE which is the architecture-preferred
 	"lookahead" size for prefetching streamed operations.
 	
 */
 
-/*
- *	These cannot be do{}while(0) macros. See the mental gymnastics in
- *	the loop macro.
- */
- 
 #ifndef ARCH_HAS_PREFETCH
-#define ARCH_HAS_PREFETCH
-static inline void prefetch(const void *x) {;}
+#define prefetch(x) __builtin_prefetch(x)
 #endif
 
 #ifndef ARCH_HAS_PREFETCHW
-#define ARCH_HAS_PREFETCHW
-static inline void prefetchw(const void *x) {;}
+#define prefetchw(x) __builtin_prefetch(x,1)
 #endif
 
 #ifndef ARCH_HAS_SPINLOCK_PREFETCH