···11-#ifndef __ASM_CPU_SH2A_CACHEFLUSH_H22-#define __ASM_CPU_SH2A_CACHEFLUSH_H33-44-/* 55- * Cache flushing:66- *77- * - flush_cache_all() flushes entire cache88- * - flush_cache_mm(mm) flushes the specified mm context's cache lines99- * - flush_cache_dup mm(mm) handles cache flushing when forking1010- * - flush_cache_page(mm, vmaddr, pfn) flushes a single page1111- * - flush_cache_range(vma, start, end) flushes a range of pages1212- *1313- * - flush_dcache_page(pg) flushes(wback&invalidates) a page for dcache1414- * - flush_icache_range(start, end) flushes(invalidates) a range for icache1515- * - flush_icache_page(vma, pg) flushes(invalidates) a page for icache1616- *1717- * Caches are indexed (effectively) by physical address on SH-2, so1818- * we don't need them.1919- */2020-#define flush_cache_all() do { } while (0)2121-#define flush_cache_mm(mm) do { } while (0)2222-#define flush_cache_dup_mm(mm) do { } while (0)2323-#define flush_cache_range(vma, start, end) do { } while (0)2424-#define flush_cache_page(vma, vmaddr, pfn) do { } while (0)2525-#define flush_dcache_page(page) do { } while (0)2626-void flush_icache_range(unsigned long start, unsigned long end);2727-#define flush_icache_page(vma,pg) do { } while (0)2828-#define flush_cache_sigtramp(vaddr) do { } while (0)2929-3030-#endif /* __ASM_CPU_SH2A_CACHEFLUSH_H */
+13-4
arch/sh/mm/cache-sh2a.c
···1515#include <asm/cacheflush.h>1616#include <asm/io.h>17171818-void __flush_wback_region(void *start, int size)1818+static void sh2a__flush_wback_region(void *start, int size)1919{2020 unsigned long v;2121 unsigned long begin, end;···4444 local_irq_restore(flags);4545}46464747-void __flush_purge_region(void *start, int size)4747+static void sh2a__flush_purge_region(void *start, int size)4848{4949 unsigned long v;5050 unsigned long begin, end;···6565 local_irq_restore(flags);6666}67676868-void __flush_invalidate_region(void *start, int size)6868+static void sh2a__flush_invalidate_region(void *start, int size)6969{7070 unsigned long v;7171 unsigned long begin, end;···9797}98989999/* WBack O-Cache and flush I-Cache */100100-void flush_icache_range(unsigned long start, unsigned long end)100100+static void sh2a_flush_icache_range(unsigned long start, unsigned long end)101101{102102 unsigned long v;103103 unsigned long flags;···126126127127 back_to_cached();128128 local_irq_restore(flags);129129+}130130+131131+void __init sh2a_cache_init(void)132132+{133133+ flush_icache_range = sh2a_flush_icache_range;134134+135135+ __flush_wback_region = sh2a__flush_wback_region;136136+ __flush_purge_region = sh2a__flush_purge_region;137137+ __flush_invalidate_region = sh2a__flush_invalidate_region;129138}