aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-arm/mmu_context.h
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2006-06-29 15:17:15 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2006-06-29 17:14:30 -0400
commitff0daca525dde796382b9ccd563f169df2571211 (patch)
treeacb3feb60cec39f316447f702a2277a7448cbad9 /include/asm-arm/mmu_context.h
parentba53201180e267bd1f0792e6c375ced7c100738e (diff)
[ARM] Add section support to ioremap
Allow section mappings to be setup using ioremap() and torn down with iounmap(). This requires additional support in the MM context switch to ensure that mappings are properly synchronised when mapped in. Based an original implementation by Deepak Saxena, reworked and ARMv6 support added by rmk. 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.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/include/asm-arm/mmu_context.h b/include/asm-arm/mmu_context.h
index 9fadb01e030d..d1a65b1edcaa 100644
--- a/include/asm-arm/mmu_context.h
+++ b/include/asm-arm/mmu_context.h
@@ -17,6 +17,8 @@
17#include <asm/cacheflush.h> 17#include <asm/cacheflush.h>
18#include <asm/proc-fns.h> 18#include <asm/proc-fns.h>
19 19
20void __check_kvm_seq(struct mm_struct *mm);
21
20#if __LINUX_ARM_ARCH__ >= 6 22#if __LINUX_ARM_ARCH__ >= 6
21 23
22/* 24/*
@@ -45,13 +47,21 @@ static inline void check_context(struct mm_struct *mm)
45{ 47{
46 if (unlikely((mm->context.id ^ cpu_last_asid) >> ASID_BITS)) 48 if (unlikely((mm->context.id ^ cpu_last_asid) >> ASID_BITS))
47 __new_context(mm); 49 __new_context(mm);
50
51 if (unlikely(mm->context.kvm_seq != init_mm.context.kvm_seq))
52 __check_kvm_seq(mm);
48} 53}
49 54
50#define init_new_context(tsk,mm) (__init_new_context(tsk,mm),0) 55#define init_new_context(tsk,mm) (__init_new_context(tsk,mm),0)
51 56
52#else 57#else
53 58
54#define check_context(mm) do { } while (0) 59static inline void check_context(struct mm_struct *mm)
60{
61 if (unlikely(mm->context.kvm_seq != init_mm.context.kvm_seq))
62 __check_kvm_seq(mm);
63}
64
55#define init_new_context(tsk,mm) 0 65#define init_new_context(tsk,mm) 0
56 66
57#endif 67#endif