Commit | Line | Data |
---|---|---|
a95d0e16 | 1 | /* |
45be7d46 MS |
2 | * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu> |
3 | * Copyright (C) 2008-2009 PetaLogix | |
a95d0e16 MS |
4 | * Copyright (C) 2006 Atmark Techno, Inc. |
5 | * | |
6 | * This file is subject to the terms and conditions of the GNU General Public | |
7 | * License. See the file "COPYING" in the main directory of this archive | |
8 | * for more details. | |
9 | */ | |
10 | ||
11 | #ifndef _ASM_MICROBLAZE_TLBFLUSH_H | |
12 | #define _ASM_MICROBLAZE_TLBFLUSH_H | |
13 | ||
45be7d46 MS |
14 | #ifdef CONFIG_MMU |
15 | ||
16 | #include <linux/sched.h> | |
17 | #include <linux/threads.h> | |
18 | #include <asm/processor.h> /* For TASK_SIZE */ | |
19 | #include <asm/mmu.h> | |
20 | #include <asm/page.h> | |
21 | #include <asm/pgalloc.h> | |
22 | ||
23 | extern void _tlbie(unsigned long address); | |
24 | extern void _tlbia(void); | |
25 | ||
77753790 | 26 | #define __tlbia() { preempt_disable(); _tlbia(); preempt_enable(); } |
45be7d46 MS |
27 | |
28 | static inline void local_flush_tlb_all(void) | |
29 | { __tlbia(); } | |
30 | static inline void local_flush_tlb_mm(struct mm_struct *mm) | |
31 | { __tlbia(); } | |
32 | static inline void local_flush_tlb_page(struct vm_area_struct *vma, | |
33 | unsigned long vmaddr) | |
34 | { _tlbie(vmaddr); } | |
35 | static inline void local_flush_tlb_range(struct vm_area_struct *vma, | |
36 | unsigned long start, unsigned long end) | |
37 | { __tlbia(); } | |
38 | ||
39 | #define flush_tlb_kernel_range(start, end) do { } while (0) | |
40 | ||
4b3073e1 | 41 | #define update_mmu_cache(vma, addr, ptep) do { } while (0) |
45be7d46 MS |
42 | |
43 | #define flush_tlb_all local_flush_tlb_all | |
44 | #define flush_tlb_mm local_flush_tlb_mm | |
45 | #define flush_tlb_page local_flush_tlb_page | |
46 | #define flush_tlb_range local_flush_tlb_range | |
47 | ||
48 | /* | |
49 | * This is called in munmap when we have freed up some page-table | |
50 | * pages. We don't need to do anything here, there's nothing special | |
51 | * about our page-table pages. -- paulus | |
52 | */ | |
53 | static inline void flush_tlb_pgtables(struct mm_struct *mm, | |
54 | unsigned long start, unsigned long end) { } | |
55 | ||
56 | #else /* CONFIG_MMU */ | |
57 | ||
a95d0e16 MS |
58 | #define flush_tlb() BUG() |
59 | #define flush_tlb_all() BUG() | |
60 | #define flush_tlb_mm(mm) BUG() | |
61 | #define flush_tlb_page(vma, addr) BUG() | |
62 | #define flush_tlb_range(mm, start, end) BUG() | |
63 | #define flush_tlb_pgtables(mm, start, end) BUG() | |
64 | #define flush_tlb_kernel_range(start, end) BUG() | |
65 | ||
45be7d46 MS |
66 | #endif /* CONFIG_MMU */ |
67 | ||
a95d0e16 | 68 | #endif /* _ASM_MICROBLAZE_TLBFLUSH_H */ |