diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-10-24 17:58:40 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-12-04 09:58:50 -0500 |
commit | 2df341edf6b8a2db7f414d00faeadccbdd9844ab (patch) | |
tree | e88bb4f549103a9fe25552ab136c9ce3daab61f1 /arch/arm/mm/flush.c | |
parent | 7b0a1003e780193e2a11c27f5059c26b65f60679 (diff) |
ARM: Move __flush_icache_all() out of flush_pfn_alias()
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm/flush.c')
-rw-r--r-- | arch/arm/mm/flush.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c index 82f4b06bf6b4..302d66517488 100644 --- a/arch/arm/mm/flush.c +++ b/arch/arm/mm/flush.c | |||
@@ -35,7 +35,6 @@ static void flush_pfn_alias(unsigned long pfn, unsigned long vaddr) | |||
35 | : | 35 | : |
36 | : "r" (to), "r" (to + PAGE_SIZE - L1_CACHE_BYTES), "r" (zero) | 36 | : "r" (to), "r" (to + PAGE_SIZE - L1_CACHE_BYTES), "r" (zero) |
37 | : "cc"); | 37 | : "cc"); |
38 | __flush_icache_all(); | ||
39 | } | 38 | } |
40 | 39 | ||
41 | void flush_cache_mm(struct mm_struct *mm) | 40 | void flush_cache_mm(struct mm_struct *mm) |
@@ -79,8 +78,10 @@ void flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr, unsig | |||
79 | return; | 78 | return; |
80 | } | 79 | } |
81 | 80 | ||
82 | if (cache_is_vipt_aliasing()) | 81 | if (cache_is_vipt_aliasing()) { |
83 | flush_pfn_alias(pfn, user_addr); | 82 | flush_pfn_alias(pfn, user_addr); |
83 | __flush_icache_all(); | ||
84 | } | ||
84 | } | 85 | } |
85 | 86 | ||
86 | void flush_ptrace_access(struct vm_area_struct *vma, struct page *page, | 87 | void flush_ptrace_access(struct vm_area_struct *vma, struct page *page, |
@@ -94,6 +95,7 @@ void flush_ptrace_access(struct vm_area_struct *vma, struct page *page, | |||
94 | 95 | ||
95 | if (cache_is_vipt_aliasing()) { | 96 | if (cache_is_vipt_aliasing()) { |
96 | flush_pfn_alias(page_to_pfn(page), uaddr); | 97 | flush_pfn_alias(page_to_pfn(page), uaddr); |
98 | __flush_icache_all(); | ||
97 | return; | 99 | return; |
98 | } | 100 | } |
99 | 101 | ||
@@ -132,9 +134,11 @@ void __flush_dcache_page(struct address_space *mapping, struct page *page) | |||
132 | * we only need to do one flush - which would be at the relevant | 134 | * we only need to do one flush - which would be at the relevant |
133 | * userspace colour, which is congruent with page->index. | 135 | * userspace colour, which is congruent with page->index. |
134 | */ | 136 | */ |
135 | if (mapping && cache_is_vipt_aliasing()) | 137 | if (mapping && cache_is_vipt_aliasing()) { |
136 | flush_pfn_alias(page_to_pfn(page), | 138 | flush_pfn_alias(page_to_pfn(page), |
137 | page->index << PAGE_CACHE_SHIFT); | 139 | page->index << PAGE_CACHE_SHIFT); |
140 | __flush_icache_all(); | ||
141 | } | ||
138 | } | 142 | } |
139 | 143 | ||
140 | static void __flush_dcache_aliases(struct address_space *mapping, struct page *page) | 144 | static void __flush_dcache_aliases(struct address_space *mapping, struct page *page) |
@@ -244,6 +248,7 @@ void __flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned l | |||
244 | * userspace address only. | 248 | * userspace address only. |
245 | */ | 249 | */ |
246 | flush_pfn_alias(pfn, vmaddr); | 250 | flush_pfn_alias(pfn, vmaddr); |
251 | __flush_icache_all(); | ||
247 | } | 252 | } |
248 | 253 | ||
249 | /* | 254 | /* |