Eliminated a whole pile of ancient (we're taking 4.3BSD) VM system

related #define constants. Corrected incorrect VM_MAX_KERNEL_ADDRESS.

Reviewed by:	John Dyson
This commit is contained in:
David Greenman 1994-09-12 11:38:31 +00:00
parent ed74321b1a
commit cde7257454
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=2689
12 changed files with 24 additions and 323 deletions

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)genassym.c 5.11 (Berkeley) 5/10/91
* $Id: genassym.c,v 1.9 1994/09/01 05:12:16 davidg Exp $
* $Id: genassym.c,v 1.10 1994/09/02 05:58:50 davidg Exp $
*/
#include <sys/param.h>
@ -66,7 +66,6 @@ main()
struct sigframe *sigf = (struct sigframe *)0;
register unsigned i;
printf("#define\tI386_CR3PAT %d\n", I386_CR3PAT);
printf("#define\tUDOT_SZ %d\n", sizeof(struct user));
printf("#define\tP_FORW %d\n", &p->p_forw);
printf("#define\tP_BACK %d\n", &p->p_back);
@ -91,7 +90,6 @@ main()
/* printf("#define\tV_PGREC %d\n", &vm->v_pgrec); */
/* printf("#define\tV_FASTPGREC %d\n", &vm->v_fastpgrec); */
printf("#define\tUPAGES %d\n", UPAGES);
printf("#define\tHIGHPAGES %d\n", HIGHPAGES);
printf("#define\tCLSIZE %d\n", CLSIZE);
printf("#define\tNBPG %d\n", NBPG);
printf("#define\tNPTEPG %d\n", NPTEPG);

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)locore.s 7.3 (Berkeley) 5/13/91
* $Id: locore.s,v 1.25 1994/09/05 05:20:29 davidg Exp $
* $Id: locore.s,v 1.26 1994/09/05 14:09:41 bde Exp $
*/
/*
@ -480,7 +480,6 @@ NON_GPROF_ENTRY(btext)
/* load base of page directory and enable mapping */
movl %esi,%eax /* phys address of ptd in proc 0 */
orl $I386_CR3PAT,%eax
movl %eax,%cr3 /* load ptd addr into mmu */
movl %cr0,%eax /* get control word */
orl $CR0_PE|CR0_PG,%eax /* enable paging */

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)locore.s 7.3 (Berkeley) 5/13/91
* $Id: locore.s,v 1.25 1994/09/05 05:20:29 davidg Exp $
* $Id: locore.s,v 1.26 1994/09/05 14:09:41 bde Exp $
*/
/*
@ -480,7 +480,6 @@ NON_GPROF_ENTRY(btext)
/* load base of page directory and enable mapping */
movl %esi,%eax /* phys address of ptd in proc 0 */
orl $I386_CR3PAT,%eax
movl %eax,%cr3 /* load ptd addr into mmu */
movl %cr0,%eax /* get control word */
orl $CR0_PE|CR0_PG,%eax /* enable paging */

View File

@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: support.s,v 1.15 1994/08/09 11:21:44 davidg Exp $
* $Id: support.s,v 1.16 1994/09/04 10:24:22 davidg Exp $
*/
#include "assym.s" /* system definitions */
@ -1189,7 +1189,6 @@ ENTRY(rcr3)
/* void load_cr3(caddr_t cr3) */
ENTRY(load_cr3)
movl 4(%esp),%eax
orl $I386_CR3PAT,%eax
movl %eax,%cr3
ret

View File

@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: support.s,v 1.15 1994/08/09 11:21:44 davidg Exp $
* $Id: support.s,v 1.16 1994/09/04 10:24:22 davidg Exp $
*/
#include "assym.s" /* system definitions */
@ -1189,7 +1189,6 @@ ENTRY(rcr3)
/* void load_cr3(caddr_t cr3) */
ENTRY(load_cr3)
movl 4(%esp),%eax
orl $I386_CR3PAT,%eax
movl %eax,%cr3
ret

