~kris/9p

9hist

07901302d7fca46dbfe7d34a9f00cce09d880097 — David du Colombier 34 years ago 02e30f8
Plan 9 from Bell Labs 1992-07-22
5 files changed, 46 insertions(+), 25 deletions(-)

M port/devscc.c
M ss/l.s
M ss/main.c
M ss/mem.h
M ss/mmu.c
M port/devscc.c => port/devscc.c +15 -0
@@ 486,6 486,21 @@ sccspecial(int port, IOQ *oq, IOQ *iq, int baud)
	}
}

void
sccrawput(int port, int c)
{
	SCC *sp = scc[port];

	if(c == '\n') {
		sccrawput(port, '\r');
		delay(100);
	}

	while((*sp->ptr&TxReady)==0)
		;
	*sp->data = c;
}

static void	sccstopen(Queue*, Stream*);
static void	sccstclose(Queue*);
static void	sccoput(Queue*, Block*);

M ss/l.s => ss/l.s +16 -16
@@ 324,7 324,7 @@ TEXT	putcxsegm(SB), $0
	MOVW	R7, R8			/* context */
	MOVW	4(FP), R9		/* segment addr */
	MOVW	8(FP), R10		/* segment value */
	MOVW	$0xFFE80118, R7
	MOVW	$PUTCXSEGM, R7
	JMPL	(R7)
	RETURN



@@ 388,35 388,35 @@ TEXT	putwD16(SB), $0

	MOVW	4(FP), R8
	MOVW	R8, (R7, 0xD)
	ADD	$(1<<4), R7
	ADD	$VACLINESZ, R7
	MOVW	R8, (R7, 0xD)
	ADD	$(1<<4), R7
	ADD	$VACLINESZ, R7
	MOVW	R8, (R7, 0xD)
	ADD	$(1<<4), R7
	ADD	$VACLINESZ, R7
	MOVW	R8, (R7, 0xD)
	ADD	$(1<<4), R7
	ADD	$VACLINESZ, R7
	MOVW	R8, (R7, 0xD)
	ADD	$(1<<4), R7
	ADD	$VACLINESZ, R7
	MOVW	R8, (R7, 0xD)
	ADD	$(1<<4), R7
	ADD	$VACLINESZ, R7
	MOVW	R8, (R7, 0xD)
	ADD	$(1<<4), R7
	ADD	$VACLINESZ, R7
	MOVW	R8, (R7, 0xD)
	ADD	$(1<<4), R7
	ADD	$VACLINESZ, R7
	MOVW	R8, (R7, 0xD)
	ADD	$(1<<4), R7
	ADD	$VACLINESZ, R7
	MOVW	R8, (R7, 0xD)
	ADD	$(1<<4), R7
	ADD	$VACLINESZ, R7
	MOVW	R8, (R7, 0xD)
	ADD	$(1<<4), R7
	ADD	$VACLINESZ, R7
	MOVW	R8, (R7, 0xD)
	ADD	$(1<<4), R7
	ADD	$VACLINESZ, R7
	MOVW	R8, (R7, 0xD)
	ADD	$(1<<4), R7
	ADD	$VACLINESZ, R7
	MOVW	R8, (R7, 0xD)
	ADD	$(1<<4), R7
	ADD	$VACLINESZ, R7
	MOVW	R8, (R7, 0xD)
	ADD	$(1<<4), R7
	ADD	$VACLINESZ, R7
	MOVW	R8, (R7, 0xD)
	RETURN


M ss/main.c => ss/main.c +4 -2
@@ 74,7 74,7 @@ ioinit(void)
{
	KMap *k;

	/* tell scc driver it's addresses */
	/* tell scc driver its addresses */
	k = kmappa(KMDUART, PTEIO|PTENOCACHE);
	sccsetup((void*)(k->va), KMFREQ);
	k = kmappa(EIADUART, PTEIO|PTENOCACHE);


@@ 96,12 96,14 @@ init0(void)
	u->p->state = Running;
	u->p->mach = m;
	spllo();
	
print("init0:\n"); prflush();

	u->slash = (*devtab[0].attach)(0);
	u->dot = clone(u->slash, 0);

	kproc("alarm", alarmkproc, 0);
	chandevinit();
print("alarmkp:\n"); prflush();

	if(!waserror()){
		ksetterm("sun %s");

M ss/mem.h => ss/mem.h +7 -3
@@ 71,7 71,7 @@
#define	SCREENSEGM	0xFFF80000
#define	SCREENPMEG	0x7E
#define	ROMSEGM		0xFFE80000
#define	ROMEND		0xFFEA0000
#define	ROMEND		0xFFEC0000
#define	PG2ROM		((ROMEND-ROMSEGM)/BY2PG)
#define	IOSEGM0		ROMSEGM		/* see mmuinit() */
#define	NIOSEGM		((SCREENSEGM-ROMSEGM)/BY2SEGM)


@@ 112,6 112,8 @@
#define	ENAB		0x40000000		/* ASI 2 */
#define	ENABCACHE	0x10
#define	ENABRESET	0x04
#define	VACLINESZ	16			/* cache line size */
#define	VACSIZE		(1<<16)			/* total cache size */

/*
 * Virtual addresses


@@ 119,8 121,10 @@
#define	VTAG(va)	((va>>22)&0x03F)
#define	VPN(va)		((va>>13)&0x1FF)

#define	PARAM		((char*)0x40500000)
#define	TLBFLUSH_	0x01
/*
 * Rom addresses
 */
#define	PUTCXSEGM	0xFFE80118

/*
 * Address spaces

M ss/mmu.c => ss/mmu.c +4 -4
@@ 142,9 142,9 @@ mmuinit(void)
	ulong ktop, l, i, j, c, pte;

	/*
	 * TEMP: just map the first 4M of bank 0 for the kernel - philw
	 * TEMP: just map the first 8M of bank 0 for the kernel - philw
	 */
	ktop = 4*1024*1024;
	ktop = 8*1024*1024;
	/*
	 * First map lots of memory as kernel addressable in all contexts
	 */


@@ 270,8 270,8 @@ putpmeg(ulong virt, ulong phys)
	/*
	 * Flush old entries from cache
	 */
	for(i=0; i<0x100; i+=16)
		putwD16(virt+(i<<4), 0);
	for(i=0; i<VACSIZE; i+=16*VACLINESZ)
		putwD16(virt+i, 0);
	putw4(virt, phys);
}