Home | History | Annotate | Download | only in linux
      1 #ifndef __LINUX_CACHE_H
      2 #define __LINUX_CACHE_H
      3 
      4 #include <linux/kernel.h>
      5 #include <asm/cache.h>
      6 
      7 #ifndef L1_CACHE_ALIGN
      8 #define L1_CACHE_ALIGN(x) ALIGN(x, L1_CACHE_BYTES)
      9 #endif
     10 
     11 #ifndef SMP_CACHE_BYTES
     12 #define SMP_CACHE_BYTES L1_CACHE_BYTES
     13 #endif
     14 
     15 #ifndef __read_mostly
     16 #define __read_mostly
     17 #endif
     18 
     19 #ifndef ____cacheline_aligned
     20 #define ____cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES)))
     21 #endif
     22 
     23 #ifndef ____cacheline_aligned_in_smp
     24 #ifdef CONFIG_SMP
     25 #define ____cacheline_aligned_in_smp ____cacheline_aligned
     26 #else
     27 #define ____cacheline_aligned_in_smp
     28 #endif /* CONFIG_SMP */
     29 #endif
     30 
     31 #ifndef __cacheline_aligned
     32 #define __cacheline_aligned					\
     33   __attribute__((__aligned__(SMP_CACHE_BYTES),			\
     34 		 __section__(".data.cacheline_aligned")))
     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 /*
     46  * The maximum alignment needed for some critical structures
     47  * These could be inter-node cacheline sizes/L3 cacheline
     48  * size etc.  Define this in asm/cache.h for your arch
     49  */
     50 #ifndef INTERNODE_CACHE_SHIFT
     51 #define INTERNODE_CACHE_SHIFT L1_CACHE_SHIFT
     52 #endif
     53 
     54 #if !defined(____cacheline_internodealigned_in_smp)
     55 #if defined(CONFIG_SMP)
     56 #define ____cacheline_internodealigned_in_smp \
     57 	__attribute__((__aligned__(1 << (INTERNODE_CACHE_SHIFT))))
     58 #else
     59 #define ____cacheline_internodealigned_in_smp
     60 #endif
     61 #endif
     62 
     63 #endif /* __LINUX_CACHE_H */
     64