brintos

brintos / linux-shallow public Read only

0
0
Text · 708 B · fe6d5b6 Raw
37 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef PERF_CACHELINE_H3#define PERF_CACHELINE_H4 5#include <linux/compiler.h>6 7int __pure cacheline_size(void);8 9 10/*11 * Some architectures have 'Adjacent Cacheline Prefetch' feature,12 * which performs like the cacheline size being doubled.13 */14static inline u64 cl_address(u64 address, bool double_cl)15{16	u64 size = cacheline_size();17 18	if (double_cl)19		size *= 2;20 21	/* return the cacheline of the address */22	return (address & ~(size - 1));23}24 25static inline u64 cl_offset(u64 address, bool double_cl)26{27	u64 size = cacheline_size();28 29	if (double_cl)30		size *= 2;31 32	/* return the offset inside cacheline */33	return (address & (size - 1));34}35 36#endif // PERF_CACHELINE_H37