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