Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 160c7324 authored by Tiejun Chen's avatar Tiejun Chen Committed by Scott Wood
Browse files

powerpc/book3e: initialize crit/mc/dbg kernel stack pointers



We already allocated critical/machine/debug check exceptions, but
we also should initialize those associated kernel stack pointers
for use by special exceptions in the PACA.

Signed-off-by: default avatarTiejun Chen <tiejun.chen@windriver.com>
Signed-off-by: default avatarScott Wood <scottwood@freescale.com>
parent b0b7dcbd
Loading
Loading
Loading
Loading
+12 −6
Original line number Original line Diff line number Diff line
@@ -552,14 +552,20 @@ static void __init irqstack_early_init(void)
static void __init exc_lvl_early_init(void)
static void __init exc_lvl_early_init(void)
{
{
	unsigned int i;
	unsigned int i;
	unsigned long sp;


	for_each_possible_cpu(i) {
	for_each_possible_cpu(i) {
		critirq_ctx[i] = (struct thread_info *)
		sp = memblock_alloc(THREAD_SIZE, THREAD_SIZE);
			__va(memblock_alloc(THREAD_SIZE, THREAD_SIZE));
		critirq_ctx[i] = (struct thread_info *)__va(sp);
		dbgirq_ctx[i] = (struct thread_info *)
		paca[i].crit_kstack = __va(sp + THREAD_SIZE);
			__va(memblock_alloc(THREAD_SIZE, THREAD_SIZE));

		mcheckirq_ctx[i] = (struct thread_info *)
		sp = memblock_alloc(THREAD_SIZE, THREAD_SIZE);
			__va(memblock_alloc(THREAD_SIZE, THREAD_SIZE));
		dbgirq_ctx[i] = (struct thread_info *)__va(sp);
		paca[i].dbg_kstack = __va(sp + THREAD_SIZE);

		sp = memblock_alloc(THREAD_SIZE, THREAD_SIZE);
		mcheckirq_ctx[i] = (struct thread_info *)__va(sp);
		paca[i].mc_kstack = __va(sp + THREAD_SIZE);
	}
	}


	if (cpu_has_feature(CPU_FTR_DEBUG_LVL_EXC))
	if (cpu_has_feature(CPU_FTR_DEBUG_LVL_EXC))