On Sat, Mar 03, 2012 at 03:17:32AM +0000, Takeshi Nakayama wrote:
> Module Name:  src
> Committed By: nakayama
> Date:         Sat Mar  3 03:17:32 UTC 2012
> 
> Modified Files:
>       src/sys/arch/sparc64/sparc64: locore.s
> 
> Log Message:
> Fix the root cause of the hack "disable optimizations for uvm_bio.c
> on 32 bit kernels".
> 
> gcc converts a division in the calculation of UBC_UMAP_ADDR macro
> to multiplication (smul or combination of add/sll), and the
> register of its result contains a garbage in upper 32 bits (the
> upper 32 bits of smul/add/sll's result isn't zero cleared).
> 
> Then it passes to pseg_get{,_real} through pmap_extract without the
> zero clear of upper 32 bits in the optimization case.  So the
> result of pseg_get and pmap_extact sometimes gets screwed up.

Oh, good catch!

Thanks for fixing this one.

Best,
Al

Reply via email to