diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2008-06-13 10:28:36 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2008-07-03 16:39:57 +0100 |
commit | 826cbdaff29764bb6928c715c6a025e49469dda9 (patch) | |
tree | 0fa040b3be05d88291eb5dca05f77202ad56ab45 /include/asm-arm/mmu_context.h | |
parent | 43df5220e455d426ec7462d0bf906e686c65ebb5 (diff) | |
download | op-kernel-dev-826cbdaff29764bb6928c715c6a025e49469dda9.zip op-kernel-dev-826cbdaff29764bb6928c715c6a025e49469dda9.tar.gz |
[ARM] 5092/1: Fix the I-cache invalidation on ARMv6 and later CPUs
This patch adds the I-cache invalidation in update_mmu_cache if the
corresponding vma is marked as executable. It also invalidates the
I-cache if a thread migrates to a CPU it never ran on.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'include/asm-arm/mmu_context.h')
-rw-r--r-- | include/asm-arm/mmu_context.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/include/asm-arm/mmu_context.h b/include/asm-arm/mmu_context.h index 6913d02..91b9dfd 100644 --- a/include/asm-arm/mmu_context.h +++ b/include/asm-arm/mmu_context.h @@ -97,6 +97,11 @@ switch_mm(struct mm_struct *prev, struct mm_struct *next, #ifdef CONFIG_MMU unsigned int cpu = smp_processor_id(); +#ifdef CONFIG_SMP + /* check for possible thread migration */ + if (!cpus_empty(next->cpu_vm_mask) && !cpu_isset(cpu, next->cpu_vm_mask)) + __flush_icache_all(); +#endif if (!cpu_test_and_set(cpu, next->cpu_vm_mask) || prev != next) { check_context(next); cpu_switch_mm(next->pgd, next); |