[PATCH] powerpc: Fix determining TI_CPU in power_save_ppc32_restore()

Kumar Gala galak at kernel.crashing.org
Tue Aug 26 12:10:35 EST 2008


> diff --git a/arch/powerpc/kernel/idle_6xx.S b/arch/powerpc/kernel/ 
> idle_6xx.S
> index 019b02d..0138d88 100644
> --- a/arch/powerpc/kernel/idle_6xx.S
> +++ b/arch/powerpc/kernel/idle_6xx.S
> @@ -151,19 +151,20 @@ END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
>  * Return from NAP/DOZE mode, restore some CPU specific registers,
>  * we are called with DR/IR still off and r2 containing physical
>  * address of current.  R11 points to the exception frame (physical
> - * address).  We have to preserve r10.
> + * address).  We have to preserve r10.  R9 contains the physical
> + * address of thread_info.
>  */
> _GLOBAL(power_save_ppc32_restore)
> -	lwz	r9,_LINK(r11)		/* interrupted in ppc6xx_idle: */
> -	stw	r9,_NIP(r11)		/* make it do a blr */
> -
> #ifdef CONFIG_SMP
> -	mfspr	r12,SPRN_SPRG3
> -	lwz	r11,TI_CPU(r12)		/* get cpu number * 4 */
> +	lwz	r11,TI_CPU(r9)		/* get cpu number * 4 */
> 	slwi	r11,r11,2
> #else
> 	li	r11,0
> #endif
> +
> +	lwz	r9,_LINK(r11)		/* interrupted in ppc6xx_idle: */
> +	stw	r9,_NIP(r11)		/* make it do a blr */
> +

this is just brain damaged as I'm clobber r11 before setting up r9  
with LR.  V2 of the patch does things right.

- k



More information about the Linuxppc-dev mailing list