~kris/9p

9hist

2412f2817dde1e398af6640f472882438f8c502b — David du Colombier 35 years ago 0751abb
Plan 9 from Bell Labs 1991-08-27
5 files changed, 18 insertions(+), 11 deletions(-)

M gnot/mmu.c
M pc/fns.h
M pc/main.c
M pc/mmu.c
M pc/trap.c
M gnot/mmu.c => gnot/mmu.c +7 -0
@@ 143,7 143,9 @@ KMap*
kmap(Page *pg)
{
	KMap *k;
	int s;

	s = splhi();
	lock(&kmapalloc);
	k = kmapalloc.free;
	if(k == 0){


@@ 152,6 154,7 @@ kmap(Page *pg)
	}
	kmapalloc.free = k->next;
	unlock(&kmapalloc);
	splx(s);

	k->pa = pg->pa;
	putkmmu(k->va, PPN(k->pa) | PTEVALID | PTEKERNEL);


@@ 161,13 164,17 @@ kmap(Page *pg)
void
kunmap(KMap *k)
{
	int s;

	k->pa = 0;
	putkmmu(k->va, INVALIDPTE);

	s = splhi();
	lock(&kmapalloc);
	k->next = kmapalloc.free;
	kmapalloc.free = k;
	unlock(&kmapalloc);
	splx(s);
}

void

M pc/fns.h => pc/fns.h +1 -1
@@ 1,6 1,6 @@
#include "../port/portfns.h"

void	a20enable(void);
void	meminit(void);
#define	clearmmucache()		/* 386 doesn't have one */
void	clock(Ureg*);
void	clockinit(void);

M pc/main.c => pc/main.c +8 -8
@@ 13,12 13,12 @@ extern long edata;
void
main(void)
{
	a20enable();
	meminit();
	machinit();
	confinit();
	screeninit();
	printinit();
	print("%lud K bytes of physical memory\n", 1024 + conf.npage1*BY2PG/1024);
	print("%ludK bytes of physical memory\n", (conf.base1 + conf.npage1*BY2PG)/1024);
	mmuinit();
	trapinit();
	kbdinit();


@@ 174,14 174,14 @@ confinit(void)
			break;
		x += 0x3141526;
	}
	conf.npage1 = (i-2)*1024/4;
	conf.base1 = 1024*1024;
	conf.base1 = 0x100000;
	conf.npage1 = ((i-1)*1024*1024 - conf.base1)/BY2PG;

	conf.npage = conf.npage0 + conf.npage1;
	conf.maxialloc = 2*1024*1024;

	mul = 1;
	conf.nproc = 20 + 20*mul;
	conf.nproc = 10 + 10*mul;
	conf.npgrp = conf.nproc/2;
	conf.nseg = conf.nproc*3;
	conf.npagetab = (conf.nseg*14)/10;


@@ 198,7 198,7 @@ confinit(void)
	conf.nmntbuf = conf.nmntdev+3;
	conf.nmnthdr = 2*conf.nmntdev;
	conf.nsrv = 16*mul;			/* was 32 */
	conf.nbitmap = 512*mul;
	conf.nbitmap = 256*mul;
	conf.nbitbyte = conf.nbitmap*1024*screenbits();
	conf.nfont = 10*mul;
	conf.nnoifc = 1;


@@ 296,9 296,9 @@ enum
 *  enable address bit 20
 */
void
a20enable(void)
meminit(void)
{
	outb(Head, A20ena);
	outb(Head, A20ena);		/* enable memory address bit 20 */
}

/*

M pc/mmu.c => pc/mmu.c +1 -1
@@ 124,7 124,7 @@ mmuinit(void)
	 */

	/*  allocate and fill low level page tables for kernel mem */
	npage = (1024*1024)/BY2PG + conf.npage1;
	npage = conf.base1/BY2PG + conf.npage1;
	nbytes = PGROUND(npage*BY2WD);		/* words of page map */
	nkpt = nbytes/BY2PG;			/* pages of page map */
	kpt = ialloc(nbytes, 1);

M pc/trap.c => pc/trap.c +1 -1
@@ 174,7 174,7 @@ trap(Ureg *ur)

	v = ur->trap;
	if(v>=256 || ivec[v] == 0){
		print("bad trap type %d %lux %lux %lux\n", v, ur->pc, int0mask, int1mask);
		panic("bad trap type %d %lux %lux %lux\n", v, ur->pc, int0mask, int1mask);
		return;
	}