1#ifndef __LINUX_CACHE_H 2#define __LINUX_CACHE_H 3 4#include <linux/config.h> 5#include <asm/cache.h> 6 7#ifndef L1_CACHE_ALIGN 8#define L1_CACHE_ALIGN(x) (((x)+(L1_CACHE_BYTES-1))&~(L1_CACHE_BYTES-1)) 9#endif 10 11#ifndef SMP_CACHE_BYTES 12#define SMP_CACHE_BYTES L1_CACHE_BYTES 13#endif 14 15#ifndef ____cacheline_aligned 16#define ____cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES))) 17#endif 18 19#ifndef ____cacheline_aligned_in_smp 20#ifdef CONFIG_SMP 21#define ____cacheline_aligned_in_smp ____cacheline_aligned 22#else 23#define ____cacheline_aligned_in_smp 24#endif /* CONFIG_SMP */ 25#endif 26 27#ifndef __cacheline_aligned 28#ifdef MODULE 29#define __cacheline_aligned ____cacheline_aligned 30#else 31#define __cacheline_aligned \ 32 __attribute__((__aligned__(SMP_CACHE_BYTES), \ 33 __section__(".data.cacheline_aligned"))) 34#endif 35#endif /* __cacheline_aligned */ 36 37#ifndef __cacheline_aligned_in_smp 38#ifdef CONFIG_SMP 39#define __cacheline_aligned_in_smp __cacheline_aligned 40#else 41#define __cacheline_aligned_in_smp 42#endif /* CONFIG_SMP */ 43#endif 44 45#endif /* __LINUX_CACHE_H */ 46