summaryrefslogtreecommitdiff
path: root/sys/src/9/zynq/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/src/9/zynq/main.c')
-rw-r--r--sys/src/9/zynq/main.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/sys/src/9/zynq/main.c b/sys/src/9/zynq/main.c
index 443cbabe6..042c06e45 100644
--- a/sys/src/9/zynq/main.c
+++ b/sys/src/9/zynq/main.c
@@ -133,6 +133,25 @@ inval2pa(uintptr start, uintptr end)
l2[0x770/4] = pa;
}
+void
+dmaflush(int clean, void *data, ulong len)
+{
+ uintptr va, pa;
+
+ va = (uintptr)data & ~31;
+ pa = PADDR(va);
+ len = ROUND(len, 32);
+ if(clean){
+ /* flush cache before write */
+ cleandse((uchar*)va, (uchar*)va+len);
+ clean2pa(pa, pa+len);
+ } else {
+ /* invalidate cache before read */
+ invaldse((uchar*)va, (uchar*)va+len);
+ inval2pa(pa, pa+len);
+ }
+}
+
static void
options(void)
{