diff options
Diffstat (limited to 'arch/powerpc/kernel/process.c')
| -rw-r--r-- | arch/powerpc/kernel/process.c | 17 | 
1 files changed, 7 insertions, 10 deletions
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 8005e18d1b40..75b6676c1a0b 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -86,7 +86,7 @@ void giveup_fpu_maybe_transactional(struct task_struct *tsk)  	if (tsk == current && tsk->thread.regs &&  	    MSR_TM_ACTIVE(tsk->thread.regs->msr) &&  	    !test_thread_flag(TIF_RESTORE_TM)) { -		tsk->thread.tm_orig_msr = tsk->thread.regs->msr; +		tsk->thread.ckpt_regs.msr = tsk->thread.regs->msr;  		set_thread_flag(TIF_RESTORE_TM);  	} @@ -104,7 +104,7 @@ void giveup_altivec_maybe_transactional(struct task_struct *tsk)  	if (tsk == current && tsk->thread.regs &&  	    MSR_TM_ACTIVE(tsk->thread.regs->msr) &&  	    !test_thread_flag(TIF_RESTORE_TM)) { -		tsk->thread.tm_orig_msr = tsk->thread.regs->msr; +		tsk->thread.ckpt_regs.msr = tsk->thread.regs->msr;  		set_thread_flag(TIF_RESTORE_TM);  	} @@ -204,8 +204,6 @@ EXPORT_SYMBOL_GPL(flush_altivec_to_thread);  #endif /* CONFIG_ALTIVEC */  #ifdef CONFIG_VSX -#if 0 -/* not currently used, but some crazy RAID module might want to later */  void enable_kernel_vsx(void)  {  	WARN_ON(preemptible()); @@ -220,7 +218,6 @@ void enable_kernel_vsx(void)  #endif /* CONFIG_SMP */  }  EXPORT_SYMBOL(enable_kernel_vsx); -#endif  void giveup_vsx(struct task_struct *tsk)  { @@ -543,7 +540,7 @@ static void tm_reclaim_thread(struct thread_struct *thr,  	 * the thread will no longer be transactional.  	 */  	if (test_ti_thread_flag(ti, TIF_RESTORE_TM)) { -		msr_diff = thr->tm_orig_msr & ~thr->regs->msr; +		msr_diff = thr->ckpt_regs.msr & ~thr->regs->msr;  		if (msr_diff & MSR_FP)  			memcpy(&thr->transact_fp, &thr->fp_state,  			       sizeof(struct thread_fp_state)); @@ -594,10 +591,10 @@ static inline void tm_reclaim_task(struct task_struct *tsk)  	/* Stash the original thread MSR, as giveup_fpu et al will  	 * modify it.  We hold onto it to see whether the task used  	 * FP & vector regs.  If the TIF_RESTORE_TM flag is set, -	 * tm_orig_msr is already set. +	 * ckpt_regs.msr is already set.  	 */  	if (!test_ti_thread_flag(task_thread_info(tsk), TIF_RESTORE_TM)) -		thr->tm_orig_msr = thr->regs->msr; +		thr->ckpt_regs.msr = thr->regs->msr;  	TM_DEBUG("--- tm_reclaim on pid %d (NIP=%lx, "  		 "ccr=%lx, msr=%lx, trap=%lx)\n", @@ -666,7 +663,7 @@ static inline void tm_recheckpoint_new_task(struct task_struct *new)  		tm_restore_sprs(&new->thread);  		return;  	} -	msr = new->thread.tm_orig_msr; +	msr = new->thread.ckpt_regs.msr;  	/* Recheckpoint to restore original checkpointed register state. */  	TM_DEBUG("*** tm_recheckpoint of pid %d "  		 "(new->msr 0x%lx, new->origmsr 0x%lx)\n", @@ -726,7 +723,7 @@ void restore_tm_state(struct pt_regs *regs)  	if (!MSR_TM_ACTIVE(regs->msr))  		return; -	msr_diff = current->thread.tm_orig_msr & ~regs->msr; +	msr_diff = current->thread.ckpt_regs.msr & ~regs->msr;  	msr_diff &= MSR_FP | MSR_VEC | MSR_VSX;  	if (msr_diff & MSR_FP) {  		fp_enable();  |