1/** 2 * @file op_cache.h 3 * Cache definitions for compatibility 4 * 5 * @remark Copyright 2002 OProfile authors 6 * @remark Read the file COPYING 7 * 8 * @author Philippe Elie 9 * @author John Levon 10 */ 11 12#ifndef OP_CACHE_H 13#define OP_CACHE_H 14 15#include <asm/cache.h> 16 17#ifndef L1_CACHE_ALIGN 18#define L1_CACHE_ALIGN(x) (((x)+(L1_CACHE_BYTES-1))&~(L1_CACHE_BYTES-1)) 19#endif 20 21#ifndef SMP_CACHE_BYTES 22#define SMP_CACHE_BYTES L1_CACHE_BYTES 23#endif 24 25/* 2.4.0 introduced __cacheline_aligned */ 26#ifndef ____cacheline_aligned 27#define ____cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES))) 28#endif 29 30#ifndef __cacheline_aligned 31#ifdef MODULE 32#define __cacheline_aligned ____cacheline_aligned 33#else 34#define __cacheline_aligned \ 35 __attribute__((__aligned__(SMP_CACHE_BYTES), \ 36 __section__(".data.cacheline_aligned"))) 37#endif 38#endif /* __cacheline_aligned */ 39 40/* 2.4.10 introduced ___cacheline_aligned_in_smp */ 41#ifndef ____cacheline_aligned_in_smp 42#ifdef CONFIG_SMP 43#define ____cacheline_aligned_in_smp ____cacheline_aligned 44#else 45#define ____cacheline_aligned_in_smp 46#endif /* CONFIG_SMP */ 47#endif 48 49#ifndef __cacheline_aligned_in_smp 50#ifdef CONFIG_SMP 51#define __cacheline_aligned_in_smp __cacheline_aligned 52#else 53#define __cacheline_aligned_in_smp 54#endif /* CONFIG_SMP */ 55#endif 56 57#endif /* !OP_CACHE_H */ 58