~kris/9p

9hist

8bae60a2e35f5e4eec0866a39c035624fd96c060 — David du Colombier 25 years ago 8202599
Plan 9 from Bell Labs 2001-08-13
6 files changed, 30 insertions(+), 22 deletions(-)

M bitsy/clock.c
M bitsy/mmu.c
M bitsy/power.c
M bitsy/trap.c
M port/devdraw.c
M port/devpipe.c
M bitsy/clock.c => bitsy/clock.c +1 -1
@@ 12,7 12,7 @@ typedef struct OSTimer
	ulong	osmr[4];	/* match registers */
	ulong	oscr;		/* counter register */
	ulong	ossr;		/* status register */
	ulong	ower;		/* watchdog enable register */
	ulong	ower;	/* watchdog enable register */
	ulong	oier;		/* timer interrupt enable register */
} OSTimer;


M bitsy/mmu.c => bitsy/mmu.c +1 -0
@@ 125,6 125,7 @@ mmurestart(void) {

	/* enable mmu */
	wbflush();
	icacheinvalidate();	/* you never know ... (sape) */
	mmuinvalidate();
	mmuenable();
	cacheflush();

M bitsy/power.c => bitsy/power.c +21 -18
@@ 51,8 51,9 @@ dumpitall(void)
	iprint("dram: mdcnfg msc %lux %lux %lux mecr %lux\n",
		memconfregs->msc0, memconfregs->msc1,memconfregs->msc2,
		memconfregs->mecr);

	
	iprint("powerregs: pmcr %lux pssr %lux pcfr %lux ppcr %lux pwer %lux pspr %lux pgsr %lux posr %lux\n",
		powerregs->pmcr, powerregs->pssr, powerregs->pcfr, powerregs->ppcr,
		powerregs->pwer, powerregs->pspr, powerregs->pgsr, powerregs->posr);
}

static void


@@ 76,12 77,12 @@ gpiosave(GPIOregs *to, GPIOregs *from)
static void
gpiorestore(GPIOregs *to, GPIOregs *from)
{
	to->rising = from->rising;		// gpio intrs enabled
	to->falling= from->falling;		// gpio intrs enabled
	to->altfunc = from->altfunc;
	to->direction = from->direction;
	to->altfunc = from->altfunc;
	to->set = from->level & 0x0fffffff;
	to->clear = ~from->level & 0x0fffffff;
	to->rising = from->rising;		// gpio intrs enabled
	to->falling= from->falling;		// gpio intrs enabled
}

void	(*restart)(void) = nil;


@@ 143,19 144,19 @@ deepsleep(void) {
	static int power_pl;
	ulong xsp, xlink;

	power_pl = splhi();
	delay(50);
	xlink = getcallerpc(&xlink);
	/* Power down */
	iprint("entering suspend mode, sp = 0x%lux, pc = 0x%lux, psw = 0x%lux\n", &xsp, xlink, power_pl);
	dumpitall();
	uartpower(0);
	clockpower(0);
	irpower(0);
	audiopower(0);
	screenpower(0);
	µcpower(0);
	power_pl = splhi();
	iprint("entering suspend mode, sp = 0x%lux, pc = 0x%lux, psw = 0x%lux\n", &xsp, xlink, power_pl);
	dumpitall();
	delay(100);
	uartpower(0);
	rs232power(0);
	clockpower(0);
	gpiosave(&savedgpioregs, gpioregs);
	intrcpy(&savedintrregs, intrregs);
	cacheflush();


@@ 173,21 174,23 @@ deepsleep(void) {
			intrregs->icip = (1<<IRQgpio0);
		}
		trapresume();
		rs232power(1);
		uartpower(1);
//		irpower(1);
//		audiopower(1);
		clockpower(1);
		gpclkregs->r0 = 1<<0;
		µcpower(1);
		screenpower(1);
		rs232power(1);
		uartpower(1);
		dumpitall();
		delay(100);
		xlink = getcallerpc(&xlink);
		iprint("\nresuming execution, sp = 0x%lux, pc = 0x%lux, psw = 0x%lux\n", &xsp, xlink, splhi());
		delay(800);
		splx(power_pl);
//		irpower(1);
//		audiopower(1);
		µcpower(1);
		screenpower(1);
		return;
	}
	wbflush();
	delay(50);
	sa1100_power_off();
	/* no return */
}

M bitsy/trap.c => bitsy/trap.c +4 -0
@@ 213,6 213,10 @@ faultarm(Ureg *ureg, ulong va, int user, int read)
	int n, insyscall;
	char buf[ERRMAX];

	if (up == nil) {
		warnregs(ureg, "kernel fault");
		panic("fault: nil up in faultarm, accessing 0x%lux\n", va);
	}
	insyscall = up->insyscall;
	up->insyscall = 1;
	n = fault(va, read);

M port/devdraw.c => port/devdraw.c +2 -2
@@ 255,7 255,7 @@ drawgen(Chan *c, char*, Dirtab*, int, int s, Dir *dp)
	/*
	 * Third level.
	 */
	path = c->qid.path&~(((1<<QSHIFT)-1));	/* slot component */
	path = c->qid.path&~((1<<QSHIFT)-1);	/* slot component */
	q.vers = c->qid.vers;
	q.type = QTFILE;
	switch(s){


@@ 860,7 860,7 @@ initscreenimage(void)
	}

	screenimage->width = width;
	screenimage->clipr  = screenimage->r;
	screenimage->clipr = screenimage->r;
	return 1;
}


M port/devpipe.c => port/devpipe.c +1 -1
@@ 90,9 90,9 @@ pipeattach(char *spec)
static int
pipegen(Chan *c, char*, Dirtab *tab, int ntab, int i, Dir *dp)
{
	Qid q;
	int len;
	Pipe *p;
	Qid q;

	if(i == DEVDOTDOT){
		devdir(c, c->qid, "#|", 0, eve, DMDIR|0555, dp);