}
}
/* DSB to make sure the operation is complete */
- CP15DSB;
+ DSB;
}
static void v7_clean_inval_dcache_level_setway(u32 level, u32 num_sets,
}
}
/* DSB to make sure the operation is complete */
- CP15DSB;
+ DSB;
}
static void v7_maint_dcache_level_setway(u32 level, u32 operation)
}
/* DSB to make sure the operation is complete */
- CP15DSB;
+ DSB;
}
/* Invalidate TLB */
"mcr p15, 0, %0, c8, c6, 0\n"
/* Invalidate entire instruction TLB */
"mcr p15, 0, %0, c8, c5, 0\n"
- /* Full system DSB - make sure that the invalidation is complete */
- "mcr p15, 0, %0, c7, c10, 4\n"
- /* Full system ISB - make sure the instruction stream sees it */
- "mcr p15, 0, %0, c7, c5, 4\n"
: : "r" (0));
+ /* Full system DSB - make sure that the invalidation is complete */
+ DSB;
+ /* Full system ISB - make sure the instruction stream sees it */
+ ISB;
}
void invalidate_dcache_all(void)
/* Invalidate entire I-cache and branch predictor array */
void invalidate_icache_all(void)
{
- /*
- * Invalidate all instruction caches to PoU.
- * Also flushes branch target cache.
- */
asm volatile (
+ /*
+ * Invalidate all instruction caches to PoU.
+ * Also flushes branch target cache.
+ */
"mcr p15, 0, %0, c7, c5, 0\n"
+
/* Invalidate entire branch predictor array */
"mcr p15, 0, %0, c7, c5, 6\n"
- /* Full system DSB - make sure that the invalidation is complete */
- "mcr p15, 0, %0, c7, c10, 4\n"
- /* ISB - make sure the instruction stream sees it */
- "mcr p15, 0, %0, c7, c5, 4\n"
+
: : "r" (0));
+
+ /* Full system DSB - make sure that the invalidation is complete */
+ DSB;
+
+ /* ISB - make sure the instruction stream sees it */
+ ISB;
}
#else
void invalidate_icache_all(void)
#define CP15DSB asm volatile ("mcr p15, 0, %0, c7, c10, 4" : : "r" (0))
#define CP15DMB asm volatile ("mcr p15, 0, %0, c7, c10, 5" : : "r" (0))
+#ifdef __ARM_ARCH_7A__
+#define ISB asm volatile ("isb" : : : "memory")
+#define DSB asm volatile ("dsb" : : : "memory")
+#define DMB asm volatile ("dmb" : : : "memory")
+#else
+#define ISB CP15ISB
+#define DSB CP15DSB
+#define DMB CP15DMB
+#endif
+
/*
* Workaround for ARM errata # 798870
* Set L2ACTLR[7] to reissue any memory transaction in the L2 that has been