diff options
Diffstat (limited to 'arch/powerpc/mm/mmu_decl.h')
-rw-r--r-- | arch/powerpc/mm/mmu_decl.h | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/arch/powerpc/mm/mmu_decl.h b/arch/powerpc/mm/mmu_decl.h index d1f9c62dc177..d2e5321d5ea6 100644 --- a/arch/powerpc/mm/mmu_decl.h +++ b/arch/powerpc/mm/mmu_decl.h | |||
@@ -36,21 +36,37 @@ static inline void _tlbil_pid(unsigned int pid) | |||
36 | { | 36 | { |
37 | asm volatile ("sync; tlbia; isync" : : : "memory"); | 37 | asm volatile ("sync; tlbia; isync" : : : "memory"); |
38 | } | 38 | } |
39 | #define _tlbil_pid_noind(pid) _tlbil_pid(pid) | ||
40 | |||
39 | #else /* CONFIG_40x || CONFIG_8xx */ | 41 | #else /* CONFIG_40x || CONFIG_8xx */ |
40 | extern void _tlbil_all(void); | 42 | extern void _tlbil_all(void); |
41 | extern void _tlbil_pid(unsigned int pid); | 43 | extern void _tlbil_pid(unsigned int pid); |
44 | #ifdef CONFIG_PPC_BOOK3E | ||
45 | extern void _tlbil_pid_noind(unsigned int pid); | ||
46 | #else | ||
47 | #define _tlbil_pid_noind(pid) _tlbil_pid(pid) | ||
48 | #endif | ||
42 | #endif /* !(CONFIG_40x || CONFIG_8xx) */ | 49 | #endif /* !(CONFIG_40x || CONFIG_8xx) */ |
43 | 50 | ||
44 | /* | 51 | /* |
45 | * On 8xx, we directly inline tlbie, on others, it's extern | 52 | * On 8xx, we directly inline tlbie, on others, it's extern |
46 | */ | 53 | */ |
47 | #ifdef CONFIG_8xx | 54 | #ifdef CONFIG_8xx |
48 | static inline void _tlbil_va(unsigned long address, unsigned int pid) | 55 | static inline void _tlbil_va(unsigned long address, unsigned int pid, |
56 | unsigned int tsize, unsigned int ind) | ||
49 | { | 57 | { |
50 | asm volatile ("tlbie %0; sync" : : "r" (address) : "memory"); | 58 | asm volatile ("tlbie %0; sync" : : "r" (address) : "memory"); |
51 | } | 59 | } |
52 | #else /* CONFIG_8xx */ | 60 | #elif defined(CONFIG_PPC_BOOK3E) |
53 | extern void _tlbil_va(unsigned long address, unsigned int pid); | 61 | extern void _tlbil_va(unsigned long address, unsigned int pid, |
62 | unsigned int tsize, unsigned int ind); | ||
63 | #else | ||
64 | extern void __tlbil_va(unsigned long address, unsigned int pid); | ||
65 | static inline void _tlbil_va(unsigned long address, unsigned int pid, | ||
66 | unsigned int tsize, unsigned int ind) | ||
67 | { | ||
68 | __tlbil_va(address, pid); | ||
69 | } | ||
54 | #endif /* CONIFG_8xx */ | 70 | #endif /* CONIFG_8xx */ |
55 | 71 | ||
56 | /* | 72 | /* |
@@ -58,10 +74,16 @@ extern void _tlbil_va(unsigned long address, unsigned int pid); | |||
58 | * implementation. When that becomes the case, this will be | 74 | * implementation. When that becomes the case, this will be |
59 | * an extern. | 75 | * an extern. |
60 | */ | 76 | */ |
61 | static inline void _tlbivax_bcast(unsigned long address, unsigned int pid) | 77 | #ifdef CONFIG_PPC_BOOK3E |
78 | extern void _tlbivax_bcast(unsigned long address, unsigned int pid, | ||
79 | unsigned int tsize, unsigned int ind); | ||
80 | #else | ||
81 | static inline void _tlbivax_bcast(unsigned long address, unsigned int pid, | ||
82 | unsigned int tsize, unsigned int ind) | ||
62 | { | 83 | { |
63 | BUG(); | 84 | BUG(); |
64 | } | 85 | } |
86 | #endif | ||
65 | 87 | ||
66 | #else /* CONFIG_PPC_MMU_NOHASH */ | 88 | #else /* CONFIG_PPC_MMU_NOHASH */ |
67 | 89 | ||
@@ -99,7 +121,12 @@ extern unsigned int rtas_data, rtas_size; | |||
99 | struct hash_pte; | 121 | struct hash_pte; |
100 | extern struct hash_pte *Hash, *Hash_end; | 122 | extern struct hash_pte *Hash, *Hash_end; |
101 | extern unsigned long Hash_size, Hash_mask; | 123 | extern unsigned long Hash_size, Hash_mask; |
102 | #endif | 124 | |
125 | #endif /* CONFIG_PPC32 */ | ||
126 | |||
127 | #ifdef CONFIG_PPC64 | ||
128 | extern int map_kernel_page(unsigned long ea, unsigned long pa, int flags); | ||
129 | #endif /* CONFIG_PPC64 */ | ||
103 | 130 | ||
104 | extern unsigned long ioremap_bot; | 131 | extern unsigned long ioremap_bot; |
105 | extern unsigned long __max_low_memory; | 132 | extern unsigned long __max_low_memory; |