CVSROOT: /cvs Module name: src Changes by: mlar...@cvs.openbsd.org 2015/04/12 12:37:54
Modified files: sys/arch/i386/conf: files.i386 sys/arch/i386/i386: autoconf.c db_memrw.c genassym.cf hibernate_machdep.c kgdb_machdep.c kvm86.c lapic.c locore.s machdep.c mptramp.s pmap.c pmapae.c sys/arch/i386/include: biosvar.h cpu.h pmap.h pte.h sys/arch/i386/pci: piixpcib.c Log message: Bring PAE code back to life, in a different form. This diff (via bluhm then to deraadt, then myself) brings the PAE pmap on i386 (not touched in any significant way for years) closer to the current non-PAE pmap and allows us to take a big next step toward better i386 W^X in the kernel (similar to what we did a few months ago on amd64). Unlike the original PAE pmap, this diff will not be supporting > 4GB physical memory on i386 - this effort is specifically geared toward providing W^X (via NX) only. There still seems to be a bug removing certain pmap entries when PAE is enabled, so I'm leaving PAE mode disabled for the moment until we can figure out what is going on, but with this diff in the tree hopefully others can help. The pmap functions now operate through function pointers, due to the need to support both non-PAE and PAE forms. My unscientific testing showed less than 0.3% (a third of a percent) slowdown with this approach during a base build. Discussed for months with guenther, kettenis, and deraadt. ok kettenis@, deraadt@