aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-arm/cacheflush.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-arm/cacheflush.h')
-rw-r--r--include/asm-arm/cacheflush.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/include/asm-arm/cacheflush.h b/include/asm-arm/cacheflush.h
index 5f531ea03059..ce60b3702ba5 100644
--- a/include/asm-arm/cacheflush.h
+++ b/include/asm-arm/cacheflush.h
@@ -190,6 +190,12 @@ struct cpu_cache_fns {
190 void (*dma_flush_range)(unsigned long, unsigned long); 190 void (*dma_flush_range)(unsigned long, unsigned long);
191}; 191};
192 192
193struct outer_cache_fns {
194 void (*inv_range)(unsigned long, unsigned long);
195 void (*clean_range)(unsigned long, unsigned long);
196 void (*flush_range)(unsigned long, unsigned long);
197};
198
193/* 199/*
194 * Select the calling method 200 * Select the calling method
195 */ 201 */
@@ -246,6 +252,37 @@ extern void dmac_flush_range(unsigned long, unsigned long);
246 252
247#endif 253#endif
248 254
255#ifdef CONFIG_OUTER_CACHE
256
257extern struct outer_cache_fns outer_cache;
258
259static inline void outer_inv_range(unsigned long start, unsigned long end)
260{
261 if (outer_cache.inv_range)
262 outer_cache.inv_range(start, end);
263}
264static inline void outer_clean_range(unsigned long start, unsigned long end)
265{
266 if (outer_cache.clean_range)
267 outer_cache.clean_range(start, end);
268}
269static inline void outer_flush_range(unsigned long start, unsigned long end)
270{
271 if (outer_cache.flush_range)
272 outer_cache.flush_range(start, end);
273}
274
275#else
276
277static inline void outer_inv_range(unsigned long start, unsigned long end)
278{ }
279static inline void outer_clean_range(unsigned long start, unsigned long end)
280{ }
281static inline void outer_flush_range(unsigned long start, unsigned long end)
282{ }
283
284#endif
285
249/* 286/*
250 * flush_cache_vmap() is used when creating mappings (eg, via vmap, 287 * flush_cache_vmap() is used when creating mappings (eg, via vmap,
251 * vmalloc, ioremap etc) in kernel space for pages. Since the 288 * vmalloc, ioremap etc) in kernel space for pages. Since the