summaryrefslogtreecommitdiff
path: root/arch/arm/include/asm/cacheflush.h
diff options
context:
space:
mode:
authorGary King <gking@nvidia.com>2009-12-07 16:18:05 -0800
committerGary King <gking@nvidia.com>2009-12-07 16:18:05 -0800
commitbb11d46b72a4a2b53f890faa970a380cf0084bf2 (patch)
tree2d9d2955e069fed69febbe567a835fcc48ec6ec6 /arch/arm/include/asm/cacheflush.h
parente1b5e49debba7174e7b9c48195de8abfd54911dd (diff)
parent74ece4056571443eef30d4dff62180944b5a39d8 (diff)
Merge commit 'arm/2.6.28-arm' into android-tegra-2.6.29
Conflicts: MAINTAINERS arch/arm/Kconfig arch/arm/Makefile arch/arm/boot/compressed/head.S arch/arm/common/Makefile arch/arm/configs/realview-smp_defconfig arch/arm/configs/realview_defconfig arch/arm/configs/versatile_defconfig arch/arm/include/asm/elf.h arch/arm/include/asm/uaccess.h arch/arm/kernel/module.c arch/arm/kernel/signal.c arch/arm/mach-realview/Kconfig arch/arm/mach-realview/Makefile arch/arm/mach-realview/core.c arch/arm/mach-realview/core.h arch/arm/mach-realview/include/mach/board-pba8.h arch/arm/mach-realview/include/mach/debug-macro.S arch/arm/mach-realview/include/mach/hardware.h arch/arm/mach-realview/include/mach/irqs.h arch/arm/mach-realview/include/mach/memory.h arch/arm/mach-realview/include/mach/uncompress.h arch/arm/mach-realview/localtimer.c arch/arm/mach-realview/platsmp.c arch/arm/mach-realview/realview_eb.c arch/arm/mach-realview/realview_pb1176.c arch/arm/mach-realview/realview_pb11mp.c arch/arm/mach-realview/realview_pba8.c arch/arm/mm/Kconfig arch/arm/mm/copypage-v6.c arch/arm/mm/dma-mapping.c arch/arm/mm/proc-v7.S arch/arm/oprofile/op_model_mpcore.c arch/arm/tools/mach-types arch/arm/vfp/vfpmodule.c drivers/mtd/maps/integrator-flash.c drivers/net/smsc911x.c drivers/net/smsc911x.h
Diffstat (limited to 'arch/arm/include/asm/cacheflush.h')
-rw-r--r--arch/arm/include/asm/cacheflush.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h
index a160e0a9035c..b753d915e4df 100644
--- a/arch/arm/include/asm/cacheflush.h
+++ b/arch/arm/include/asm/cacheflush.h
@@ -114,6 +114,14 @@
//# endif
#endif
+#if defined(CONFIG_CPU_V7M)
+# ifdef _CACHE
+# error "Multi-cache not supported on ARMv7-M"
+# else
+# define _CACHE v7m
+# endif
+#endif
+
#if !defined(_CACHE) && !defined(MULTI_CACHE)
#error Unknown cache maintainence model
#endif
@@ -234,6 +242,22 @@ extern struct cpu_cache_fns cpu_cache;
#else
+#ifdef CONFIG_CPU_V7M
+
+static inline void v7m_flush_kern_all(void) { }
+static inline void v7m_flush_user_all(void) { }
+static inline void v7m_flush_user_range(unsigned long a, unsigned long b, unsigned int c) { }
+
+static inline void v7m_coherent_kern_range(unsigned long a, unsigned long b) { }
+static inline void v7m_coherent_user_range(unsigned long a, unsigned long b) { }
+static inline void v7m_flush_kern_dcache_page(void *a) { }
+
+static inline void v7m_dma_inv_range(const void *a, const void *b) { }
+static inline void v7m_dma_clean_range(const void *a, const void *b) { }
+static inline void v7m_dma_flush_range(const void *a, const void *b) { }
+
+#endif
+
#define __cpuc_flush_kern_all __glue(_CACHE,_flush_kern_cache_all)
#define __cpuc_flush_user_all __glue(_CACHE,_flush_user_cache_all)
#define __cpuc_flush_user_range __glue(_CACHE,_flush_user_cache_range)
@@ -264,6 +288,22 @@ extern void dmac_flush_range(const void *, const void *);
#endif
+#ifdef CONFIG_CPU_NO_CACHE_BCAST
+enum smp_dma_cache_type {
+ SMP_DMA_CACHE_INV,
+ SMP_DMA_CACHE_CLEAN,
+ SMP_DMA_CACHE_FLUSH,
+};
+extern void smp_dma_cache_op(int type, const void *start, const void *end);
+#define smp_dma_inv_range(s, e) smp_dma_cache_op(SMP_DMA_CACHE_INV, s, e)
+#define smp_dma_clean_range(s, e) smp_dma_cache_op(SMP_DMA_CACHE_CLEAN, s, e)
+#define smp_dma_flush_range(s, e) smp_dma_cache_op(SMP_DMA_CACHE_FLUSH, s, e)
+#else
+#define smp_dma_inv_range dmac_inv_range
+#define smp_dma_clean_range dmac_clean_range
+#define smp_dma_flush_range dmac_flush_range
+#endif
+
#ifdef CONFIG_OUTER_CACHE
extern struct outer_cache_fns outer_cache;