OSDN Git Service

arm64: cachetype: report weakest cache policy
[uclinux-h8/linux.git] / arch / arm64 / include / asm / cachetype.h
index 4b23e75..7a2e076 100644 (file)
 
 #ifndef __ASSEMBLY__
 
-static inline u32 icache_policy(void)
-{
-       return (read_cpuid_cachetype() >> CTR_L1IP_SHIFT) & CTR_L1IP_MASK;
-}
+#include <linux/bitops.h>
+
+#define CTR_L1IP(ctr)  (((ctr) >> CTR_L1IP_SHIFT) & CTR_L1IP_MASK)
+
+#define ICACHEF_ALIASING       BIT(0)
+#define ICACHEF_AIVIVT         BIT(1)
+
+extern unsigned long __icache_flags;
 
 /*
  * Whilst the D-side always behaves as PIPT on AArch64, aliasing is
@@ -41,12 +45,12 @@ static inline u32 icache_policy(void)
  */
 static inline int icache_is_aliasing(void)
 {
-       return icache_policy() != ICACHE_POLICY_PIPT;
+       return test_bit(ICACHEF_ALIASING, &__icache_flags);
 }
 
 static inline int icache_is_aivivt(void)
 {
-       return icache_policy() == ICACHE_POLICY_AIVIVT;
+       return test_bit(ICACHEF_AIVIVT, &__icache_flags);
 }
 
 static inline u32 cache_type_cwg(void)