This source file includes following definitions.
- prefetch_range
1
2
3
4
5
6
7
8
9
10
11 #ifndef _LINUX_PREFETCH_H
12 #define _LINUX_PREFETCH_H
13
14 #include <linux/types.h>
15 #include <asm/processor.h>
16 #include <asm/cache.h>
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 #ifndef ARCH_HAS_PREFETCH
39 #define prefetch(x) __builtin_prefetch(x)
40 #endif
41
42 #ifndef ARCH_HAS_PREFETCHW
43 #define prefetchw(x) __builtin_prefetch(x,1)
44 #endif
45
46 #ifndef ARCH_HAS_SPINLOCK_PREFETCH
47 #define spin_lock_prefetch(x) prefetchw(x)
48 #endif
49
50 #ifndef PREFETCH_STRIDE
51 #define PREFETCH_STRIDE (4*L1_CACHE_BYTES)
52 #endif
53
54 static inline void prefetch_range(void *addr, size_t len)
55 {
56 #ifdef ARCH_HAS_PREFETCH
57 char *cp;
58 char *end = addr + len;
59
60 for (cp = addr; cp < end; cp += PREFETCH_STRIDE)
61 prefetch(cp);
62 #endif
63 }
64
65 #endif