1 #ifndef __ASM_ARM_CACHETYPE_H 2 #define __ASM_ARM_CACHETYPE_H 3 4 #define CACHEID_VIVT (1 << 0) 5 #define CACHEID_VIPT_NONALIASING (1 << 1) 6 #define CACHEID_VIPT_ALIASING (1 << 2) 7 #define CACHEID_VIPT (CACHEID_VIPT_ALIASING|CACHEID_VIPT_NONALIASING) 8 #define CACHEID_ASID_TAGGED (1 << 3) 9 #define CACHEID_VIPT_I_ALIASING (1 << 4) 10 #define CACHEID_PIPT (1 << 5) 11 12 extern unsigned int cacheid; 13 14 #define cache_is_vivt() cacheid_is(CACHEID_VIVT) 15 #define cache_is_vipt() cacheid_is(CACHEID_VIPT) 16 #define cache_is_vipt_nonaliasing() cacheid_is(CACHEID_VIPT_NONALIASING) 17 #define cache_is_vipt_aliasing() cacheid_is(CACHEID_VIPT_ALIASING) 18 #define icache_is_vivt_asid_tagged() cacheid_is(CACHEID_ASID_TAGGED) 19 #define icache_is_vipt_aliasing() cacheid_is(CACHEID_VIPT_I_ALIASING) 20 #define icache_is_pipt() cacheid_is(CACHEID_PIPT) 21 22 /* 23 * __LINUX_ARM_ARCH__ is the minimum supported CPU architecture 24 * Mask out support which will never be present on newer CPUs. 25 * - v6+ is never VIVT 26 * - v7+ VIPT never aliases on D-side 27 */ 28 #if __LINUX_ARM_ARCH__ >= 7 29 #define __CACHEID_ARCH_MIN (CACHEID_VIPT_NONALIASING |\ 30 CACHEID_ASID_TAGGED |\ 31 CACHEID_VIPT_I_ALIASING |\ 32 CACHEID_PIPT) 33 #elif __LINUX_ARM_ARCH__ >= 6 34 #define __CACHEID_ARCH_MIN (~CACHEID_VIVT) 35 #else 36 #define __CACHEID_ARCH_MIN (~0) 37 #endif 38 39 /* 40 * Mask out support which isn't configured 41 */ 42 #if defined(CONFIG_CPU_CACHE_VIVT) && !defined(CONFIG_CPU_CACHE_VIPT) 43 #define __CACHEID_ALWAYS (CACHEID_VIVT) 44 #define __CACHEID_NEVER (~CACHEID_VIVT) 45 #elif !defined(CONFIG_CPU_CACHE_VIVT) && defined(CONFIG_CPU_CACHE_VIPT) 46 #define __CACHEID_ALWAYS (0) 47 #define __CACHEID_NEVER (CACHEID_VIVT) 48 #else 49 #define __CACHEID_ALWAYS (0) 50 #define __CACHEID_NEVER (0) 51 #endif 52 cacheid_is(unsigned int mask)53static inline unsigned int __attribute__((pure)) cacheid_is(unsigned int mask) 54 { 55 return (__CACHEID_ALWAYS & mask) | 56 (~__CACHEID_NEVER & __CACHEID_ARCH_MIN & mask & cacheid); 57 } 58 59 #endif 60