diff options
Diffstat (limited to 'arch/sh/mm/pg-mmu.c')
-rw-r--r-- | arch/sh/mm/pg-mmu.c | 17 |
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 | |||
161 | void __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 | } | ||