diff options
Diffstat (limited to 'arch/powerpc/kernel/process.c')
| -rw-r--r-- | arch/powerpc/kernel/process.c | 34 | 
1 files changed, 19 insertions, 15 deletions
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index be99774d3f44..bf44ae962ab8 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -1095,6 +1095,23 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)  	return 0;  } +static void setup_ksp_vsid(struct task_struct *p, unsigned long sp) +{ +#ifdef CONFIG_PPC_STD_MMU_64 +	unsigned long sp_vsid; +	unsigned long llp = mmu_psize_defs[mmu_linear_psize].sllp; + +	if (mmu_has_feature(MMU_FTR_1T_SEGMENT)) +		sp_vsid = get_kernel_vsid(sp, MMU_SEGSIZE_1T) +			<< SLB_VSID_SHIFT_1T; +	else +		sp_vsid = get_kernel_vsid(sp, MMU_SEGSIZE_256M) +			<< SLB_VSID_SHIFT; +	sp_vsid |= SLB_VSID_KERNEL | llp; +	p->thread.ksp_vsid = sp_vsid; +#endif +} +  /*   * Copy a thread..   */ @@ -1174,21 +1191,8 @@ int copy_thread(unsigned long clone_flags, unsigned long usp,  	p->thread.vr_save_area = NULL;  #endif -#ifdef CONFIG_PPC_STD_MMU_64 -	if (mmu_has_feature(MMU_FTR_SLB)) { -		unsigned long sp_vsid; -		unsigned long llp = mmu_psize_defs[mmu_linear_psize].sllp; +	setup_ksp_vsid(p, sp); -		if (mmu_has_feature(MMU_FTR_1T_SEGMENT)) -			sp_vsid = get_kernel_vsid(sp, MMU_SEGSIZE_1T) -				<< SLB_VSID_SHIFT_1T; -		else -			sp_vsid = get_kernel_vsid(sp, MMU_SEGSIZE_256M) -				<< SLB_VSID_SHIFT; -		sp_vsid |= SLB_VSID_KERNEL | llp; -		p->thread.ksp_vsid = sp_vsid; -	} -#endif /* CONFIG_PPC_STD_MMU_64 */  #ifdef CONFIG_PPC64   	if (cpu_has_feature(CPU_FTR_DSCR)) {  		p->thread.dscr_inherit = current->thread.dscr_inherit; @@ -1577,7 +1581,7 @@ void show_stack(struct task_struct *tsk, unsigned long *stack)  			struct pt_regs *regs = (struct pt_regs *)  				(sp + STACK_FRAME_OVERHEAD);  			lr = regs->link; -			printk("--- Exception: %lx at %pS\n    LR = %pS\n", +			printk("--- interrupt: %lx at %pS\n    LR = %pS\n",  			       regs->trap, (void *)regs->nip, (void *)lr);  			firstframe = 1;  		}  |