| 123456789101112131415161718192021222324252627282930313233343536 |
- /* SPDX-License-Identifier: GPL-2.0 */
- #ifndef PERF_CACHELINE_H
- #define PERF_CACHELINE_H
- #include <linux/compiler.h>
- int __pure cacheline_size(void);
- /*
- * Some architectures have 'Adjacent Cacheline Prefetch' feature,
- * which performs like the cacheline size being doubled.
- */
- static inline u64 cl_address(u64 address, bool double_cl)
- {
- u64 size = cacheline_size();
- if (double_cl)
- size *= 2;
- /* return the cacheline of the address */
- return (address & ~(size - 1));
- }
- static inline u64 cl_offset(u64 address, bool double_cl)
- {
- u64 size = cacheline_size();
- if (double_cl)
- size *= 2;
- /* return the offset inside cacheline */
- return (address & (size - 1));
- }
- #endif // PERF_CACHELINE_H
|