summaryrefslogtreecommitdiff
path: root/src/arch/armv7/cache.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/armv7/cache.c')
-rw-r--r--src/arch/armv7/cache.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/arch/armv7/cache.c b/src/arch/armv7/cache.c
index 4046451e34..b4a937bf43 100644
--- a/src/arch/armv7/cache.c
+++ b/src/arch/armv7/cache.c
@@ -76,10 +76,12 @@ void icache_invalidate_all(void)
}
enum dcache_op {
+ OP_DCCSW,
OP_DCCISW,
OP_DCISW,
OP_DCCIMVAC,
OP_DCCMVAC,
+ OP_DCIMVAC,
};
/*
@@ -141,6 +143,9 @@ static void dcache_op_set_way(enum dcache_op op)
case OP_DCISW:
dcisw(val);
break;
+ case OP_DCCSW:
+ dccsw(val);
+ break;
default:
break;
}
@@ -174,6 +179,11 @@ static void dcache_foreach(enum dcache_op op)
}
}
+void dcache_clean_all(void)
+{
+ dcache_foreach(OP_DCCSW);
+}
+
void dcache_clean_invalidate_all(void)
{
dcache_foreach(OP_DCCISW);
@@ -220,6 +230,9 @@ static void dcache_op_mva(unsigned long addr,
case OP_DCCMVAC:
dccmvac(line);
break;
+ case OP_DCIMVAC:
+ dcimvac(line);
+ break;
default:
break;
}
@@ -238,6 +251,11 @@ void dcache_clean_invalidate_by_mva(unsigned long addr, unsigned long len)
dcache_op_mva(addr, len, OP_DCCIMVAC);
}
+void dcache_invalidate_by_mva(unsigned long addr, unsigned long len)
+{
+ dcache_op_mva(addr, len, OP_DCIMVAC);
+}
+
void dcache_mmu_disable(void)
{
uint32_t sctlr;