[OpenBIOS] [PATCH] ppc: fix mtmsr for SF setting

Segher Boessenkool segher at kernel.crashing.org
Thu Jun 16 21:43:58 CEST 2011


> This patch adds a runtime check on PVR to see if we're running on a 
> 64-bit
> capable CPU. If so, we use mtmsrd, which can set the high 32bits of 
> MSR.

That PVR check isn't quite correct.

>  	mfmsr	r1 ;				/* unset MSR_SF */ \
>  	clrlwi	r1,r1,0 ; \
> -	mtmsr	r1 ; \
> +	mtmsrd	r1 ; \

clrlwi 1,1,0  is  rlwinm 1,1,0,0,31  which clears all the top 32 bits, 
not
only MSR[SF].  Importantly it clears MSR[HV], which you do not want.  
Use
rldicl instead?

Instead of the PVR thing, you could check if MSR[SF] is set, and only 
then
clear it.  Is this same code used on 32-bit systems?

lis x,0x8000 ; add. x,x,x ; beq ohai_we_are_32bit


Segher




More information about the OpenBIOS mailing list