|
@@ -438,6 +438,7 @@ static inline void flush_anon_page(struct vm_area_struct *vma,
|
|
#define __cacheid_vipt(val) (__cacheid_type_v7(val) ? 1 : __cacheid_vipt_prev7(val))
|
|
#define __cacheid_vipt(val) (__cacheid_type_v7(val) ? 1 : __cacheid_vipt_prev7(val))
|
|
#define __cacheid_vipt_nonaliasing(val) (__cacheid_type_v7(val) ? 1 : __cacheid_vipt_nonaliasing_prev7(val))
|
|
#define __cacheid_vipt_nonaliasing(val) (__cacheid_type_v7(val) ? 1 : __cacheid_vipt_nonaliasing_prev7(val))
|
|
#define __cacheid_vipt_aliasing(val) (__cacheid_type_v7(val) ? 0 : __cacheid_vipt_aliasing_prev7(val))
|
|
#define __cacheid_vipt_aliasing(val) (__cacheid_type_v7(val) ? 0 : __cacheid_vipt_aliasing_prev7(val))
|
|
|
|
+#define __cacheid_vivt_asid_tagged_instr(val) (__cacheid_type_v7(val) ? ((val & (3 << 14)) == (1 << 14)) : 0)
|
|
|
|
|
|
#if defined(CONFIG_CPU_CACHE_VIVT) && !defined(CONFIG_CPU_CACHE_VIPT)
|
|
#if defined(CONFIG_CPU_CACHE_VIVT) && !defined(CONFIG_CPU_CACHE_VIPT)
|
|
|
|
|
|
@@ -445,6 +446,7 @@ static inline void flush_anon_page(struct vm_area_struct *vma,
|
|
#define cache_is_vipt() 0
|
|
#define cache_is_vipt() 0
|
|
#define cache_is_vipt_nonaliasing() 0
|
|
#define cache_is_vipt_nonaliasing() 0
|
|
#define cache_is_vipt_aliasing() 0
|
|
#define cache_is_vipt_aliasing() 0
|
|
|
|
+#define icache_is_vivt_asid_tagged() 0
|
|
|
|
|
|
#elif defined(CONFIG_CPU_CACHE_VIPT)
|
|
#elif defined(CONFIG_CPU_CACHE_VIPT)
|
|
|
|
|
|
@@ -462,6 +464,12 @@ static inline void flush_anon_page(struct vm_area_struct *vma,
|
|
__cacheid_vipt_aliasing(__val); \
|
|
__cacheid_vipt_aliasing(__val); \
|
|
})
|
|
})
|
|
|
|
|
|
|
|
+#define icache_is_vivt_asid_tagged() \
|
|
|
|
+ ({ \
|
|
|
|
+ unsigned int __val = read_cpuid(CPUID_CACHETYPE); \
|
|
|
|
+ __cacheid_vivt_asid_tagged_instr(__val); \
|
|
|
|
+ })
|
|
|
|
+
|
|
#else
|
|
#else
|
|
|
|
|
|
#define cache_is_vivt() \
|
|
#define cache_is_vivt() \
|
|
@@ -490,6 +498,13 @@ static inline void flush_anon_page(struct vm_area_struct *vma,
|
|
__cacheid_vipt_aliasing(__val); \
|
|
__cacheid_vipt_aliasing(__val); \
|
|
})
|
|
})
|
|
|
|
|
|
|
|
+#define icache_is_vivt_asid_tagged() \
|
|
|
|
+ ({ \
|
|
|
|
+ unsigned int __val = read_cpuid(CPUID_CACHETYPE); \
|
|
|
|
+ __cacheid_present(__val) && \
|
|
|
|
+ __cacheid_vivt_asid_tagged_instr(__val); \
|
|
|
|
+ })
|
|
|
|
+
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#endif
|
|
#endif
|