diff options
Diffstat (limited to 'arch/powerpc/mm/slb.c')
-rw-r--r-- | arch/powerpc/mm/slb.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c index d3733912adb4..224e960650a0 100644 --- a/arch/powerpc/mm/slb.c +++ b/arch/powerpc/mm/slb.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <asm/cputable.h> | 23 | #include <asm/cputable.h> |
24 | #include <asm/cacheflush.h> | 24 | #include <asm/cacheflush.h> |
25 | #include <asm/smp.h> | 25 | #include <asm/smp.h> |
26 | #include <asm/firmware.h> | ||
26 | #include <linux/compiler.h> | 27 | #include <linux/compiler.h> |
27 | 28 | ||
28 | #ifdef DEBUG | 29 | #ifdef DEBUG |
@@ -193,6 +194,7 @@ static inline void patch_slb_encoding(unsigned int *insn_addr, | |||
193 | void slb_initialize(void) | 194 | void slb_initialize(void) |
194 | { | 195 | { |
195 | unsigned long linear_llp, vmalloc_llp, io_llp; | 196 | unsigned long linear_llp, vmalloc_llp, io_llp; |
197 | unsigned long lflags, vflags; | ||
196 | static int slb_encoding_inited; | 198 | static int slb_encoding_inited; |
197 | extern unsigned int *slb_miss_kernel_load_linear; | 199 | extern unsigned int *slb_miss_kernel_load_linear; |
198 | extern unsigned int *slb_miss_kernel_load_io; | 200 | extern unsigned int *slb_miss_kernel_load_io; |
@@ -225,11 +227,12 @@ void slb_initialize(void) | |||
225 | #endif | 227 | #endif |
226 | } | 228 | } |
227 | 229 | ||
230 | get_paca()->stab_rr = SLB_NUM_BOLTED; | ||
231 | |||
228 | /* On iSeries the bolted entries have already been set up by | 232 | /* On iSeries the bolted entries have already been set up by |
229 | * the hypervisor from the lparMap data in head.S */ | 233 | * the hypervisor from the lparMap data in head.S */ |
230 | #ifndef CONFIG_PPC_ISERIES | 234 | if (firmware_has_feature(FW_FEATURE_ISERIES)) |
231 | { | 235 | return; |
232 | unsigned long lflags, vflags; | ||
233 | 236 | ||
234 | lflags = SLB_VSID_KERNEL | linear_llp; | 237 | lflags = SLB_VSID_KERNEL | linear_llp; |
235 | vflags = SLB_VSID_KERNEL | vmalloc_llp; | 238 | vflags = SLB_VSID_KERNEL | vmalloc_llp; |
@@ -247,8 +250,4 @@ void slb_initialize(void) | |||
247 | * elsewhere, we'll call _switch() which will bolt in the new | 250 | * elsewhere, we'll call _switch() which will bolt in the new |
248 | * one. */ | 251 | * one. */ |
249 | asm volatile("isync":::"memory"); | 252 | asm volatile("isync":::"memory"); |
250 | } | ||
251 | #endif /* CONFIG_PPC_ISERIES */ | ||
252 | |||
253 | get_paca()->stab_rr = SLB_NUM_BOLTED; | ||
254 | } | 253 | } |