f54a093e81
- use struct vm_page_md for attaching pv entries to struct vm_page - change pseg_set()'s return value to indicate whether the spare page was used as an L2 or L3 PTP. - use a pool for pv entries instead of malloc(). - put PTPs on a list attached to the pmap so we can free them more efficiently (by just walking the list) in pmap_destroy(). - use the new pmap_remove_all() interface to avoid flushing the cache and TLB for each pmap_remove() that's done as we are tearing down an address space. - in pmap_enter(), handle replacing an existing mapping more efficiently than just calling pmap_remove() on it. also, skip flushing the TSB and TLB if there was no previous mapping, since there can't be anything we need to flush. also, preload the TSB if we're pre-setting the mod/ref bits. - allocate hardware contexts like the MIPS pmap: allocate them all sequentially without reuse, then once we run out just invalidate all user TLB entries and flush the entire L1 dcache. - fix pmap_extract() for the case where the va is not page-aligned and nothing is mapped there. - fix calculation of TSB size. it was comparing physmem (which is in units of pages) to constants that only make sense if they are in units of bytes. - avoid sleeping in pmap_enter(), instead let the caller do it. - use pmap_kenter_pa() instead of pmap_enter() where appropriate. - remove code to handle impossible cases in various functions. - tweak asm code to pipeline a little better. - remove many unnecessary spls and membars. - lots of code cleanup. - no doubt other stuff that I've forgotten. the result of all this is that a fork+exit microbenchmark is 34% faster and a fork+exec+exit microbenchmark is 28% faster. |
||
---|---|---|
.. | ||
ansi.h | ||
aout_machdep.h | ||
asm.h | ||
autoconf.h | ||
bootinfo.h | ||
bsd_openprom.h | ||
bswap.h | ||
bus.h | ||
cdefs.h | ||
cgtworeg.h | ||
cpu.h | ||
ctlreg.h | ||
db_machdep.h | ||
disklabel.h | ||
eeprom.h | ||
elf_machdep.h | ||
endian_machdep.h | ||
endian.h | ||
fbvar.h | ||
float.h | ||
frame.h | ||
fsr.h | ||
idprom.h | ||
ieee.h | ||
ieeefp.h | ||
instr.h | ||
int_const.h | ||
int_fmtio.h | ||
int_limits.h | ||
int_mwgwtypes.h | ||
int_types.h | ||
intr.h | ||
kbd.h | ||
kbio.h | ||
kcore.h | ||
limits.h | ||
loadfile_machdep.h | ||
lock.h | ||
Makefile | ||
math.h | ||
netbsd32_machdep.h | ||
oldmon.h | ||
openfirm.h | ||
openpromio.h | ||
param.h | ||
pcb.h | ||
pci_machdep.h | ||
pmap.h | ||
pmc.h | ||
proc.h | ||
profile.h | ||
promlib.h | ||
psl.h | ||
pte.h | ||
ptrace.h | ||
reg.h | ||
reloc.h | ||
remote-sl.h | ||
setjmp.h | ||
signal.h | ||
sparc64.h | ||
stdarg.h | ||
svr4_32_machdep.h | ||
svr4_machdep.h | ||
trap.h | ||
types.h | ||
varargs.h | ||
vmparam.h | ||
vuid_event.h | ||
z8530var.h |