diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-10-25 14:35:13 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-12-04 15:58:51 +0100 |
commit | 9e95922b1016ac941db7edcf6b6088b3c2e916c8 (patch) | |
tree | 1b60b7231f9412e7c842c9a12804b3ab914ca5cd /arch/arm/mm | |
parent | ARM: 5794/1: Flush the D-cache during copy_user_highpage() (diff) | |
download | linux-9e95922b1016ac941db7edcf6b6088b3c2e916c8.tar.xz linux-9e95922b1016ac941db7edcf6b6088b3c2e916c8.zip |
ARM: I-cache: Add invalidation for VIVT ASID tagged caches
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm')
-rw-r--r-- | arch/arm/mm/flush.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c index dc66f867bec4..9770e27dd581 100644 --- a/arch/arm/mm/flush.c +++ b/arch/arm/mm/flush.c @@ -69,6 +69,9 @@ void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned : "cc"); __flush_icache_all(); } + + if (vma->vm_flags & VM_EXEC && icache_is_vivt_asid_tagged()) + __flush_icache_all(); } void flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr, unsigned long pfn) @@ -82,6 +85,9 @@ void flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr, unsig flush_pfn_alias(pfn, user_addr); __flush_icache_all(); } + + if (vma->vm_flags & VM_EXEC && icache_is_vivt_asid_tagged()) + __flush_icache_all(); } void flush_ptrace_access(struct vm_area_struct *vma, struct page *page, |