diff options
Diffstat (limited to 'arch/arm/mm/fault-armv.c')
-rw-r--r-- | arch/arm/mm/fault-armv.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/arm/mm/fault-armv.c b/arch/arm/mm/fault-armv.c index 44558d5f9313..fbfa26058442 100644 --- a/arch/arm/mm/fault-armv.c +++ b/arch/arm/mm/fault-armv.c | |||
@@ -144,13 +144,17 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long addr, pte_t pte) | |||
144 | page = pfn_to_page(pfn); | 144 | page = pfn_to_page(pfn); |
145 | mapping = page_mapping(page); | 145 | mapping = page_mapping(page); |
146 | if (mapping) { | 146 | if (mapping) { |
147 | #ifndef CONFIG_SMP | ||
147 | int dirty = test_and_clear_bit(PG_dcache_dirty, &page->flags); | 148 | int dirty = test_and_clear_bit(PG_dcache_dirty, &page->flags); |
148 | 149 | ||
149 | if (dirty) | 150 | if (dirty) |
150 | __flush_dcache_page(mapping, page); | 151 | __flush_dcache_page(mapping, page); |
152 | #endif | ||
151 | 153 | ||
152 | if (cache_is_vivt()) | 154 | if (cache_is_vivt()) |
153 | make_coherent(mapping, vma, addr, pfn); | 155 | make_coherent(mapping, vma, addr, pfn); |
156 | else if (vma->vm_flags & VM_EXEC) | ||
157 | __flush_icache_all(); | ||
154 | } | 158 | } |
155 | } | 159 | } |
156 | 160 | ||