blob: 90c5f6f4b6c2e969c9fb59c8602e3649ea853bcf [file] [log] [blame]
Mike Dodd8cfa7022010-11-17 11:12:26 -08001/**
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 */