mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2025-01-10 00:13:04 +01:00
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:
parent
ed74321b1a
commit
cde7257454
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=2689
@ -34,7 +34,7 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* from: @(#)genassym.c 5.11 (Berkeley) 5/10/91
|
* 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>
|
#include <sys/param.h>
|
||||||
@ -66,7 +66,6 @@ main()
|
|||||||
struct sigframe *sigf = (struct sigframe *)0;
|
struct sigframe *sigf = (struct sigframe *)0;
|
||||||
register unsigned i;
|
register unsigned i;
|
||||||
|
|
||||||
printf("#define\tI386_CR3PAT %d\n", I386_CR3PAT);
|
|
||||||
printf("#define\tUDOT_SZ %d\n", sizeof(struct user));
|
printf("#define\tUDOT_SZ %d\n", sizeof(struct user));
|
||||||
printf("#define\tP_FORW %d\n", &p->p_forw);
|
printf("#define\tP_FORW %d\n", &p->p_forw);
|
||||||
printf("#define\tP_BACK %d\n", &p->p_back);
|
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_PGREC %d\n", &vm->v_pgrec); */
|
||||||
/* printf("#define\tV_FASTPGREC %d\n", &vm->v_fastpgrec); */
|
/* printf("#define\tV_FASTPGREC %d\n", &vm->v_fastpgrec); */
|
||||||
printf("#define\tUPAGES %d\n", UPAGES);
|
printf("#define\tUPAGES %d\n", UPAGES);
|
||||||
printf("#define\tHIGHPAGES %d\n", HIGHPAGES);
|
|
||||||
printf("#define\tCLSIZE %d\n", CLSIZE);
|
printf("#define\tCLSIZE %d\n", CLSIZE);
|
||||||
printf("#define\tNBPG %d\n", NBPG);
|
printf("#define\tNBPG %d\n", NBPG);
|
||||||
printf("#define\tNPTEPG %d\n", NPTEPG);
|
printf("#define\tNPTEPG %d\n", NPTEPG);
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* from: @(#)locore.s 7.3 (Berkeley) 5/13/91
|
* 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 */
|
/* load base of page directory and enable mapping */
|
||||||
movl %esi,%eax /* phys address of ptd in proc 0 */
|
movl %esi,%eax /* phys address of ptd in proc 0 */
|
||||||
orl $I386_CR3PAT,%eax
|
|
||||||
movl %eax,%cr3 /* load ptd addr into mmu */
|
movl %eax,%cr3 /* load ptd addr into mmu */
|
||||||
movl %cr0,%eax /* get control word */
|
movl %cr0,%eax /* get control word */
|
||||||
orl $CR0_PE|CR0_PG,%eax /* enable paging */
|
orl $CR0_PE|CR0_PG,%eax /* enable paging */
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* from: @(#)locore.s 7.3 (Berkeley) 5/13/91
|
* 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 */
|
/* load base of page directory and enable mapping */
|
||||||
movl %esi,%eax /* phys address of ptd in proc 0 */
|
movl %esi,%eax /* phys address of ptd in proc 0 */
|
||||||
orl $I386_CR3PAT,%eax
|
|
||||||
movl %eax,%cr3 /* load ptd addr into mmu */
|
movl %eax,%cr3 /* load ptd addr into mmu */
|
||||||
movl %cr0,%eax /* get control word */
|
movl %cr0,%eax /* get control word */
|
||||||
orl $CR0_PE|CR0_PG,%eax /* enable paging */
|
orl $CR0_PE|CR0_PG,%eax /* enable paging */
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* 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 */
|
#include "assym.s" /* system definitions */
|
||||||
@ -1189,7 +1189,6 @@ ENTRY(rcr3)
|
|||||||
/* void load_cr3(caddr_t cr3) */
|
/* void load_cr3(caddr_t cr3) */
|
||||||
ENTRY(load_cr3)
|
ENTRY(load_cr3)
|
||||||
movl 4(%esp),%eax
|
movl 4(%esp),%eax
|
||||||
orl $I386_CR3PAT,%eax
|
|
||||||
movl %eax,%cr3
|
movl %eax,%cr3
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* 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 */
|
#include "assym.s" /* system definitions */
|
||||||
@ -1189,7 +1189,6 @@ ENTRY(rcr3)
|
|||||||
/* void load_cr3(caddr_t cr3) */
|
/* void load_cr3(caddr_t cr3) */
|
||||||
ENTRY(load_cr3)
|
ENTRY(load_cr3)
|
||||||
movl 4(%esp),%eax
|
movl 4(%esp),%eax
|
||||||
orl $I386_CR3PAT,%eax
|
|
||||||
movl %eax,%cr3
|
movl %eax,%cr3
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* from: @(#)vmparam.h 5.9 (Berkeley) 5/12/91
|
* 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.
|
* 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
|
* Virtual memory related constants, all in bytes
|
||||||
*/
|
*/
|
||||||
@ -84,6 +67,8 @@
|
|||||||
#define SGROWSIZ (128UL*1024) /* amount to grow stack */
|
#define SGROWSIZ (128UL*1024) /* amount to grow stack */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define USRTEXT (1*NBPG) /* base of user text XXX bogus */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Default sizes of swap allocation chunks (see dmap.h).
|
* Default sizes of swap allocation chunks (see dmap.h).
|
||||||
* The actual values may be changed in vminit() based on MAXDSIZ.
|
* The actual values may be changed in vminit() based on MAXDSIZ.
|
||||||
@ -111,11 +96,6 @@
|
|||||||
*/
|
*/
|
||||||
#define USRIOSIZE 1024
|
#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.
|
* 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
|
* This is a number of seconds which the system takes as being a non-trivial
|
||||||
@ -127,82 +107,12 @@
|
|||||||
*/
|
*/
|
||||||
#define MAXSLP 20
|
#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
|
* Mach derived constants
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* user/kernel map constants */
|
/* user/kernel map constants */
|
||||||
#define KERNBASE (0-(NKPDE+1)*(NBPG*NPTEPG))
|
#define KERNBASE ((0x400-1-NKPDE)*(NBPG*NPTEPG))
|
||||||
#define KERNSIZE (NKPDE*NBPG*NPTEPG)
|
|
||||||
|
|
||||||
#define VM_MIN_ADDRESS ((vm_offset_t)0)
|
#define VM_MIN_ADDRESS ((vm_offset_t)0)
|
||||||
#define VM_MAXUSER_ADDRESS ((vm_offset_t)KERNBASE - (NBPG*(NPTEPG+UPAGES)))
|
#define VM_MAXUSER_ADDRESS ((vm_offset_t)KERNBASE - (NBPG*(NPTEPG+UPAGES)))
|
||||||
@ -212,27 +122,13 @@
|
|||||||
#define VM_MAX_ADDRESS UPT_MAX_ADDRESS
|
#define VM_MAX_ADDRESS UPT_MAX_ADDRESS
|
||||||
#define VM_MIN_KERNEL_ADDRESS ((vm_offset_t)KERNBASE - (NBPG*(NKPDE+2)))
|
#define VM_MIN_KERNEL_ADDRESS ((vm_offset_t)KERNBASE - (NBPG*(NKPDE+2)))
|
||||||
#define UPDT VM_MIN_KERNEL_ADDRESS
|
#define UPDT VM_MIN_KERNEL_ADDRESS
|
||||||
#define KPT_MIN_ADDRESS ((vm_offset_t)(KERNBASE) - (NBPG*(NKPDE+1)))
|
#define KPT_MIN_ADDRESS ((vm_offset_t)KERNBASE - NBPG*(NKPDE+1))
|
||||||
#define KPT_MAX_ADDRESS ((vm_offset_t)(KERNBASE) - NBPG)
|
#define KPT_MAX_ADDRESS ((vm_offset_t)KERNBASE - NBPG)
|
||||||
#define VM_MAX_KERNEL_ADDRESS ((vm_offset_t)ALT_MIN_ADDRESS - NBPG)
|
#define VM_MAX_KERNEL_ADDRESS ((vm_offset_t)KERNBASE + NKPT*NBPG*NPTEPG)
|
||||||
#define ALT_MIN_ADDRESS ((vm_offset_t)((APTDPTDI) << 22))
|
|
||||||
#define HIGHPAGES UPAGES
|
|
||||||
|
|
||||||
|
|
||||||
/* virtual sizes (bytes) for various kernel submaps */
|
/* virtual sizes (bytes) for various kernel submaps */
|
||||||
#define VM_MBUF_SIZE (NMBCLUSTERS*MCLBYTES)
|
#define VM_MBUF_SIZE (NMBCLUSTERS*MCLBYTES)
|
||||||
#define VM_KMEM_SIZE (16 * 1024 * 1024)
|
#define VM_KMEM_SIZE (16 * 1024 * 1024)
|
||||||
#define VM_PHYS_SIZE (USRIOSIZE*CLBYTES)
|
#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_ */
|
#endif /* _MACHINE_VMPARAM_H_ */
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* from: @(#)genassym.c 5.11 (Berkeley) 5/10/91
|
* 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>
|
#include <sys/param.h>
|
||||||
@ -66,7 +66,6 @@ main()
|
|||||||
struct sigframe *sigf = (struct sigframe *)0;
|
struct sigframe *sigf = (struct sigframe *)0;
|
||||||
register unsigned i;
|
register unsigned i;
|
||||||
|
|
||||||
printf("#define\tI386_CR3PAT %d\n", I386_CR3PAT);
|
|
||||||
printf("#define\tUDOT_SZ %d\n", sizeof(struct user));
|
printf("#define\tUDOT_SZ %d\n", sizeof(struct user));
|
||||||
printf("#define\tP_FORW %d\n", &p->p_forw);
|
printf("#define\tP_FORW %d\n", &p->p_forw);
|
||||||
printf("#define\tP_BACK %d\n", &p->p_back);
|
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_PGREC %d\n", &vm->v_pgrec); */
|
||||||
/* printf("#define\tV_FASTPGREC %d\n", &vm->v_fastpgrec); */
|
/* printf("#define\tV_FASTPGREC %d\n", &vm->v_fastpgrec); */
|
||||||
printf("#define\tUPAGES %d\n", UPAGES);
|
printf("#define\tUPAGES %d\n", UPAGES);
|
||||||
printf("#define\tHIGHPAGES %d\n", HIGHPAGES);
|
|
||||||
printf("#define\tCLSIZE %d\n", CLSIZE);
|
printf("#define\tCLSIZE %d\n", CLSIZE);
|
||||||
printf("#define\tNBPG %d\n", NBPG);
|
printf("#define\tNBPG %d\n", NBPG);
|
||||||
printf("#define\tNPTEPG %d\n", NPTEPG);
|
printf("#define\tNPTEPG %d\n", NPTEPG);
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* from: @(#)locore.s 7.3 (Berkeley) 5/13/91
|
* 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 */
|
/* load base of page directory and enable mapping */
|
||||||
movl %esi,%eax /* phys address of ptd in proc 0 */
|
movl %esi,%eax /* phys address of ptd in proc 0 */
|
||||||
orl $I386_CR3PAT,%eax
|
|
||||||
movl %eax,%cr3 /* load ptd addr into mmu */
|
movl %eax,%cr3 /* load ptd addr into mmu */
|
||||||
movl %cr0,%eax /* get control word */
|
movl %cr0,%eax /* get control word */
|
||||||
orl $CR0_PE|CR0_PG,%eax /* enable paging */
|
orl $CR0_PE|CR0_PG,%eax /* enable paging */
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* 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 */
|
#include "assym.s" /* system definitions */
|
||||||
@ -1189,7 +1189,6 @@ ENTRY(rcr3)
|
|||||||
/* void load_cr3(caddr_t cr3) */
|
/* void load_cr3(caddr_t cr3) */
|
||||||
ENTRY(load_cr3)
|
ENTRY(load_cr3)
|
||||||
movl 4(%esp),%eax
|
movl 4(%esp),%eax
|
||||||
orl $I386_CR3PAT,%eax
|
|
||||||
movl %eax,%cr3
|
movl %eax,%cr3
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* from: @(#)vmparam.h 5.9 (Berkeley) 5/12/91
|
* 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.
|
* 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
|
* Virtual memory related constants, all in bytes
|
||||||
*/
|
*/
|
||||||
@ -84,6 +67,8 @@
|
|||||||
#define SGROWSIZ (128UL*1024) /* amount to grow stack */
|
#define SGROWSIZ (128UL*1024) /* amount to grow stack */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define USRTEXT (1*NBPG) /* base of user text XXX bogus */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Default sizes of swap allocation chunks (see dmap.h).
|
* Default sizes of swap allocation chunks (see dmap.h).
|
||||||
* The actual values may be changed in vminit() based on MAXDSIZ.
|
* The actual values may be changed in vminit() based on MAXDSIZ.
|
||||||
@ -111,11 +96,6 @@
|
|||||||
*/
|
*/
|
||||||
#define USRIOSIZE 1024
|
#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.
|
* 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
|
* This is a number of seconds which the system takes as being a non-trivial
|
||||||
@ -127,82 +107,12 @@
|
|||||||
*/
|
*/
|
||||||
#define MAXSLP 20
|
#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
|
* Mach derived constants
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* user/kernel map constants */
|
/* user/kernel map constants */
|
||||||
#define KERNBASE (0-(NKPDE+1)*(NBPG*NPTEPG))
|
#define KERNBASE ((0x400-1-NKPDE)*(NBPG*NPTEPG))
|
||||||
#define KERNSIZE (NKPDE*NBPG*NPTEPG)
|
|
||||||
|
|
||||||
#define VM_MIN_ADDRESS ((vm_offset_t)0)
|
#define VM_MIN_ADDRESS ((vm_offset_t)0)
|
||||||
#define VM_MAXUSER_ADDRESS ((vm_offset_t)KERNBASE - (NBPG*(NPTEPG+UPAGES)))
|
#define VM_MAXUSER_ADDRESS ((vm_offset_t)KERNBASE - (NBPG*(NPTEPG+UPAGES)))
|
||||||
@ -212,27 +122,13 @@
|
|||||||
#define VM_MAX_ADDRESS UPT_MAX_ADDRESS
|
#define VM_MAX_ADDRESS UPT_MAX_ADDRESS
|
||||||
#define VM_MIN_KERNEL_ADDRESS ((vm_offset_t)KERNBASE - (NBPG*(NKPDE+2)))
|
#define VM_MIN_KERNEL_ADDRESS ((vm_offset_t)KERNBASE - (NBPG*(NKPDE+2)))
|
||||||
#define UPDT VM_MIN_KERNEL_ADDRESS
|
#define UPDT VM_MIN_KERNEL_ADDRESS
|
||||||
#define KPT_MIN_ADDRESS ((vm_offset_t)(KERNBASE) - (NBPG*(NKPDE+1)))
|
#define KPT_MIN_ADDRESS ((vm_offset_t)KERNBASE - NBPG*(NKPDE+1))
|
||||||
#define KPT_MAX_ADDRESS ((vm_offset_t)(KERNBASE) - NBPG)
|
#define KPT_MAX_ADDRESS ((vm_offset_t)KERNBASE - NBPG)
|
||||||
#define VM_MAX_KERNEL_ADDRESS ((vm_offset_t)ALT_MIN_ADDRESS - NBPG)
|
#define VM_MAX_KERNEL_ADDRESS ((vm_offset_t)KERNBASE + NKPT*NBPG*NPTEPG)
|
||||||
#define ALT_MIN_ADDRESS ((vm_offset_t)((APTDPTDI) << 22))
|
|
||||||
#define HIGHPAGES UPAGES
|
|
||||||
|
|
||||||
|
|
||||||
/* virtual sizes (bytes) for various kernel submaps */
|
/* virtual sizes (bytes) for various kernel submaps */
|
||||||
#define VM_MBUF_SIZE (NMBCLUSTERS*MCLBYTES)
|
#define VM_MBUF_SIZE (NMBCLUSTERS*MCLBYTES)
|
||||||
#define VM_KMEM_SIZE (16 * 1024 * 1024)
|
#define VM_KMEM_SIZE (16 * 1024 * 1024)
|
||||||
#define VM_PHYS_SIZE (USRIOSIZE*CLBYTES)
|
#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_ */
|
#endif /* _MACHINE_VMPARAM_H_ */
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* @(#)mfs_vnops.c 8.3 (Berkeley) 9/21/93
|
* @(#)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>
|
#include <sys/param.h>
|
||||||
@ -190,85 +190,6 @@ mfs_strategy(ap)
|
|||||||
return (0);
|
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.
|
* Memory file system I/O.
|
||||||
*
|
*
|
||||||
@ -289,7 +210,6 @@ mfs_doio(bp, base)
|
|||||||
bp->b_flags |= B_ERROR;
|
bp->b_flags |= B_ERROR;
|
||||||
biodone(bp);
|
biodone(bp);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is a noop, simply returning what one has been given.
|
* This is a noop, simply returning what one has been given.
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* @(#)vm_meter.c 8.4 (Berkeley) 1/4/94
|
* @(#)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>
|
#include <sys/param.h>
|
||||||
@ -44,7 +44,6 @@
|
|||||||
struct loadavg averunnable; /* load average, of runnable procs */
|
struct loadavg averunnable; /* load average, of runnable procs */
|
||||||
|
|
||||||
int maxslp = MAXSLP;
|
int maxslp = MAXSLP;
|
||||||
int saferss = SAFERSS;
|
|
||||||
|
|
||||||
void
|
void
|
||||||
vmmeter()
|
vmmeter()
|
||||||
|
Loading…
Reference in New Issue
Block a user