aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/mm/pg-mmu.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sh/mm/pg-mmu.c')
-rw-r--r--arch/sh/mm/pg-mmu.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/arch/sh/mm/pg-mmu.c b/arch/sh/mm/pg-mmu.c
index a9ede7bae520..027c4d83fb8e 100644
--- a/arch/sh/mm/pg-mmu.c
+++ b/arch/sh/mm/pg-mmu.c
@@ -157,3 +157,20 @@ void __update_cache(struct vm_area_struct *vma,
157 } 157 }
158 } 158 }
159} 159}
160
161void __flush_anon_page(struct page *page, unsigned long vmaddr)
162{
163 unsigned long addr = (unsigned long) page_address(page);
164
165 if (pages_do_alias(addr, vmaddr)) {
166 if (boot_cpu_data.dcache.n_aliases && page_mapped(page) &&
167 !test_bit(PG_dcache_dirty, &page->flags)) {
168 void *kaddr;
169
170 kaddr = kmap_coherent(page, vmaddr);
171 __flush_wback_region((void *)kaddr, PAGE_SIZE);
172 kunmap_coherent();
173 } else
174 __flush_wback_region((void *)addr, PAGE_SIZE);
175 }
176}