aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/powerpc/kernel/setup_64.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
index f5f11a7d30e5..da9c42f53bb1 100644
--- a/arch/powerpc/kernel/setup_64.c
+++ b/arch/powerpc/kernel/setup_64.c
@@ -552,14 +552,20 @@ static void __init irqstack_early_init(void)
552static void __init exc_lvl_early_init(void) 552static void __init exc_lvl_early_init(void)
553{ 553{
554 unsigned int i; 554 unsigned int i;
555 unsigned long sp;
555 556
556 for_each_possible_cpu(i) { 557 for_each_possible_cpu(i) {
557 critirq_ctx[i] = (struct thread_info *) 558 sp = memblock_alloc(THREAD_SIZE, THREAD_SIZE);
558 __va(memblock_alloc(THREAD_SIZE, THREAD_SIZE)); 559 critirq_ctx[i] = (struct thread_info *)__va(sp);
559 dbgirq_ctx[i] = (struct thread_info *) 560 paca[i].crit_kstack = __va(sp + THREAD_SIZE);
560 __va(memblock_alloc(THREAD_SIZE, THREAD_SIZE)); 561
561 mcheckirq_ctx[i] = (struct thread_info *) 562 sp = memblock_alloc(THREAD_SIZE, THREAD_SIZE);
562 __va(memblock_alloc(THREAD_SIZE, THREAD_SIZE)); 563 dbgirq_ctx[i] = (struct thread_info *)__va(sp);
564 paca[i].dbg_kstack = __va(sp + THREAD_SIZE);
565
566 sp = memblock_alloc(THREAD_SIZE, THREAD_SIZE);
567 mcheckirq_ctx[i] = (struct thread_info *)__va(sp);
568 paca[i].mc_kstack = __va(sp + THREAD_SIZE);
563 } 569 }
564 570
565 if (cpu_has_feature(CPU_FTR_DEBUG_LVL_EXC)) 571 if (cpu_has_feature(CPU_FTR_DEBUG_LVL_EXC))