diff options
author | Mikael Starvik <mikael.starvik@axis.com> | 2005-07-27 14:44:42 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-07-27 19:26:01 -0400 |
commit | 8d20a541b089ecb67a88a673548161b686ed7b85 (patch) | |
tree | 53bac804d538068c80684becb76cd76937956502 /include/asm-cris/tlbflush.h | |
parent | 21783c9746619a782c21be606f6498bbd4d4615e (diff) |
[PATCH] CRIS update: SMP
Patches to support SMP.
* Each CPU has its own current_pgd.
* flush_tlb_range is implemented as flush_tlb_mm.
* Atomic operations implemented with spinlocks.
* Semaphores implemented with spinlocks.
Signed-off-by: Mikael Starvik <starvik@axis.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/asm-cris/tlbflush.h')
-rw-r--r-- | include/asm-cris/tlbflush.h | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/include/asm-cris/tlbflush.h b/include/asm-cris/tlbflush.h index 1781fe1a32f6..6ed7d9ae90db 100644 --- a/include/asm-cris/tlbflush.h +++ b/include/asm-cris/tlbflush.h | |||
@@ -18,13 +18,26 @@ | |||
18 | * | 18 | * |
19 | */ | 19 | */ |
20 | 20 | ||
21 | extern void __flush_tlb_all(void); | ||
22 | extern void __flush_tlb_mm(struct mm_struct *mm); | ||
23 | extern void __flush_tlb_page(struct vm_area_struct *vma, | ||
24 | unsigned long addr); | ||
25 | |||
26 | #ifdef CONFIG_SMP | ||
21 | extern void flush_tlb_all(void); | 27 | extern void flush_tlb_all(void); |
22 | extern void flush_tlb_mm(struct mm_struct *mm); | 28 | extern void flush_tlb_mm(struct mm_struct *mm); |
23 | extern void flush_tlb_page(struct vm_area_struct *vma, | 29 | extern void flush_tlb_page(struct vm_area_struct *vma, |
24 | unsigned long addr); | 30 | unsigned long addr); |
25 | extern void flush_tlb_range(struct vm_area_struct *vma, | 31 | #else |
26 | unsigned long start, | 32 | #define flush_tlb_all __flush_tlb_all |
27 | unsigned long end); | 33 | #define flush_tlb_mm __flush_tlb_mm |
34 | #define flush_tlb_page __flush_tlb_page | ||
35 | #endif | ||
36 | |||
37 | static inline void flush_tlb_range(struct vm_area_struct * vma, unsigned long start, unsigned long end) | ||
38 | { | ||
39 | flush_tlb_mm(vma->vm_mm); | ||
40 | } | ||
28 | 41 | ||
29 | extern inline void flush_tlb_pgtables(struct mm_struct *mm, | 42 | extern inline void flush_tlb_pgtables(struct mm_struct *mm, |
30 | unsigned long start, unsigned long end) | 43 | unsigned long start, unsigned long end) |