freebsd-nq/sys/amd64/include
Peter Wemm 0385347c1a Implement an optimization of the VM<->pmap API. Pass vm_page_t's directly
to various pmap_*() functions instead of looking up the physical address
and passing that.  In many cases, the first thing the pmap code was doing
was going to a lot of trouble to get back the original vm_page_t, or
it's shadow pv_table entry.

Inspired by: John Dyson's 1998 patches.

Also:
Eliminate pv_table as a seperate thing and build it into a machine
dependent part of vm_page_t.  This eliminates having a seperate set of
structions that shadow each other in a 1:1 fashion that we often went to
a lot of trouble to translate from one to the other. (see above)
This happens to save 4 bytes of physical memory for each page in the
system.  (8 bytes on the Alpha).

Eliminate the use of the phys_avail[] array to determine if a page is
managed (ie: it has pv_entries etc).  Store this information in a flag.
Things like device_pager set it because they create vm_page_t's on the
fly that do not have pv_entries.  This makes it easier to "unmanage" a
page of physical memory (this will be taken advantage of in subsequent
commits).

Add a function to add a new page to the freelist.  This could be used
for reclaiming the previously wasted pages left over from preloaded
loader(8) files.

Reviewed by:	dillon
2000-05-21 12:50:18 +00:00
..
pc Some more i386-only BIOS-friendliness: 2000-04-16 20:48:33 +00:00
apicreg.h Optimize two cases in the MP locking code. First, it is not necessary 1999-11-19 16:49:30 +00:00
asm.h Fixed the profiling version ALTENTRY(). Again. The previous version 2000-01-25 09:01:55 +00:00
asmacros.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
atomic.h When using _asm{} in GCC, one must specify the operand's size if one 2000-05-10 01:15:55 +00:00
bus_amd64.h Implement real read/write barriers for the i386. Despite the comment in 2000-05-18 00:06:10 +00:00
bus_at386.h Implement real read/write barriers for the i386. Despite the comment in 2000-05-18 00:06:10 +00:00
bus_dma.h Implement real read/write barriers for the i386. Despite the comment in 2000-05-18 00:06:10 +00:00
bus_memio.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
bus_pio.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
bus.h Added indirect pio into the bus space stuff for the NEC PC-98. bus.h 2000-03-29 03:15:22 +00:00
clock.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
cpu.h Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
cpufunc.h Fix an __asm operand constraint which broke the -O3 and -O0 builds. 2000-02-21 13:06:50 +00:00
cputypes.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
db_machdep.h Fix style bug: order includes 1999-10-04 13:55:35 +00:00
elf.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
exec.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
float.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
floatingpoint.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
fpu.h Change the default FPU control word so that exceptions for new 2000-03-10 17:56:33 +00:00
frame.h sigset_t change (part 3 of 5) 1999-09-29 15:06:27 +00:00
ieeefp.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
md_var.h Don't forget to reset the hardware debug registers when a process that 2000-02-20 20:51:23 +00:00
mptable.h Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
npx.h Change the default FPU control word so that exceptions for new 2000-03-10 17:56:33 +00:00
pcb_ext.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
pcb.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
pci_cfgreg.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
pcpu.h Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
pmap.h Implement an optimization of the VM<->pmap API. Pass vm_page_t's directly 2000-05-21 12:50:18 +00:00
proc.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
profile.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
psl.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
ptrace.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
reg.h Document the support in the kernel for hardware debug registers on the 2000-02-12 18:33:54 +00:00
reloc.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
resource.h * Implement bus_set/get/delete_resource for pci. 1999-10-14 21:38:33 +00:00
segments.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
setjmp.h sigset_t change (part 3 of 5) 1999-09-29 15:06:27 +00:00
sigframe.h Fix type of sf_addr. 1999-12-04 10:40:24 +00:00
signal.h Reserve space for FPU state in struct sigcontext. Fix some style bugs 1999-11-12 13:52:11 +00:00
smp.h The SMP cleanup commit broke UP compiles. Make UP compiles work again. 2000-03-28 18:06:49 +00:00
specialreg.h Add the CR4 values for P3 SIMD enabling support. FXSR tells the cpu that 1999-09-10 15:51:44 +00:00
sysarch.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
trap.h Exchange numerical values for FPE_INTDIV and FPE_INTOVF, so that they 2000-03-20 10:22:19 +00:00
tss.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
ucontext.h Add a per-signal flag to mark handlers registered with osigaction, so we 1999-10-11 20:33:17 +00:00
varargs.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
vmparam.h Make sysv-style shared memory tuneable params fully runtime adjustable 2000-03-30 07:17:05 +00:00