View File

@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* from: @(#)vmparam.h 5.9 (Berkeley) 5/12/91
* $Id: vmparam.h,v 1.13 1994/05/25 08:57:22 rgrimes Exp $
* $Id: vmparam.h,v 1.14 1994/09/01 03:16:40 davidg Exp $
*/
@ -47,23 +47,6 @@
* Machine dependent constants for 386.
*/
/*
* Virtual address space arrangement. On 386, both user and kernel
* share the address space, not unlike the vax.
* USRTEXT is the start of the user text/data space, while USRSTACK
* is the top (end) of the user stack. Immediately above the user stack
* resides the user structure, which is UPAGES long and contains the
* kernel stack.
*
* Immediately after the user structure is the page table map, and then
* kernal address space.
*/
#define USRTEXT 0UL
/* #define USRSTACK 0xFDBFE000UL */
#define BTOPUSRSTACK (0xFDC00-(UPAGES)) /* btop(USRSTACK) */
#define LOWPAGES 0UL
#define HIGHPAGES UPAGES
/*
* Virtual memory related constants, all in bytes
*/
@ -84,6 +67,8 @@
#define SGROWSIZ (128UL*1024) /* amount to grow stack */
#endif
#define USRTEXT (1*NBPG) /* base of user text XXX bogus */
/*
* Default sizes of swap allocation chunks (see dmap.h).
* The actual values may be changed in vminit() based on MAXDSIZ.
@ -111,11 +96,6 @@
*/
#define USRIOSIZE 1024
/*
* The size of the clock loop.
*/
#define LOOPPAGES (maxfree - firstfree)
/*
* The time for a process to be blocked before being very swappable.
* This is a number of seconds which the system takes as being a non-trivial
@ -127,82 +107,12 @@
*/
#define MAXSLP 20
/*
* A swapped in process is given a small amount of core without being bothered
* by the page replacement algorithm. Basically this says that if you are
* swapped in you deserve some resources. We protect the last SAFERSS
* pages against paging and will just swap you out rather than paging you.
* Note that each process has at least UPAGES+CLSIZE pages which are not
* paged anyways (this is currently 8+2=10 pages or 5k bytes), so this
* number just means a swapped in process is given around 25k bytes.
* Just for fun: current memory prices are 4600$ a megabyte on VAX (4/22/81),
* so we loan each swapped in process memory worth 100$, or just admit
* that we don't consider it worthwhile and swap it out to disk which costs
* $30/mb or about $0.75.
* { wfj 6/16/89: Retail AT memory expansion $800/megabyte, loan of $17
* on disk costing $7/mb or $0.18 (in memory still 100:1 in cost!) }
*/
#define SAFERSS 8 /* nominal ``small'' resident set size
protected against replacement */
/*
* DISKRPM is used to estimate the number of paging i/o operations
* which one can expect from a single disk controller.
*/
#define DISKRPM 60
/*
* Klustering constants. Klustering is the gathering
* of pages together for pagein/pageout, while clustering
* is the treatment of hardware page size as though it were
* larger than it really is.
*
* KLMAX gives maximum cluster size in CLSIZE page (cluster-page)
* units. Note that KLMAX*CLSIZE must be <= DMMIN in dmap.h.
*/
#define KLMAX (4/CLSIZE)
#define KLSEQL (2/CLSIZE) /* in klust if vadvise(VA_SEQL) */
#define KLIN (4/CLSIZE) /* default data/stack in klust */
#define KLTXT (4/CLSIZE) /* default text in klust */
#define KLOUT (4/CLSIZE)
/*
* KLSDIST is the advance or retard of the fifo reclaim for sequential
* processes data space.
*/
#define KLSDIST 3 /* klusters advance/retard for seq. fifo */
/*
* There are two clock hands, initially separated by HANDSPREAD bytes
* (but at most all of user memory). The amount of time to reclaim
* a page once the pageout process examines it increases with this
* distance and decreases as the scan rate rises.
*/
#define HANDSPREAD (2 * 1024 * 1024)
/*
* The number of times per second to recompute the desired paging rate
* and poke the pagedaemon.
*/
#define RATETOSCHEDPAGING 4
/*
* Believed threshold (in megabytes) for which interleaved
* swapping area is desirable.
*/
#define LOTSOFMEM 2
#define mapin(pte, v, pfnum, prot) \
{(*(int *)(pte) = ((pfnum)<<PGSHIFT) | (prot)) ; }
/*
* Mach derived constants
*/
/* user/kernel map constants */
#define KERNBASE (0-(NKPDE+1)*(NBPG*NPTEPG))
#define KERNSIZE (NKPDE*NBPG*NPTEPG)
#define KERNBASE ((0x400-1-NKPDE)*(NBPG*NPTEPG))
#define VM_MIN_ADDRESS ((vm_offset_t)0)
#define VM_MAXUSER_ADDRESS ((vm_offset_t)KERNBASE - (NBPG*(NPTEPG+UPAGES)))
@ -212,27 +122,13 @@
#define VM_MAX_ADDRESS UPT_MAX_ADDRESS
#define VM_MIN_KERNEL_ADDRESS ((vm_offset_t)KERNBASE - (NBPG*(NKPDE+2)))
#define UPDT VM_MIN_KERNEL_ADDRESS
#define KPT_MIN_ADDRESS ((vm_offset_t)(KERNBASE) - (NBPG*(NKPDE+1)))
#define KPT_MAX_ADDRESS ((vm_offset_t)(KERNBASE) - NBPG)
#define VM_MAX_KERNEL_ADDRESS ((vm_offset_t)ALT_MIN_ADDRESS - NBPG)
#define ALT_MIN_ADDRESS ((vm_offset_t)((APTDPTDI) << 22))
#define HIGHPAGES UPAGES
#define KPT_MIN_ADDRESS ((vm_offset_t)KERNBASE - NBPG*(NKPDE+1))
#define KPT_MAX_ADDRESS ((vm_offset_t)KERNBASE - NBPG)
#define VM_MAX_KERNEL_ADDRESS ((vm_offset_t)KERNBASE + NKPT*NBPG*NPTEPG)
/* virtual sizes (bytes) for various kernel submaps */
#define VM_MBUF_SIZE (NMBCLUSTERS*MCLBYTES)
#define VM_KMEM_SIZE (16 * 1024 * 1024)
#define VM_PHYS_SIZE (USRIOSIZE*CLBYTES)
/* pcb base */
#define pcbb(p) ((u_int)(p)->p_addr)
/*
* Flush MMU TLB
*/
#ifndef I386_CR3PAT
#define I386_CR3PAT 0x0
#endif
#endif /* _MACHINE_VMPARAM_H_ */

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)genassym.c 5.11 (Berkeley) 5/10/91
* $Id: genassym.c,v 1.9 1994/09/01 05:12:16 davidg Exp $
* $Id: genassym.c,v 1.10 1994/09/02 05:58:50 davidg Exp $
*/
#include <sys/param.h>
@ -66,7 +66,6 @@ main()
struct sigframe *sigf = (struct sigframe *)0;
register unsigned i;
printf("#define\tI386_CR3PAT %d\n", I386_CR3PAT);
printf("#define\tUDOT_SZ %d\n", sizeof(struct user));
printf("#define\tP_FORW %d\n", &p->p_forw);
printf("#define\tP_BACK %d\n", &p->p_back);
@ -91,7 +90,6 @@ main()
/* printf("#define\tV_PGREC %d\n", &vm->v_pgrec); */
/* printf("#define\tV_FASTPGREC %d\n", &vm->v_fastpgrec); */
printf("#define\tUPAGES %d\n", UPAGES);
printf("#define\tHIGHPAGES %d\n", HIGHPAGES);
printf("#define\tCLSIZE %d\n", CLSIZE);
printf("#define\tNBPG %d\n", NBPG);
printf("#define\tNPTEPG %d\n", NPTEPG);

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)locore.s 7.3 (Berkeley) 5/13/91
* $Id: locore.s,v 1.25 1994/09/05 05:20:29 davidg Exp $
* $Id: locore.s,v 1.26 1994/09/05 14:09:41 bde Exp $
*/
/*
@ -480,7 +480,6 @@ NON_GPROF_ENTRY(btext)
/* load base of page directory and enable mapping */
movl %esi,%eax /* phys address of ptd in proc 0 */
orl $I386_CR3PAT,%eax
movl %eax,%cr3 /* load ptd addr into mmu */
movl %cr0,%eax /* get control word */
orl $CR0_PE|CR0_PG,%eax /* enable paging */

