|
@@ -0,0 +1,66 @@
|
|
|
+/*
|
|
|
+ * arch/arm/include/asm/cacheflush.h
|
|
|
+ *
|
|
|
+ * Copyright (C) 1999-2002 Russell King
|
|
|
+ *
|
|
|
+ * This program is free software; you can redistribute it and/or modify
|
|
|
+ * it under the terms of the GNU General Public License version 2 as
|
|
|
+ * published by the Free Software Foundation.
|
|
|
+ */
|
|
|
+#ifndef _ASMARM_CACHEFLUSH_H
|
|
|
+#define _ASMARM_CACHEFLUSH_H
|
|
|
+
|
|
|
+#include <linux/mm.h>
|
|
|
+
|
|
|
+#include <asm/glue-cache.h>
|
|
|
+#include <asm/shmparam.h>
|
|
|
+#include <asm/cachetype.h>
|
|
|
+#include <asm/outercache.h>
|
|
|
+
|
|
|
+#define CACHE_COLOUR(vaddr) ((vaddr & (SHMLBA - 1)) >> PAGE_SHIFT)
|
|
|
+
|
|
|
+/*
|
|
|
+ * This flag is used to indicate that the page pointed to by a pte is clean
|
|
|
+ * and does not require cleaning before returning it to the user.
|
|
|
+ */
|
|
|
+#define PG_dcache_clean PG_arch_1
|
|
|
+
|
|
|
+/*
|
|
|
+ * MM Cache Management
|
|
|
+ * ===================
|
|
|
+ *
|
|
|
+ * The arch/arm/mm/cache-*.S and arch/arm/mm/proc-*.S files
|
|
|
+ * implement these methods.
|
|
|
+ *
|
|
|
+ * Start addresses are inclusive and end addresses are exclusive;
|
|
|
+ * start addresses should be rounded down, end addresses up.
|
|
|
+ *
|
|
|
+ * See Documentation/cachetlb.txt for more information.
|
|
|
+ * Please note that the implementation of these, and the required
|
|
|
+ * effects are cache-type (VIVT/VIPT/PIPT) specific.
|
|
|
+ *
|
|
|
+ * flush_icache_all()
|
|
|
+ *
|
|
|
+ * Unconditionally clean and invalidate the entire icache.
|
|
|
+ * Currently only needed for cache-v6.S and cache-v7.S, see
|
|
|
+ * __flush_icache_all for the generic implementation.
|
|
|
+ *
|
|
|
+ * flush_kern_all()
|
|
|
+ *
|
|
|
+ * Unconditionally clean and invalidate the entire cache.
|
|
|
+ *
|
|
|
+ * flush_kern_louis()
|
|
|
+ *
|
|
|
+ * Flush data cache levels up to the level of unification
|
|
|
+ * inner shareable and invalidate the I-cache.
|
|
|
+ * Only needed from v7 onwards, falls back to flush_cache_all()
|
|
|
+ * for all other processor versions.
|
|
|
+ *
|
|
|
+ * flush_user_all()
|
|
|
+ *
|
|
|
+ * Clean and invalidate all user space cache entries
|
|
|
+ * before a change of page tables.
|
|
|
+ *
|
|
|
+ * flush_user_range(start, end, flags)
|
|
|
+ *
|
|
|
+ * Clean and invalidate a range of cache entries in the
|