Merge tag 'trace-printf-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/trace...
[drm/drm-misc.git] / tools / perf / util / cacheline.h
blobfe6d5b60a031f975157ae00d9de73f817a620b0c
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef PERF_CACHELINE_H
3 #define PERF_CACHELINE_H
5 #include <linux/compiler.h>
7 int __pure cacheline_size(void);
11 * Some architectures have 'Adjacent Cacheline Prefetch' feature,
12 * which performs like the cacheline size being doubled.
14 static inline u64 cl_address(u64 address, bool double_cl)
16 u64 size = cacheline_size();
18 if (double_cl)
19 size *= 2;
21 /* return the cacheline of the address */
22 return (address & ~(size - 1));
25 static inline u64 cl_offset(u64 address, bool double_cl)
27 u64 size = cacheline_size();
29 if (double_cl)
30 size *= 2;
32 /* return the offset inside cacheline */
33 return (address & (size - 1));
36 #endif // PERF_CACHELINE_H