diff options
Diffstat (limited to 'arch/powerpc/kernel/setup_32.c')
-rw-r--r-- | arch/powerpc/kernel/setup_32.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/setup_32.c b/arch/powerpc/kernel/setup_32.c index 5112a4aa801..bef0be3fd98 100644 --- a/arch/powerpc/kernel/setup_32.c +++ b/arch/powerpc/kernel/setup_32.c | |||
@@ -248,6 +248,28 @@ static void __init irqstack_early_init(void) | |||
248 | #define irqstack_early_init() | 248 | #define irqstack_early_init() |
249 | #endif | 249 | #endif |
250 | 250 | ||
251 | #if defined(CONFIG_BOOKE) || defined(CONFIG_40x) | ||
252 | static void __init exc_lvl_early_init(void) | ||
253 | { | ||
254 | unsigned int i; | ||
255 | |||
256 | /* interrupt stacks must be in lowmem, we get that for free on ppc32 | ||
257 | * as the lmb is limited to lowmem by LMB_REAL_LIMIT */ | ||
258 | for_each_possible_cpu(i) { | ||
259 | critirq_ctx[i] = (struct thread_info *) | ||
260 | __va(lmb_alloc(THREAD_SIZE, THREAD_SIZE)); | ||
261 | #ifdef CONFIG_BOOKE | ||
262 | dbgirq_ctx[i] = (struct thread_info *) | ||
263 | __va(lmb_alloc(THREAD_SIZE, THREAD_SIZE)); | ||
264 | mcheckirq_ctx[i] = (struct thread_info *) | ||
265 | __va(lmb_alloc(THREAD_SIZE, THREAD_SIZE)); | ||
266 | #endif | ||
267 | } | ||
268 | } | ||
269 | #else | ||
270 | #define exc_lvl_early_init() | ||
271 | #endif | ||
272 | |||
251 | /* Warning, IO base is not yet inited */ | 273 | /* Warning, IO base is not yet inited */ |
252 | void __init setup_arch(char **cmdline_p) | 274 | void __init setup_arch(char **cmdline_p) |
253 | { | 275 | { |
@@ -305,6 +327,8 @@ void __init setup_arch(char **cmdline_p) | |||
305 | init_mm.end_data = (unsigned long) _edata; | 327 | init_mm.end_data = (unsigned long) _edata; |
306 | init_mm.brk = klimit; | 328 | init_mm.brk = klimit; |
307 | 329 | ||
330 | exc_lvl_early_init(); | ||
331 | |||
308 | irqstack_early_init(); | 332 | irqstack_early_init(); |
309 | 333 | ||
310 | /* set up the bootmem stuff with available memory */ | 334 | /* set up the bootmem stuff with available memory */ |