mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
xen: x86 & generic: change to __builtin_prefetch()
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>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Cc: Keir Fraser <keir@xen.org>
Acked-by: Tim Deegan <tim@xen.org>
This commit is contained in:
1 parent
1be5c1947f
commit
630017f420
1 file changed
+3
-10
@@ -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
|
||||
|
||||