Module Name: src Committed By: bouyer Date: Sat Mar 17 18:44:08 UTC 2012
Modified Files: src/doc [netbsd-5]: HACKS src/sys/arch/sparc64/conf [netbsd-5]: Makefile.sparc64 files.sparc64 src/sys/arch/sparc64/sparc64 [netbsd-5]: locore.s Log Message: Pull up following revision(s) (requested by nakayama in ticket #1736): sys/arch/sparc64/conf/Makefile.sparc64: revision 1.71 doc/HACKS: revision 1.123 sys/arch/sparc64/conf/files.sparc64: revision 1.138 sys/arch/sparc64/sparc64/locore.s: revision 1.340 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. The hack has been resolved in the revision 1.340 of sys/arch/sparc64/sparc64/locore.s. To generate a diff of this commit: cvs rdiff -u -r1.110.2.2 -r1.110.2.3 src/doc/HACKS cvs rdiff -u -r1.67.4.1 -r1.67.4.2 src/sys/arch/sparc64/conf/Makefile.sparc64 cvs rdiff -u -r1.118.20.1 -r1.118.20.2 \ src/sys/arch/sparc64/conf/files.sparc64 cvs rdiff -u -r1.286.2.2 -r1.286.2.3 src/sys/arch/sparc64/sparc64/locore.s Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.