View File

@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: support.s,v 1.15 1994/08/09 11:21:44 davidg Exp $
* $Id: support.s,v 1.16 1994/09/04 10:24:22 davidg Exp $
*/
#include "assym.s" /* system definitions */
@ -1189,7 +1189,6 @@ ENTRY(rcr3)
/* void load_cr3(caddr_t cr3) */
ENTRY(load_cr3)
movl 4(%esp),%eax
orl $I386_CR3PAT,%eax
movl %eax,%cr3
ret

View File

@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* from: @(#)vmparam.h 5.9 (Berkeley) 5/12/91
* $Id: vmparam.h,v 1.13 1994/05/25 08:57:22 rgrimes Exp $
* $Id: vmparam.h,v 1.14 1994/09/01 03:16:40 davidg Exp $
*/
@ -47,23 +47,6 @@
* Machine dependent constants for 386.
*/
/*
* Virtual address space arrangement. On 386, both user and kernel
* share the address space, not unlike the vax.
* USRTEXT is the start of the user text/data space, while USRSTACK
* is the top (end) of the user stack. Immediately above the user stack
* resides the user structure, which is UPAGES long and contains the
* kernel stack.
*
* Immediately after the user structure is the page table map, and then
* kernal address space.
*/
#define USRTEXT 0UL
/* #define USRSTACK 0xFDBFE000UL */
#define BTOPUSRSTACK (0xFDC00-(UPAGES)) /* btop(USRSTACK) */
#define LOWPAGES 0UL
#define HIGHPAGES UPAGES
/*
* Virtual memory related constants, all in bytes
*/
@ -84,6 +67,8 @@
#define SGROWSIZ (128UL*1024) /* amount to grow stack */
#endif
#define USRTEXT (1*NBPG) /* base of user text XXX bogus */
/*
* Default sizes of swap allocation chunks (see dmap.h).
* The actual values may be changed in vminit() based on MAXDSIZ.
@ -111,11 +96,6 @@
*/
#define USRIOSIZE 1024
/*
* The size of the clock loop.
*/
#define LOOPPAGES (maxfree - firstfree)
/*
* The time for a process to be blocked before being very swappable.
* This is a number of seconds which the system takes as being a non-trivial
@ -127,82 +107,12 @@
*/
#define MAXSLP 20
/*
* A swapped in process is given a small amount of core without being bothered
* by the page replacement algorithm. Basically this says that if you are
* swapped in you deserve some resources. We protect the last SAFERSS
* pages against paging and will just swap you out rather than paging you.
* Note that each process has at least UPAGES+CLSIZE pages which are not
* paged anyways (this is currently 8+2=10 pages or 5k bytes), so this
* number just means a swapped in process is given around 25k bytes.
* Just for fun: current memory prices are 4600$ a megabyte on VAX (4/22/81),
* so we loan each swapped in process memory worth 100$, or just admit
* that we don't consider it worthwhile and swap it out to disk which costs
* $30/mb or about $0.75.
* { wfj 6/16/89: Retail AT memory expansion $800/megabyte, loan of $17
* on disk costing $7/mb or $0.18 (in memory still 100:1 in cost!) }
*/
#define SAFERSS 8 /* nominal ``small'' resident set size
protected against replacement */
/*
* DISKRPM is used to estimate the number of paging i/o operations
* which one can expect from a single disk controller.
*/
#define DISKRPM 60
/*
* Klustering constants. Klustering is the gathering
* of pages together for pagein/pageout, while clustering
* is the treatment of hardware page size as though it were
* larger than it really is.
*
* KLMAX gives maximum cluster size in CLSIZE page (cluster-page)
* units. Note that KLMAX*CLSIZE must be <= DMMIN in dmap.h.
*/
#define KLMAX (4/CLSIZE)
#define KLSEQL (2/CLSIZE) /* in klust if vadvise(VA_SEQL) */
#define KLIN (4/CLSIZE) /* default data/stack in klust */
#define KLTXT (4/CLSIZE) /* default text in klust */
#define KLOUT (4/CLSIZE)
/*
* KLSDIST is the advance or retard of the fifo reclaim for sequential
* processes data space.
*/
#define KLSDIST 3 /* klusters advance/retard for seq. fifo */
/*
* There are two clock hands, initially separated by HANDSPREAD bytes
* (but at most all of user memory). The amount of time to reclaim
* a page once the pageout process examines it increases with this
* distance and decreases as the scan rate rises.
*/
#define HANDSPREAD (2 * 1024 * 1024)
/*
* The number of times per second to recompute the desired paging rate
* and poke the pagedaemon.
*/
#define RATETOSCHEDPAGING 4
/*
* Believed threshold (in megabytes) for which interleaved
* swapping area is desirable.
*/
#define LOTSOFMEM 2
#define mapin(pte, v, pfnum, prot) \
{(*(int *)(pte) = ((pfnum)<<PGSHIFT) | (prot)) ; }
/*
* Mach derived constants
*/
/* user/kernel map constants */
#define KERNBASE (0-(NKPDE+1)*(NBPG*NPTEPG))
#define KERNSIZE (NKPDE*NBPG*NPTEPG)
#define KERNBASE ((0x400-1-NKPDE)*(NBPG*NPTEPG))
#define VM_MIN_ADDRESS ((vm_offset_t)0)
#define VM_MAXUSER_ADDRESS ((vm_offset_t)KERNBASE - (NBPG*(NPTEPG+UPAGES)))
@ -212,27 +122,13 @@
#define VM_MAX_ADDRESS UPT_MAX_ADDRESS
#define VM_MIN_KERNEL_ADDRESS ((vm_offset_t)KERNBASE - (NBPG*(NKPDE+2)))
#define UPDT VM_MIN_KERNEL_ADDRESS
#define KPT_MIN_ADDRESS ((vm_offset_t)(KERNBASE) - (NBPG*(NKPDE+1)))
#define KPT_MAX_ADDRESS ((vm_offset_t)(KERNBASE) - NBPG)
#define VM_MAX_KERNEL_ADDRESS ((vm_offset_t)ALT_MIN_ADDRESS - NBPG)
#define ALT_MIN_ADDRESS ((vm_offset_t)((APTDPTDI) << 22))
#define HIGHPAGES UPAGES
#define KPT_MIN_ADDRESS ((vm_offset_t)KERNBASE - NBPG*(NKPDE+1))
#define KPT_MAX_ADDRESS ((vm_offset_t)KERNBASE - NBPG)
#define VM_MAX_KERNEL_ADDRESS ((vm_offset_t)KERNBASE + NKPT*NBPG*NPTEPG)
/* virtual sizes (bytes) for various kernel submaps */
#define VM_MBUF_SIZE (NMBCLUSTERS*MCLBYTES)
#define VM_KMEM_SIZE (16 * 1024 * 1024)
#define VM_PHYS_SIZE (USRIOSIZE*CLBYTES)
/* pcb base */
#define pcbb(p) ((u_int)(p)->p_addr)
/*
* Flush MMU TLB
*/
#ifndef I386_CR3PAT
#define I386_CR3PAT 0x0
#endif
#endif /* _MACHINE_VMPARAM_H_ */

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)mfs_vnops.c 8.3 (Berkeley) 9/21/93
* $Id$
* $Id: mfs_vnops.c,v 1.3 1994/08/02 07:54:44 davidg Exp $
*/
#include <sys/param.h>
@ -190,85 +190,6 @@ mfs_strategy(ap)
return (0);
}
#if defined(vax) || defined(tahoe)
/*
* Memory file system I/O.
*
* Essentially play ubasetup() and disk interrupt service routine by
* doing the copies to or from the memfs process. If doing physio
* (i.e. pagein), we must map the I/O through the kernel virtual
* address space.
*/
void
mfs_doio(bp, base)
register struct buf *bp;
caddr_t base;
{
register struct pte *pte, *ppte;
register caddr_t vaddr;
int off, npf, npf2, reg;
caddr_t kernaddr, offset;
/*
* For phys I/O, map the b_data into kernel virtual space using
* the Mfsiomap pte's.
*/
if ((bp->b_flags & B_PHYS) == 0) {
kernaddr = bp->b_data;
} else {
if (bp->b_flags & (B_PAGET | B_UAREA | B_DIRTY))
panic("swap on memfs?");
off = (int)bp->b_data & PGOFSET;
npf = btoc(bp->b_bcount + off);
/*
* Get some mapping page table entries
*/
while ((reg = rmalloc(mfsmap, (long)npf)) == 0) {
mfsmap_want++;
sleep((caddr_t)&mfsmap_want, PZERO-1);
}
reg--;
pte = vtopte(bp->b_proc, btop(bp->b_data));
/*
* Do vmaccess() but with the Mfsiomap page table.
*/
ppte = &Mfsiomap[reg];
vaddr = &mfsiobuf[reg * NBPG];
kernaddr = vaddr + off;
for (npf2 = npf; npf2; npf2--) {
mapin(ppte, (u_int)vaddr, pte->pg_pfnum,
(int)(PG_V|PG_KW));
#if defined(tahoe)
if ((bp->b_flags & B_READ) == 0)
mtpr(P1DC, vaddr);
#endif
ppte++;
pte++;
vaddr += NBPG;
}
}
offset = base + (bp->b_blkno << DEV_BSHIFT);
if (bp->b_flags & B_READ)
bp->b_error = copyin(offset, kernaddr, bp->b_bcount);
else
bp->b_error = copyout(kernaddr, offset, bp->b_bcount);
if (bp->b_error)
bp->b_flags |= B_ERROR;
/*
* Release pte's used by physical I/O.
*/
if (bp->b_flags & B_PHYS) {
rmfree(mfsmap, (long)npf, (long)++reg);
if (mfsmap_want) {
mfsmap_want = 0;
wakeup((caddr_t)&mfsmap_want);
}
}
biodone(bp);
}
#endif /* vax || tahoe */
#if defined(hp300) || defined(i386) || defined(mips) || defined(sparc) || defined(luna68k)
/*
* Memory file system I/O.
*
@ -289,7 +210,6 @@ mfs_doio(bp, base)
bp->b_flags |= B_ERROR;
biodone(bp);
}
#endif
/*
* This is a noop, simply returning what one has been given.

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)vm_meter.c 8.4 (Berkeley) 1/4/94
* $Id$
* $Id: vm_meter.c,v 1.3 1994/08/02 07:55:27 davidg Exp $
*/
#include <sys/param.h>
@ -44,7 +44,6 @@
struct loadavg averunnable; /* load average, of runnable procs */
int maxslp = MAXSLP;
int saferss = SAFERSS;
void
vmmeter()