~kris/9p

9hist

af346b023567f1d7bec07ef3580461de63b96fe6 — David du Colombier 32 years ago d6ed10b
Plan 9 from Bell Labs 1994-08-10
8 files changed, 30 insertions(+), 29 deletions(-)

M carrera/l.s
M pc/clock.c
M pc/devvga.c
M pc/ether8003.c
M pc/vgas3.c
M pc/vgatvp3020.c
M port/portdat.h
M port/proc.c
M carrera/l.s => carrera/l.s +5 -6
@@ 368,9 368,10 @@ TEXT	exception(SB), $-4

wasuser:
	MOVW	SP, R27
	CONST	(MACHADDR, SP)		/* R27 = m-> */
	MOVW	8(SP), SP		/* R26 = m->proc */
	MOVW	8(SP), SP		/* R27 = m->proc->kstack */
	CONST	(MACHADDR, SP)		/*  m-> */
	MOVW	8(SP), SP		/*  m->proc */
	MOVW	8(SP), SP		/*  m->proc->kstack */
	MOVW	M(STATUS), R26		/* redundant test */
	ADDU	$(KSTACK-UREGSIZE), SP
	MOVV	R31, (Ureg_r31-4)(SP)



@@ 381,8 382,7 @@ wasuser:
	MOVV	R(USER), (Ureg_r24-4)(SP)

	MOVW	$setR30(SB), R30
	CONST	(MACHADDR, R1)
	MOVW	R1, R(MACH)			/* R(MACH) = m-> */
	CONST	(MACHADDR, R(MACH))		/* R(MACH) = m-> */
	MOVW	8(R(MACH)), R(USER)		/* up = m->proc */

	AND	$(EXCMASK<<2), R26, R1


@@ 564,7 564,6 @@ TEXT	rfnote(SB), $0
	SUBU	$(BY2WD), R26, SP	/* pc hole */
	JMP	restore
	

TEXT	clrfpintr(SB), $0
	MOVW	M(STATUS), R3
	WAIT

M pc/clock.c => pc/clock.c +1 -16
@@ 37,7 37,6 @@ clock(Ureg *ur, void *arg)
{
	Proc *p;
	int nrun = 0;
	int islow = 0;

	USED(arg);



@@ 65,25 64,11 @@ clock(Ureg *ur, void *arg)
			sched();
	
		/* user profiling clock */
		if((ur->cs&0xffff) == UESEL){
			islow = 1;
			spllo();		/* in case we fault */
		if((ur->cs&0xffff) == UESEL)
			(*(ulong*)(USTKTOP-BY2WD)) += TK2MS(1);
		}
	}

	/*
	 *  anything from here down can be running spllo()
	 */
	if(!islow){
		islow = 1;
		spllo();
	}

	mouseclock();

	if(islow)
		splhi();
}

/*

M pc/devvga.c => pc/devvga.c +2 -1
@@ 21,11 21,12 @@ extern	Subfont defont0;

/* exported */
Bitmap	gscreen;
Lock palettelock;			/* access to DAC registers */
Cursor curcursor;			/* current cursor */

/* vga screen */
static	Lock	screenlock;
static	ulong	colormap[256][3];
Lock palettelock;

/* cga screen */
static	int	cga = 1;		/* true if in cga mode */

M pc/ether8003.c => pc/ether8003.c +1 -1
@@ 94,7 94,7 @@ reset(Ether *ether)
	 */
	port = ether->port;
	sum = 0;
	for(i = 0; i < sizeof(ether->ea); i++){
	for(i = 0; i < sizeof(ea); i++){
		ea[i] = inb(port+Lar+i);
		sum += ea[i];
		ic[i] = inb(port+i);

M pc/vgas3.c => pc/vgas3.c +4 -4
@@ 17,9 17,9 @@
static Lock s3pagelock;
static ulong storage;
static Point hotpoint;
static Cursor loaded;

extern Bitmap gscreen;
extern Cursor curcursor;

static void
sets3page(int page)


@@ 123,13 123,13 @@ load(Cursor *c)
	 * just make sure it's enabled.
	 */
	lock(&s3pagelock);
	if(memcmp(c, &loaded, sizeof(Cursor)) == 0){
	if(memcmp(c, &curcursor, sizeof(Cursor)) == 0){
		vsyncactive();
		vgaxo(Crtx, 0x45, 0x01);
		unlock(&s3pagelock);
		return;
	}
	memmove(&loaded, c, sizeof(Cursor));
	memmove(&curcursor, c, sizeof(Cursor));

	/*
	 * Disable the cursor.


@@ 189,7 189,7 @@ move(Point p)
	int x, xo, y, yo;

	if(canlock(&s3pagelock) == 0)
		return -1;
		return 1;

	/*
	 * Mustn't position the cursor offscreen even partially,

M pc/vgatvp3020.c => pc/vgatvp3020.c +14 -0
@@ 9,6 9,8 @@
#include "screen.h"
#include "vga.h"

extern Cursor curcursor;

/*
 * TVP3020 Viewpoint Video Interface Pallette.
 * Assumes hooked up to an S3 86C928.


@@ 59,7 61,19 @@ load(Cursor *c)
	uchar p, p0, p1;
	int x, y;

	/*
	 * Lock the DAC registers so we can update the
	 * cursor bitmap if necessary.
	 * If it's the same as the last cursor we loaded,
	 * just make sure it's enabled.
	 */
	lock(&palettelock);
	if(memcmp(c, &curcursor, sizeof(Cursor)) == 0){
		tvp3020xo(0x06, 0x40|0x10);		/* Cursor Control Register */
		unlock(&palettelock);
		return;
	}
	memmove(&curcursor, c, sizeof(Cursor));

	/*
	 * Make sure cursor is off by initialising the cursor

M port/portdat.h => port/portdat.h +1 -0
@@ 580,6 580,7 @@ struct Proc
	ulong	priority;	/* priority level */
	ulong	basepri;	/* base priority level */
	ulong	movetime;	/* last time process switched processors */
	ulong	readyticks;	/* time process went ready */

	void	*ureg;		/* User registers for notes */
	void	*dbgreg;	/* User registers for devproc */

M port/proc.c => port/proc.c +2 -1
@@ 141,6 141,7 @@ ready(Proc *p)
	rq->tail = p;
	rq->n++;
	nrdy++;
	p->readyticks = m->ticks;
	p->state = Ready;
	unlock(runq);
	splx(s);


@@ 737,7 738,7 @@ procdump(void)
	for(rq = runq; rq < &runq[Nrq]; rq++){
		print("rq%d:", rq-runq);
		for(p = rq->head; p; p = p->rnext)
			print(" %d", p->pid);
			print(" %d(%d)", p->pid, m->ticks - p->readyticks);
		print("\n");
	}
	print("nrdy %d\n", nrdy);