~kris/9p

9hist

9f49b60d534e3ba63fa64a9e6c3565aeaa189f21 — David du Colombier 34 years ago 55df217
Plan 9 from Bell Labs 1991-11-09
M gnot/main.c => gnot/main.c +1 -3
@@ 23,7 23,6 @@ struct Boot
};
#define BOOT ((Boot*)0)

char	user[NAMELEN];
char bootuser[NAMELEN];
char bootline[64];
char bootserver[64];


@@ 149,8 148,7 @@ userinit(void)
	p->fgrp = newfgrp();

	strcpy(p->text, "*init*");
	strcpy(p->user, "bootes");
	strcpy(user, "bootes");
	strcpy(p->user, eve);
	p->fpstate = FPinit;

	/*

M pc/devhard.c => pc/devhard.c +1 -1
@@ 174,7 174,7 @@ hardgen(Chan *c, Dirtab *tab, long ntab, long s, Dir *dirp)
	name[NAMELEN] = 0;
	qid.path = MKQID(drive, s);
	l = (pp->end - pp->start) * dp->bytes;
	devdir(c, qid, name, l, 0666, dirp);
	devdir(c, qid, name, l, eve, 0666, dirp);
	return 1;
}


M pc/main.c => pc/main.c +1 -4
@@ 9,8 9,6 @@

extern long edata;

char	user[NAMELEN] = "bootes";

void
main(void)
{


@@ 19,7 17,6 @@ main(void)
	confinit();
	screeninit();
	printinit();
crdump();
	print("%ludK bytes of physical memory\n", (conf.base1 + conf.npage1*BY2PG)/1024);
	mmuinit();
	trapinit();


@@ 101,7 98,7 @@ userinit(void)
	p->fgrp = newfgrp();

	strcpy(p->text, "*init*");
	strcpy(p->user, user);
	strcpy(p->user, eve);
	p->fpstate = FPinit;
	fpoff();


M pc/vga.c => pc/vga.c +45 -53
@@ 24,6 24,9 @@ struct{
 */
#define MAXX	640
#define MAXY	480
#define XPERIOD	800	/* Hsync freq == 31.47 KHZ */
#define YPERIOD	525	/* Vsync freq == 59.9 HZ */
#define YBORDER 2

#define SCREENMEM	(0xA0000 | KZERO)



@@ 52,9 55,15 @@ enum
	 Smmask=	 0x02,		/*  map mask */
	CRX=		0x3D4,		/* index to crt registers */
	CR=		0x3D5,		/* crt registers */
	 Cvertend=	 0x12,		/*  vertical display end */
	 Cmode=		 0x17,		/*  mode register */
	 Cvt=		 0x06,		/*  vertical total */
	 Cvover=	 0x07,		/*  bits that didn't fit elsewhere */
	 Cmsl=		 0x09,		/*  max scan line */
	 Cvrs=		 0x10,		/*  vertical retrace start */
	 Cvre=		 0x11,		/*  vertical retrace end */
	 Cvde=	 	 0x12,		/*  vertical display end */
	 Cvbs=		 0x15,		/*  vertical blank start */
	 Cvbe=		 0x16,		/*  vertical blank end */
	 Cmode=		 0x17,		/*  mode register */
	ARX=		0x3C0,		/* index to attribute registers */
	AR=		0x3C1,		/* attribute registers */
	 Amode=		 0x10,		/*  mode register */


@@ 89,17 98,6 @@ crout(int reg, int val)
	outb(CRX, reg);
	outb(CR, val);
}
crdump(void)
{
	uchar x;
	int i;

	for(i = 0; i < 0x16; i++){
		outb(CRX, i);
		x = inb(CR);
		print("cr[0x%lux] = %ux\n", i, x);
	}
}

/*
 *  m is a bit mask of planes to be affected by CPU writes


@@ 118,47 116,18 @@ vgardplane(int p)
}

/*
 *  2 bit deep display.  the bits are adjacent.  maybe this
 *  will work
 *	4 color
 *  set up like vga mode 0x12
 *	16 color (though we only use values 0x0 and 0xf)
 *	640x480
 *
 *  we assume the BIOS left the registers in a
 *  CGA-like mode.  Thus we don't set all the registers.
 */
vga2(void)
vga12(void)
{
	int i;
	arout(Acpe, 0x00);	/* disable planes for output */

	gscreen.ldepth = 1;
	arout(Amode, 0x01);	/* color graphics mode */
	grout(Gmisc, 0x01);	/* graphics mode */
	grout(Gmode, 0x30);	/* 2 bits deep, even bytes are
				 * planes 0 and 2, odd are planes
				 * 1 and 3 */
	grout(Grot, 0x00);	/* CPU writes bytes to video
				 * mem without modifications */
	crout(Cmode, 0xe3);	/* turn off address wrap &
				 * word mode */
	crout(Cmsl, 0x40);	/* 1 pixel per scan line */
	crout(Cvertend, MAXY);	/* 480 lne display */
	srout(Smode, 0x06);	/* extended memory, odd/even */
	srout(Sclock, 0x01);	/* 8 bits/char */
	srout(Smmask, 0x0f);	/* enable 2 planes for writing */

	arout(Acpe, 0x0f);	/* enable 2 planes for output */
	for(i = 0; i < 128*1024;){
		((uchar*)SCREENMEM)[i++] = 0x1b;
		((uchar*)SCREENMEM)[i++] = 0xe4;
	}
	for(;;);
}
	int overflow;
	int msl;

/*
 *  set up like vga mode 0x11
 *	2 color
 *	640x480
 */
vga1(void)
{
	arout(Acpe, 0x00);	/* disable planes for output */

	gscreen.ldepth = 0;


@@ 167,10 136,33 @@ vga1(void)
	grout(Gmode, 0x00);	/* 1 bit deep */
	grout(Grot, 0x00);	/* CPU writes bytes to video
				 * mem without modifications */

	msl = overflow = 0;
	crout(Cmode, 0xe3);	/* turn off address wrap &
				 * word mode */
	crout(Cmsl, 0x40);	/* 1 pixel per scan line */
	crout(Cvertend, MAXY-1);	/* 480 lne display */
	/* last scan line displayed (first is 0) */
	crout(Cvde, MAXY-1);
	overflow |= ((MAXY-1)&0x200) ? 0x40 : 0;
	overflow |= ((MAXY-1)&0x100) ? 0x2 : 0;
	/* total scan lines (including retrace) - 2 */
	crout(Cvt, (YPERIOD-2));
	overflow |= ((YPERIOD-2)&0x200) ? 0x20 : 0;
	overflow |= ((YPERIOD-2)&0x100) ? 0x1 : 0;
	/* scan lines at which vertcal retrace starts & ends */
	crout(Cvrs, (MAXY+10));
	overflow |= ((MAXY+10)&0x200) ? 0x80 : 0;
	overflow |= ((MAXY+10)&0x100) ? 0x4 : 0;
	crout(Cvre, ((YPERIOD-1)&0xf)|0xa0);	/* also disable vertical interrupts */
	/* scan lines at which vertical blanking starts & ends */
	crout(Cvbs, (MAXY+YBORDER));
	msl |= ((MAXY+YBORDER)&0x200) ? 0x20 : 0;
	overflow |= ((MAXY+YBORDER)&0x100) ? 0x8 : 0;
	crout(Cvbe, (YPERIOD-YBORDER)&0x7f);
	/* pixels per scan line (always 0 for graphics) */
	crout(Cmsl, 0x40|msl);	/* also 10th bit of line compare */
	/* the overflow bits from the other registers */
	crout(Cvover, 0x10|overflow);	/* also 9th bit of line compare */

	srout(Smode, 0x06);	/* extended memory,
				 * odd/even off */
	srout(Sclock, 0x01);	/* 8 bits/char */


@@ 186,7 178,7 @@ screeninit(void)
	int c;
	ulong *l;

	vga1();
	vga12();

	/*
	 *  swizzle the font longs.

M port/dev.c => port/dev.c +3 -3
@@ 24,7 24,7 @@ devno(int c, int user)
}

void
devdir(Chan *c, Qid qid, char *n, long length, long perm, Dir *db)
devdir(Chan *c, Qid qid, char *n, long length, char *user, long perm, Dir *db)
{
	strcpy(db->name, n);
	db->qid = qid;


@@ 48,7 48,7 @@ devgen(Chan *c, Dirtab *tab, int ntab, int i, Dir *dp)
	if(tab==0 || i>=ntab)
		return -1;
	tab += i;
	devdir(c, tab->qid, tab->name, tab->length, tab->perm, dp);
	devdir(c, tab->qid, tab->name, tab->length, eve, tab->perm, dp);
	return 1;
}



@@ 123,7 123,7 @@ devstat(Chan *c, char *db, Dirtab *tab, int ntab, Devgen *gen)
			 * here, which is good because we've lost the name by now.
			 */
			if(c->qid.path & CHDIR){
				devdir(c, c->qid, ".", 0L, CHDIR|0700, &dir);
				devdir(c, c->qid, ".", 0L, eve, CHDIR|0700, &dir);
				convD2M(&dir, db);
				return;
			}

M port/devcons.c => port/devcons.c +4 -3
@@ 18,7 18,9 @@ IOQ	printq;
IOQ	mouseq;
KIOQ	kbdq;

Ref	raw;		/* whether kbd i/o is raw (rcons is open) */
Ref	raw;			/* whether kbd i/o is raw (rcons is open) */

char	eve[NAMELEN] = "bootes";

/*
 *  init the queues and set the output routine


@@ 432,8 434,7 @@ consopen(Chan *c, int omode)
	switch(c->qid.path){
	case Quser:
		if(omode==(OWRITE|OTRUNC)){
			/* truncate? */
			if(strcmp(u->p->user, "bootes") == 0)	/* BUG */
			if(strcmp(u->p->user, eve) == 0)
				u->p->user[0] = 0;
			else
				error(Eperm);

M port/devdup.c => port/devdup.c +1 -1
@@ 21,7 21,7 @@ dupgen(Chan *c, Dirtab *tab, int ntab, int s, Dir *dp)
	if((f=fgrp->fd[s]) == 0)
		return 0;
	sprint(buf, "%ld", s);
	devdir(c, (Qid){s, 0}, buf, 0, perm[f->mode&3], dp);
	devdir(c, (Qid){s, 0}, buf, 0, eve, perm[f->mode&3], dp);
	return 1;
}


M port/devenv.c => port/devenv.c +1 -1
@@ 66,7 66,7 @@ envgen(Chan *c, Dirtab *tab, int ntab, int s, Dir *dp)
		if(!e->name)
			ans = 0;
		else{
			devdir(c, (Qid){s+1, (ulong)e->val}, e->name->val, e->val? e->val->len : 0, 0666, dp);
			devdir(c, (Qid){s+1, (ulong)e->val}, e->name->val, e->val? e->val->len : 0, eve, 0666, dp);
			ans = 1;
		}
	}

M port/devpipe.c => port/devpipe.c +1 -1
@@ 114,7 114,7 @@ pipegen(Chan *c, Dirtab *tab, int ntab, int i, Dir *dp)
	if(tab==0 || i>=ntab)
		return -1;
	tab += i;
	devdir(c, (Qid){STREAMQID(id, tab->qid.path),0}, tab->name, tab->length, tab->perm, dp);
	devdir(c, (Qid){STREAMQID(id, tab->qid.path),0}, tab->name, tab->length, eve, tab->perm, dp);
	return 1;
}


M port/devproc.c => port/devproc.c +181 -104
@@ 4,6 4,7 @@
#include	"dat.h"
#include	"fns.h"
#include	"errno.h"
#include	"fcall.h"

#include	"devtab.h"



@@ 21,24 22,18 @@ enum{

#define	STATSIZE	(2*NAMELEN+12+6*12)
Dirtab procdir[]={
	"ctl",		{Qctl},		0,			0600,
	"mem",		{Qmem},		0,			0600,
	"note",		{Qnote},	0,			0600,
	"ctl",		{Qctl},		0,			0000,
	"mem",		{Qmem},		0,			0000,
	"note",		{Qnote},	0,			0000,
	"notepg",	{Qnotepg},	0,			0200,
	"proc",		{Qproc},	sizeof(Proc),		0600,
	"proc",		{Qproc},	sizeof(Proc),		0000,
	"segment",	{Qsegment},	0,			0400,
	"status",	{Qstatus},	STATSIZE,		0400,
	"text",		{Qtext},	0,			0600,
	"text",		{Qtext},	0,			0000,
};

char *sname[]={ 			/* Segment type from portdat.h */
	"Text", 
	"Data", 
	"Bss", 
	"Stack", 
	"Shared", 
	"Phys",
};
/* Segment type from portdat.h */
char *sname[]={ "Text", "Data", "Bss", "Stack", "Shared", "Phys" };

/*
 * Qids are, in path:


@@ 54,12 49,16 @@ char *sname[]={ 			/* Segment type from portdat.h */
#define	SLOT(q)	((((q).path&0x07FFFFFF0)>>QSHIFT)-1)
#define	PID(q)	((q).vers)

void	procctlreq(Proc*, char*, int);
int	procctlmemio(Proc*, ulong, int, void*, int);
Chan   *procctlnotepg(Chan*, void *va, int n);

int
procgen(Chan *c, Dirtab *tab, int ntab, int s, Dir *dp)
{
	Proc *p;
	char buf[NAMELEN];
	ulong pid, path;
	ulong pid, path, perm;

	if(c->qid.path == CHDIR){
		if(s >= conf.nproc)


@@ 69,7 68,7 @@ procgen(Chan *c, Dirtab *tab, int ntab, int s, Dir *dp)
		if(pid == 0)
			return 0;
		sprint(buf, "%d", pid);
		devdir(c, (Qid){CHDIR|((s+1)<<QSHIFT), pid}, buf, 0, CHDIR|0500, dp);
		devdir(c, (Qid){CHDIR|((s+1)<<QSHIFT), pid}, buf, 0, p->user, CHDIR|0500, dp);
		return 1;
	}
	if(s >= NPROC)


@@ 78,8 77,13 @@ procgen(Chan *c, Dirtab *tab, int ntab, int s, Dir *dp)
		panic("procgen");
	tab = &procdir[s];
	path = c->qid.path&~(CHDIR|((1<<QSHIFT)-1));	/* slot component */
	devdir(c, (Qid){path|tab->qid.path, c->qid.vers},
		tab->name, tab->length, tab->perm, dp);

	p = proctab(SLOT(c->qid));
	perm = tab->perm;
	if(perm == 0)
		perm = p->procmode;

	devdir(c, (Qid){path|tab->qid.path, c->qid.vers}, tab->name, tab->length, p->user, perm, dp);
	return 1;
}



@@ 218,7 222,18 @@ procremove(Chan *c)
void
procwstat(Chan *c, char *db)
{
	error(Eperm);
	Proc *p;
	Dir d;

	convM2D(db, &d);
	p = proctab(SLOT(c->qid));
	if(p->pid != PID(c->qid))
		error(Eprocdied);

	if(strcmp(u->p->user, p->user) != 0 && strcmp(u->p->user, eve) != 0)
		error(Eperm);

	p->procmode = d.mode&0777;
}

void


@@ 232,23 247,17 @@ procread(Chan *c, void *va, long n, ulong offset)
	char *a = va, *b;
	char statbuf[NSEG*32];
	Proc *p;
	Pte *pte;
	Segment *s;
	Page *pg;
	KMap *k;
	int i, j;
	long l;
	long pid;
	User *up;
	ulong soff;
	Segment *sg;

	if(c->qid.path & CHDIR)
		return devdirread(c, a, n, 0, 0, procgen);

	/*
	 * BUG: should lock(&p->debug)?
	 */
	p = proctab(SLOT(c->qid));
	if(p->pid != PID(c->qid))
		error(Eprocdied);


@@ 260,37 269,8 @@ procread(Chan *c, void *va, long n, ulong offset)
		 */
		if(((offset+n)&~(BY2PG-1)) != (offset&~(BY2PG-1)))
			n = BY2PG - (offset&(BY2PG-1));
		s = seg(p, offset, 1);
		if(s){
			if(p->pid!=PID(c->qid)){
				qunlock(&s->lk);
				error(Eprocdied);
			}

			soff = offset-s->base;
			pte = s->map[soff/PTEMAPMEM];
			pg = 0;
			if(pte)
				pg = pte->pages[(soff&(PTEMAPMEM-1))/BY2PG];

			s->steal++;
			qunlock(&s->lk);
			if(pagedout(pg)){
				pprint("nonresident page addr %lux (complain to philw)\n", offset);
				memset(a, 0, n);
			}else{
				k = kmap(pg);
				b = (char*)VA(k);
				memmove(a, b+(offset&(BY2PG-1)), n);
				kunmap(k);
			}
			qlock(&s->lk);
			s->steal--;
			qunlock(&s->lk);
			return n;
		}
		/* u area */
		if(offset>=USERADDR && offset<USERADDR+BY2PG){

		if(offset >= USERADDR && offset < USERADDR+BY2PG) {
			if(offset+n > USERADDR+BY2PG)
				n = USERADDR+BY2PG - offset;
			pg = p->upage;


@@ 303,21 283,21 @@ procread(Chan *c, void *va, long n, ulong offset)
			return n;
		}

		/* kernel memory.  BUG: shouldn't be so easygoing. BUG: mem mapping? */
		if(offset>=KZERO && offset<KZERO+conf.npage0*BY2PG){
		if(offset >= KZERO && offset < KZERO+conf.npage0*BY2PG){
			if(offset+n > KZERO+conf.npage0*BY2PG)
				n = KZERO+conf.npage0*BY2PG - offset;
			memmove(a, (char*)offset, n);
			return n;
		}
		if(offset>=KZERO && offset<KZERO+conf.base1+conf.npage1*BY2PG){

		if(offset >= KZERO && offset < KZERO+conf.base1+conf.npage1*BY2PG){
			if(offset+n > KZERO+conf.base1+conf.npage1*BY2PG)
				n = KZERO+conf.base1+conf.npage1*BY2PG - offset;
			memmove(a, (char*)offset, n);
			return n;
		}
		return 0;
		break;

		return procctlmemio(p, offset, n, va, 1);

	case Qnote:
		lock(&p->debug);


@@ 395,7 375,6 @@ long
procwrite(Chan *c, void *va, long n, ulong offset)
{
	Proc *p;
	Pgrp *pg;
	User *up;
	KMap *k;
	char buf[ERRLEN];


@@ 404,23 383,10 @@ procwrite(Chan *c, void *va, long n, ulong offset)
		error(Eisdir);

	p = proctab(SLOT(c->qid));
	/*
	 * Special case: don't worry about process, just use remembered group
	 */

	/* Use the remembered pgrp id in the channel rather than the process pgrpid */
	if(QID(c->qid) == Qnotepg){
		pg = pgrptab(c->pgrpid.path-1);
		qlock(&pg->debug);
		if(waserror()){
			qunlock(&pg->debug);
			nexterror();
		}
		if(pg->pgrpid != c->pgrpid.vers){
			qunlock(&pg->debug);
  	  		goto Died;
		}
		pgrpnote(pg, va, n, NUser);
		poperror();
		qunlock(&pg->debug);
		procctlnotepg(c, va, n);
		return n;
	}



@@ 430,37 396,14 @@ procwrite(Chan *c, void *va, long n, ulong offset)
		nexterror();
	}
	if(p->pid != PID(c->qid))
    Died:
		error(Eprocdied);

	switch(QID(c->qid)){
	case Qmem:
		return procctlmemio(p, offset, n, va, 0);
	case Qctl:
		if(n >= 4 && strncmp(va, "exit", 4) == 0) {
			if(p->state == Broken) {
				ready(p);
				break;
			}
		}
		else
		if(n >= 4 && strncmp(va, "stop", 4) == 0) {
			p->procctl = Proc_stopme;
			break;
		}
		else
		if(n >= 5 && strncmp(va, "start", 5) == 0) {
			if(p->state == Stopped) {
				ready(p);
				break;
			}
			errors("not stopped");
		}
		else
		if(n >= 4 && strncmp(va, "kill", 4) == 0) {
			postnote(p, 0, "sys: killed", NExit);
			p->procctl = Proc_exitme;
			break;
		}
		error(Ebadctl);
		procctlreq(p, va, n);
		return n;
	case Qnote:
		k = kmap(p->upage);
		up = (User*)VA(k);


@@ 487,3 430,137 @@ procwrite(Chan *c, void *va, long n, ulong offset)
	unlock(&p->debug);
	return n;
}

Chan *
procctlnotepg(Chan *c, void *va, int n)
{
	Pgrp *pg;

	pg = pgrptab(c->pgrpid.path-1);
	qlock(&pg->debug);
	if(waserror()){
		qunlock(&pg->debug);
		nexterror();
	}
	if(pg->pgrpid != c->pgrpid.vers){
		qunlock(&pg->debug);
		error(Eprocdied);
	}
	pgrpnote(pg, va, n, NUser);
	poperror();
	qunlock(&pg->debug);
}

void
procctlreq(Proc *p, char *va, int n)
{
	if(n >= 4) {
		if(strncmp(va, "exit", 4) == 0) {
			if(p->state == Broken)
				ready(p);
			return;
		}
		if(strncmp(va, "stop", 4) == 0) {
			p->procctl = Proc_stopme;
			return;
		}
		if(strncmp(va, "kill", 4) == 0) {
			postnote(p, 0, "sys: killed", NExit);
			p->procctl = Proc_exitme;
			return;
		}
	}

	if(n >= 5 && strncmp(va, "start", 5) == 0) {
		if(p->state != Stopped)
			errors("not stopped");
		ready(p);
		return;
	}
	error(Ebadctl);
}

int
procctlmemio(Proc *p, ulong offset, int n, void *va, int read)
{
	Pte **pte;
	Page *pg;
	KMap *k;
	Segment *ps, *s;
	ulong soff;
	int i;
	char *a = va, *b;

	s = seg(p, offset, 1);
	if(s == 0)
		errors("not in address space");

	/* Revert a text segment to data */
	if(read == 0 && (s->type&SG_TYPE) == SG_TEXT) {
		ps = newseg(SG_DATA, s->base, s->size);
		ps->image = s->image;
		incref(ps->image);
		ps->fstart = s->fstart;
		ps->flen = s->flen;

		for(i = 0; i < NSEG; i++)
			if(p->seg[i] == s)
				break;
		if(p->seg[i] != s)
			panic("segment gone");

		qunlock(&s->lk);
		putseg(s);
		p->seg[i] = ps;
	}
	else
		qunlock(&s->lk);

Again:
	s = seg(p, offset, 1);
	if(s == 0)
		errors("not in address space");

	s->steal++;
	soff = offset-s->base;
	pte = &s->map[soff/PTEMAPMEM];
	if(*pte == 0) {
		if(waserror()) {
			s->steal--;
			nexterror();
		}
		if(fixfault(s, offset, read, 0) != 0) {
			s->steal--;
			poperror();
			goto Again;
		}
		poperror();
		if(*pte == 0)
			panic("procctlmemio"); 
	}
	pg = (*pte)->pages[(soff&(PTEMAPMEM-1))/BY2PG];
	if(pagedout(pg)) {
		if(waserror()) {
			s->steal--;
			nexterror();
		}
		if(fixfault(s, offset, read, 0) != 0) {
			s->steal--;
			poperror();
			goto Again;
		}
		poperror();
		pg = (*pte)->pages[(soff&(PTEMAPMEM-1))/BY2PG];
		if(pg == 0)
			panic("procctlmemio1");
	}

	k = kmap(pg);
	b = (char*)VA(k);
	memmove(a, b+(offset&(BY2PG-1)), n);
	kunmap(k);

	s->steal--;
	qunlock(&s->lk);
	return n;
}

M port/devroot.c => port/devroot.c +1 -1
@@ 46,7 46,7 @@ rootgen(Chan *c, Dirtab *tab, int ntab, int i, Dir *dp)
		tab += i;
	else
		tab = rootmap[i - NROOT];
	devdir(c, tab->qid, tab->name, tab->length, tab->perm, dp);
	devdir(c, tab->qid, tab->name, tab->length, eve, tab->perm, dp);
	return 1;
}


M port/devsrv.c => port/devsrv.c +1 -1
@@ 21,7 21,7 @@ srvgen(Chan *c, Dirtab *tab, int ntab, int s, Dir *dp)
		return -1;
	if(srv.chan[s] == 0)
		return 0;
	devdir(c, (Qid){s, 0}, &srv.name[s*NAMELEN], 0, 0666, dp);
	devdir(c, (Qid){s, 0}, &srv.name[s*NAMELEN], 0, eve, 0666, dp);
	return 1;
}


M port/devwren.c => port/devwren.c +1 -1
@@ 93,7 93,7 @@ wrengen(Chan *c, Dirtab *tab, long ntab, long s, Dir *dirp)
	name[NAMELEN] = 0;
	qid.path = MKQID(drive, s);
	l = (pp->end - pp->start) * dp->bytes;
	devdir(c, qid, name, l, 0600, dirp);
	devdir(c, qid, name, l, eve, 0600, dirp);
	return 1;
}


M port/fault.c => port/fault.c +31 -18
@@ 13,30 13,42 @@ void	faultexit(char*);
int
fault(ulong addr, int read)
{
	ulong mmuphys=0, soff;
	Segment *s;
	Pte **p;
	Page **pg, *lkp, *new = 0;
	int type;
	char *sps;

	sps = u->p->psstate;
	u->p->psstate = "Fault";

	m->pfault++;
again:
	s = seg(u->p, addr, 1);
	if(s == 0) {
		u->p->psstate = sps;
		return -1;
	}
	for(;;) {
		s = seg(u->p, addr, 1);
		if(s == 0) {
			u->p->psstate = sps;
			return -1;
		}

	if(!read && (s->type&SG_RONLY)) {
		qunlock(&s->lk);
		u->p->psstate = sps;
		return -1;
		if(!read && (s->type&SG_RONLY)) {
			qunlock(&s->lk);
			u->p->psstate = sps;
			return -1;
		}

		if(fixfault(s, addr, read, 1) == 0)
			break;
	}

	u->p->psstate = sps;
	return 0;
}

int
fixfault(Segment *s, ulong addr, int read, int doputmmu)
{
	ulong mmuphys=0, soff;
	Page **pg, *lkp, *new = 0;
	Pte **p;
	int type;

	addr &= ~(BY2PG-1);
	soff = addr-s->base;
	p = &s->map[soff/PTEMAPMEM];


@@ 60,7 72,7 @@ again:
			/* Zero fill on demand */
		if(*pg == 0) {			
			if(new == 0 && (new = newpage(1, &s, addr)) && s == 0)
				goto again;
				return -1;
			*pg = new;
			new = 0;
		}


@@ 83,7 95,7 @@ again:
		if(lkp->ref > 1) {
			unlockpage(lkp);
			if(new == 0 && (new = newpage(0, &s, addr)) && s == 0)
				goto again;
				return -1;
			*pg = new;
			new = 0;
			copypage(lkp, *pg);


@@ 120,8 132,9 @@ again:
	if(new)
		putpage(new);

	putmmu(addr, mmuphys, *pg);
	u->p->psstate = sps;
	if(doputmmu)
		putmmu(addr, mmuphys, *pg);

	return 0;
}


M port/net.c => port/net.c +8 -8
@@ 34,7 34,7 @@ netgen(Chan *c, void *vp, int ntab, int i, Dir *dp)
		case 0:
			q.path = CHDIR | Q2nd;
			strcpy(buf, np->name);
			devdir(c, q, buf, 0, 0666, dp);
			devdir(c, q, buf, 0, eve, 0666, dp);
			break;
		default:
			return -1;


@@ 46,11 46,11 @@ netgen(Chan *c, void *vp, int ntab, int i, Dir *dp)
	if(STREAMID(c->qid.path) == 0){
		if(i == 0){
			q.path = Qclone;
			devdir(c, q, "clone", 0, 0666, dp);
			devdir(c, q, "clone", 0, eve, 0666, dp);
		}else if(i < np->nconv){
			q.path = CHDIR|STREAMQID(i, Q3rd);
			sprint(buf, "%d", i);
			devdir(c, q, buf, 0, 0666, dp);
			devdir(c, q, buf, 0, eve, 0666, dp);
		}else
			return -1;
		return 1;


@@ 60,24 60,24 @@ netgen(Chan *c, void *vp, int ntab, int i, Dir *dp)
	switch(i){
	case 0:
		q.path = STREAMQID(STREAMID(c->qid.path), Sdataqid);
		devdir(c, q, "data", 0, 0666, dp);
		devdir(c, q, "data", 0, eve, 0666, dp);
		break;
	case 1:
		q.path = STREAMQID(STREAMID(c->qid.path), Sctlqid);
		devdir(c, q, "ctl", 0, 0666, dp);
		devdir(c, q, "ctl", 0, eve, 0666, dp);
		break;
	case 2:
		if(np->listen == 0)
			return 0;
		q.path = STREAMQID(STREAMID(c->qid.path), Qlisten);
		devdir(c, q, "listen", 0, 0666, dp);
		devdir(c, q, "listen", 0, eve, 0666, dp);
		break;
	default:
		i -= 3;
		if(i >= np->ninfo)
			return -1;
		q.path = STREAMQID(STREAMID(c->qid.path), Qinf+i);
		devdir(c, q, np->info[i].name, 0, 0666, dp);
		devdir(c, q, np->info[i].name, 0, eve, 0666, dp);
		break;
	}
	return 1;


@@ 117,7 117,7 @@ netstat(Chan *c, char *db, Network *np)
			 * here, which is good because we've lost the name by now.
			 */
			if(c->qid.path & CHDIR){
				devdir(c, c->qid, ".", 0L, CHDIR|0700, &dir);
				devdir(c, c->qid, ".", 0L, eve, CHDIR|0700, &dir);
				convD2M(&dir, db);
				return;
			}

M port/portdat.h => port/portdat.h +4 -1
@@ 516,7 516,10 @@ struct Proc
	ulong	time[6];		/* User, Sys, Real; child U, S, R */
	short	insyscall;
	int	fpstate;

	Lock	debug;			/* to access debugging elements of User */
	ulong	procmode;		/* proc device file mode */

	Rendez	*r;			/* rendezvous point slept on */
	Rendez	sleep;			/* place for tsleep and syssleep */
	int	notepending;		/* note issued but not acted on */


@@ 645,12 648,12 @@ extern	Conf	conf;
extern	ulong	initcode[];
extern	Dev	devtab[];
extern	char	devchar[];
extern	char	user[NAMELEN];
extern	char	*conffile;
extern	char	*errstrtab[];
extern	char	*statename[];
extern	Palloc 	palloc;
extern  Image	swapimage;
extern  char	eve[];

#define	CHDIR		0x80000000L
#define	CHAPPEND 	0x40000000L

M port/portfns.h => port/portfns.h +2 -1
@@ 40,7 40,7 @@ void	delete(List**, List*, List*);
void	delete0(List**, List*);
Chan*	devattach(int, char*);
Chan*	devclone(Chan*, Chan*);
void	devdir(Chan*, Qid, char*, long, long, Dir*);
void	devdir(Chan*, Qid, char*, long, char*, long, Dir*);
long	devdirread(Chan*, char*, long, Dirtab*, int, Devgen*);
Devgen	devgen;
int	devno(int, int);


@@ 69,6 69,7 @@ int	fault(ulong, int);
void	fdclose(int, int);
Chan*	fdtochan(int, int, int);
void	firmware(void);
int	fixfault(Segment*, ulong, int, int);
void	flowctl(Queue*);
void	flushmmu(void);
void	freealarm(Alarm*);

M port/proc.c => port/proc.c +2 -1
@@ 228,6 228,7 @@ loop:
		p->pgrp = 0;
		p->egrp = 0;
		p->fgrp = 0;
		p->procmode = 0644;
		p->fpstate = FPinit;
		p->kp = 0;
		p->procctl = 0;


@@ 706,7 707,7 @@ kproc(char *name, void (*func)(void *), void *arg)
		pexit(0, 1);
	}

	user = "bootes";
	user = eve;
	strcpy(p->user, user);
	if(kpgrp == 0){
		kpgrp = newpgrp();

M port/segment.c => port/segment.c +3 -0
@@ 106,6 106,7 @@ putseg(Segment *s)
	}

	if(decref(s) == 0) {
		qlock(&s->lk);
		if(i)
			putimage(i);



@@ 114,6 115,8 @@ putseg(Segment *s)
			if(*pp)
				freepte(s, *pp);

		qunlock(&s->lk);

		lock(&segalloc);
		s->next = segalloc.free;		
		segalloc.free = s;

M port/stream.c => port/stream.c +3 -3
@@ 787,8 787,8 @@ streamgen(Chan *c, Dirtab *tab, int ntab, int s, Dir *dp)
	else
		return -1;

	devdir(c, (Qid){STREAMQID(STREAMID(c->qid.path),tab->qid.path), 0}, tab->name, tab->length,
		tab->perm, dp);
	devdir(c, (Qid){STREAMQID(STREAMID(c->qid.path),tab->qid.path), 0}, 
		tab->name, tab->length, eve, tab->perm, dp);
	return 1;
}



@@ 1407,7 1407,7 @@ streamstat(Chan *c, char *db, char *name)
		unlock(q);
	}

	devdir(c, c->qid, name, n, 0, &dir);
	devdir(c, c->qid, name, n, eve, 0, &dir);
	convD2M(&dir, db);
}


M power/boot.h => power/boot.h +1026 -682
@@ 1,8 1,8 @@
ulong bootcode[]={
	0x000000407,
	0x0000056a0,
	0x000000708,
	0x000001290,
	0x000005bf0,
	0x000000710,
	0x000001390,
	0x000000000,
	0x000001020,
	0x000000000,


@@ 24,16 24,16 @@ ulong bootcode[]={
	0x023bdffec,
	0x0afbf0000,
	0x0afa0000c,
	0x023c2824d,
	0x023c28255,
	0x0afa20004,
	0x00c000a6b,
	0x0afa00008,
	0x023c38255,
	0x023c3825d,
	0x0afa30004,
	0x020020001,
	0x00c000a6b,
	0x0afa20008,
	0x023c3825d,
	0x023c38265,
	0x0afa30004,
	0x020020001,
	0x00c000a6b,


@@ 67,19 67,19 @@ ulong bootcode[]={
	0x024a5ffff,
	0x023c38026,
	0x0afa30004,
	0x023c28265,
	0x023c2826d,
	0x00c0009f4,
	0x0afa20008,
	0x023c3990a,
	0x023c39a12,
	0x0afa30004,
	0x023c28270,
	0x023c28278,
	0x00c0009f4,
	0x0afa20008,
	0x08fa5001c,
	0x08fa30018,
	0x020020001,
	0x010620029,
	0x023c4990a,
	0x023c49a12,
	0x020020002,
	0x010620019,
	0x000000027,


@@ 128,7 128,7 @@ ulong bootcode[]={
	0x000000027,
	0x023bdfff4,
	0x0afbf0000,
	0x023c28278,
	0x023c28280,
	0x0afa20004,
	0x020030002,
	0x00c000a6b,


@@ 159,7 159,7 @@ ulong bootcode[]={
	0x000000027,
	0x014400008,
	0x000000027,
	0x023c38280,
	0x023c38288,
	0x00c00093f,
	0x0afa30004,
	0x08fa20000,


@@ 170,14 170,14 @@ ulong bootcode[]={
	0x000000027,
	0x014400048,
	0x000000027,
	0x023c282ae,
	0x023c282b6,
	0x0afa20004,
	0x020040002,
	0x00c000a6b,
	0x0afa40008,
	0x004210008,
	0x000000027,
	0x023c382b7,
	0x023c382bf,
	0x00c0007fc,
	0x0afa30004,
	0x08fa20000,


@@ 186,7 186,7 @@ ulong bootcode[]={
	0x02001ffff,
	0x0afa10020,
	0x0afa10004,
	0x023c482c8,
	0x023c482d0,
	0x0afa40008,
	0x02003000d,
	0x00c000a7f,


@@ 196,7 196,7 @@ ulong bootcode[]={
	0x000000027,
	0x00c000a53,
	0x0afa50004,
	0x023c382d6,
	0x023c382de,
	0x00c0007fc,
	0x0afa30004,
	0x08fa20000,


@@ 204,7 204,7 @@ ulong bootcode[]={
	0x000400008,
	0x02001ffff,
	0x0afa50004,
	0x023c482e4,
	0x023c482ec,
	0x0afa40008,
	0x02003000c,
	0x00c000a7f,


@@ 214,7 214,7 @@ ulong bootcode[]={
	0x000000027,
	0x00c000a53,
	0x0afa50004,
	0x023c382f1,
	0x023c382f9,
	0x00c0007fc,
	0x0afa30004,
	0x08fa20000,


@@ 222,7 222,7 @@ ulong bootcode[]={
	0x000400008,
	0x02001ffff,
	0x0afa50004,
	0x023c482fe,
	0x023c48306,
	0x0afa40008,
	0x02003000c,
	0x00c000a7f,


@@ 232,7 232,7 @@ ulong bootcode[]={
	0x08fa20020,
	0x00c000a53,
	0x0afa20004,
	0x023c3830b,
	0x023c38313,
	0x00c0007fc,
	0x0afa30004,
	0x08fa20000,


@@ 241,21 241,21 @@ ulong bootcode[]={
	0x02001ffff,
	0x020020001,
	0x0afc28042,
	0x023c28318,
	0x023c28320,
	0x0afa20004,
	0x020040002,
	0x00c000a6b,
	0x0afa40008,
	0x004210008,
	0x0afa10018,
	0x023c38327,
	0x023c3832f,
	0x00c0007fc,
	0x0afa30004,
	0x08fa20000,
	0x023bd0024,
	0x000400008,
	0x02001ffff,
	0x023c3833e,
	0x023c38346,
	0x0afa30004,
	0x020040002,
	0x00c000a6b,


@@ 265,7 265,7 @@ ulong bootcode[]={
	0x08fa20018,
	0x00c000a53,
	0x0afa20004,
	0x023c2834c,
	0x023c28354,
	0x0afa20004,
	0x00c0007fc,
	0x02003ffff,


@@ 309,10 309,10 @@ ulong bootcode[]={
	0x023bd0024,
	0x000400008,
	0x02001ffff,
	0x023c28362,
	0x023c2836a,
	0x0afc28022,
	0x023c38368,
	0x0afc380fe,
	0x023c38370,
	0x0afc38106,
	0x08fa10018,
	0x08fa20000,
	0x000000027,


@@ 326,14 326,14 @@ ulong bootcode[]={
	0x000000027,
	0x014400038,
	0x000000027,
	0x023c28370,
	0x023c28378,
	0x0afa20004,
	0x020040002,
	0x00c000a6b,
	0x0afa40008,
	0x004210008,
	0x0afc1801e,
	0x023c38377,
	0x023c3837f,
	0x00c0007fc,
	0x0afa30004,
	0x08fa20000,


@@ 341,7 341,7 @@ ulong bootcode[]={
	0x000400008,
	0x02001ffff,
	0x0afa10004,
	0x023c48386,
	0x023c4838e,
	0x0afa40008,
	0x02003000a,
	0x00c000a7f,


@@ 351,7 351,7 @@ ulong bootcode[]={
	0x000000027,
	0x00c000a53,
	0x0afa50004,
	0x023c38391,
	0x023c38399,
	0x00c0007fc,
	0x0afa30004,
	0x08fa20000,


@@ 359,7 359,7 @@ ulong bootcode[]={
	0x000400008,
	0x02001ffff,
	0x0afa50004,
	0x023c4839c,
	0x023c483a4,
	0x0afa40008,
	0x020030017,
	0x00c000a7f,


@@ 369,7 369,7 @@ ulong bootcode[]={
	0x08fc2801e,
	0x00c000a53,
	0x0afa20004,
	0x023c383b4,
	0x023c383bc,
	0x00c0007fc,
	0x0afa30004,
	0x08fa20000,


@@ 381,21 381,21 @@ ulong bootcode[]={
	0x0200307d0,
	0x00c000a73,
	0x0afa30004,
	0x023c383cc,
	0x023c383d4,
	0x0afa30004,
	0x020040002,
	0x00c000a6b,
	0x0afa40008,
	0x004210008,
	0x0afa10054,
	0x023c283d9,
	0x023c283e1,
	0x00c0007fc,
	0x0afa20004,
	0x08fa20000,
	0x023bd0058,
	0x000400008,
	0x02001ffff,
	0x023c283ee,
	0x023c283f6,
	0x0afa20004,
	0x020040002,
	0x00c000a6b,


@@ 405,7 405,7 @@ ulong bootcode[]={
	0x08fa30054,
	0x00c000a53,
	0x0afa30004,
	0x023c383fa,
	0x023c38402,
	0x0afa30004,
	0x00c0007fc,
	0x02002ffff,


@@ 415,7 415,7 @@ ulong bootcode[]={
	0x02001ffff,
	0x023a20014,
	0x0afa20004,
	0x023c3840e,
	0x023c38416,
	0x0afa30008,
	0x08fa2005c,
	0x00c000989,


@@ 448,10 448,10 @@ ulong bootcode[]={
	0x023bd0058,
	0x000400008,
	0x02001ffff,
	0x023c28419,
	0x023c28421,
	0x0afc28022,
	0x023c3841c,
	0x0afc380fe,
	0x023c38424,
	0x0afc38106,
	0x08fa10054,
	0x08fa20000,
	0x000000027,


@@ 481,17 481,17 @@ ulong bootcode[]={
	0x000400008,
	0x02001ffff,
	0x0afa50004,
	0x023c4841f,
	0x023c48427,
	0x0afa40008,
	0x0afa0000c,
	0x023c28424,
	0x023c2842c,
	0x0afa20010,
	0x023c48425,
	0x023c4842d,
	0x00c000a67,
	0x0afa40014,
	0x004210004,
	0x000000027,
	0x023c28426,
	0x023c2842e,
	0x00c00080e,
	0x0afa20004,
	0x00c000a63,


@@ 514,7 514,7 @@ ulong bootcode[]={
	0x0afa20004,
	0x020030002,
	0x0afa30004,
	0x023c28476,
	0x023c2847e,
	0x00c000964,
	0x0afa20008,
	0x020030bb8,


@@ 522,10 522,10 @@ ulong bootcode[]={
	0x0afa30004,
	0x020020002,
	0x0afa20004,
	0x023c38487,
	0x023c3848f,
	0x00c000964,
	0x0afa30008,
	0x023c28496,
	0x023c2849e,
	0x0afa20004,
	0x020030002,
	0x00c000a6b,


@@ 534,38 534,38 @@ ulong bootcode[]={
	0x000000027,
	0x000400008,
	0x023bd00d4,
	0x023c3842c,
	0x023c38434,
	0x0afa30004,
	0x023c28445,
	0x023c2844d,
	0x0afa20008,
	0x023c38450,
	0x023c38458,
	0x0afa3000c,
	0x00c000a3f,
	0x0afa00010,
	0x023c28460,
	0x023c28468,
	0x00c00080e,
	0x0afa20004,
	0x023c38471,
	0x023c38479,
	0x00c00080e,
	0x0afa30004,
	0x0080005f6,
	0x000000027,
	0x023bdffe0,
	0x0afbf0000,
	0x023c284a0,
	0x023c284a8,
	0x00c00093f,
	0x0afa20004,
	0x020030032,
	0x0a3c3970a,
	0x0a3c39712,
	0x03402ffff,
	0x0a7c2970e,
	0x023c2970a,
	0x0a7c29716,
	0x023c29712,
	0x0afa20004,
	0x023c4870a,
	0x023c48712,
	0x00c000e1e,
	0x0afa40008,
	0x08fa30024,
	0x023c4870a,
	0x023c48712,
	0x0afa30004,
	0x0afa40008,
	0x0afa1001c,


@@ 575,11 575,11 @@ ulong bootcode[]={
	0x000000027,
	0x01025000c,
	0x000000027,
	0x023c284a7,
	0x023c284af,
	0x0afa20004,
	0x00c00093f,
	0x0afa50008,
	0x023c284af,
	0x023c284b7,
	0x00c0007fc,
	0x0afa20004,
	0x08fa20000,


@@ 587,7 587,7 @@ ulong bootcode[]={
	0x000400008,
	0x000000825,
	0x08fa20024,
	0x023c4870a,
	0x023c48712,
	0x0afa20004,
	0x0afa40008,
	0x020021000,


@@ 595,7 595,7 @@ ulong bootcode[]={
	0x0afa2000c,
	0x01c200008,
	0x000000027,
	0x023c384b9,
	0x023c384c1,
	0x00c0007fc,
	0x0afa30004,
	0x08fa20000,


@@ 607,84 607,84 @@ ulong bootcode[]={
	0x000000027,
	0x00800064b,
	0x000000027,
	0x023c3870a,
	0x023c38712,
	0x0afa30004,
	0x023c4970a,
	0x023c49712,
	0x0afa40008,
	0x0afa1001c,
	0x00c000b1c,
	0x0afa1000c,
	0x014200022,
	0x000000027,
	0x023c284c2,
	0x023c284ca,
	0x0afa20004,
	0x08fa3001c,
	0x000000027,
	0x0afa30008,
	0x083c2870a,
	0x083c28712,
	0x000000027,
	0x000021600,
	0x000021603,
	0x0afa2000c,
	0x083c3870b,
	0x083c38713,
	0x000000027,
	0x000031e00,
	0x000031e03,
	0x0afa30010,
	0x083c2870c,
	0x083c28714,
	0x000000027,
	0x000021600,
	0x000021603,
	0x0afa20014,
	0x083c3870d,
	0x083c38715,
	0x000000027,
	0x000031e00,
	0x000031e03,
	0x00c00093f,
	0x0afa30018,
	0x023c284e5,
	0x023c284ed,
	0x00c0007fc,
	0x0afa20004,
	0x08fa20000,
	0x023bd0020,
	0x000400008,
	0x000000825,
	0x083c3970a,
	0x083c39712,
	0x020020033,
	0x010620008,
	0x000000027,
	0x023c384f0,
	0x023c384f8,
	0x00c0007fc,
	0x0afa30004,
	0x08fa20000,
	0x023bd0020,
	0x000400008,
	0x000000825,
	0x097c2970e,
	0x097c29716,
	0x03403ffff,
	0x010430008,
	0x000000027,
	0x023c284f9,
	0x023c28501,
	0x00c0007fc,
	0x0afa20004,
	0x08fa20000,
	0x023bd0020,
	0x000400008,
	0x000000825,
	0x023c38507,
	0x023c3850f,
	0x00c00093f,
	0x0afa30004,
	0x020020034,
	0x0a3c2970a,
	0x0a3c29712,
	0x03403ffff,
	0x0a7c3970e,
	0x023c3970a,
	0x0a7c39716,
	0x023c39712,
	0x0afa30004,
	0x023c4870a,
	0x023c48712,
	0x00c000e1e,
	0x0afa40008,
	0x08fa20024,
	0x023c4870a,
	0x023c48712,
	0x0afa20004,
	0x0afa40008,
	0x0afa1001c,


@@ 694,7 694,7 @@ ulong bootcode[]={
	0x000000027,
	0x010240008,
	0x000000027,
	0x023c28512,
	0x023c2851a,
	0x00c0007fc,
	0x0afa20004,
	0x08fa20000,


@@ 702,7 702,7 @@ ulong bootcode[]={
	0x000400008,
	0x000000825,
	0x08fa20024,
	0x023c4870a,
	0x023c48712,
	0x0afa20004,
	0x0afa40008,
	0x020021000,


@@ 710,48 710,48 @@ ulong bootcode[]={
	0x0afa2000c,
	0x01c200008,
	0x000000027,
	0x023c38520,
	0x023c38528,
	0x00c0007fc,
	0x0afa30004,
	0x08fa20000,
	0x023bd0020,
	0x000400008,
	0x000000825,
	0x023c3870a,
	0x023c38712,
	0x0afa30004,
	0x023c4970a,
	0x023c49712,
	0x0afa40008,
	0x00c000b1c,
	0x0afa1000c,
	0x014200008,
	0x000000027,
	0x023c2852d,
	0x023c28535,
	0x00c0007fc,
	0x0afa20004,
	0x08fa20000,
	0x023bd0020,
	0x000400008,
	0x000000825,
	0x097c3970e,
	0x097c39716,
	0x03402ffff,
	0x010620008,
	0x000000027,
	0x023c3853c,
	0x023c38544,
	0x00c0007fc,
	0x0afa30004,
	0x08fa20000,
	0x023bd0020,
	0x000400008,
	0x000000825,
	0x083c2970a,
	0x083c29712,
	0x020030037,
	0x01443000d,
	0x000000027,
	0x020020002,
	0x0afa20004,
	0x023c3854a,
	0x023c38552,
	0x0afa30008,
	0x023c2970a,
	0x023c29712,
	0x024420008,
	0x00c000964,
	0x0afa2000c,


@@ 759,11 759,11 @@ ulong bootcode[]={
	0x023bd0020,
	0x000400008,
	0x000000825,
	0x083c3970a,
	0x083c39712,
	0x020020035,
	0x010620008,
	0x000000027,
	0x023c3855a,
	0x023c38562,
	0x00c0007fc,
	0x0afa30004,
	0x08fa20000,


@@ 781,7 781,7 @@ ulong bootcode[]={
	0x000000027,
	0x01040000a,
	0x000000027,
	0x023c38567,
	0x023c3856f,
	0x0afa30004,
	0x023c28026,
	0x0afa20008,


@@ 798,7 798,7 @@ ulong bootcode[]={
	0x0afc28006,
	0x023c28026,
	0x0afa20004,
	0x023c4856e,
	0x023c48576,
	0x0afa40008,
	0x020020004,
	0x00c0009a1,


@@ 813,7 813,7 @@ ulong bootcode[]={
	0x0afc68006,
	0x004c10008,
	0x000000027,
	0x023c2859f,
	0x023c285a7,
	0x00c00093f,
	0x0afa20004,
	0x08fa20000,


@@ 828,79 828,79 @@ ulong bootcode[]={
	0x000000027,
	0x000400008,
	0x023bd0068,
	0x023c385ae,
	0x023c385b6,
	0x0afa30004,
	0x08fc28006,
	0x00c00084e,
	0x0afa20008,
	0x023c385b3,
	0x023c385bb,
	0x0afa30004,
	0x08fc28006,
	0x00c00084e,
	0x0afa20008,
	0x023c385ba,
	0x023c385c2,
	0x00c00093f,
	0x0afa30004,
	0x023c385c3,
	0x023c385cb,
	0x0afa30004,
	0x023c485c5,
	0x023c485cd,
	0x0afa40008,
	0x00c000a4f,
	0x0afa0000c,
	0x004210004,
	0x000000027,
	0x023c285c7,
	0x023c285cf,
	0x00c00080e,
	0x0afa20004,
	0x08fc28006,
	0x023c485cc,
	0x023c485d4,
	0x0afa20004,
	0x0afa40008,
	0x020020006,
	0x0afa2000c,
	0x023c485ce,
	0x023c485d6,
	0x0afa40010,
	0x023c285cf,
	0x023c285d7,
	0x00c000a67,
	0x0afa20014,
	0x004210004,
	0x000000027,
	0x023c385d0,
	0x023c385d8,
	0x00c00080e,
	0x0afa30004,
	0x00c000891,
	0x000000027,
	0x023c285d6,
	0x023c285de,
	0x00c00093f,
	0x0afa20004,
	0x08fc58022,
	0x08fc380fe,
	0x08fc38106,
	0x000000027,
	0x01060001d,
	0x000000027,
	0x023a20018,
	0x0afa20004,
	0x023c385df,
	0x023c385e7,
	0x0afa30008,
	0x00c000989,
	0x0afa5000c,
	0x08fc280fe,
	0x023c485e7,
	0x08fc28106,
	0x023c485ef,
	0x0afa20004,
	0x00c0009e1,
	0x0afa40008,
	0x08fc580fe,
	0x08fc58106,
	0x014200044,
	0x000000027,
	0x0afa50004,
	0x023c385ea,
	0x023c385f2,
	0x0afa30008,
	0x020020001,
	0x00c000a4f,
	0x0afa2000c,
	0x023a30018,
	0x0afa30004,
	0x023c285ef,
	0x023c285f7,
	0x0afa20008,
	0x00c000a4f,
	0x0afa0000c,


@@ 910,18 910,18 @@ ulong bootcode[]={
	0x000000027,
	0x023a20018,
	0x0afa20004,
	0x023c385f8,
	0x023c38600,
	0x0afa30008,
	0x00c000989,
	0x0afa5000c,
	0x023c38608,
	0x023c38610,
	0x0afa30004,
	0x023a20018,
	0x00c00093f,
	0x0afa20008,
	0x023a30018,
	0x0afa30004,
	0x023c2862a,
	0x023c28632,
	0x0afa20008,
	0x00c000a4f,
	0x0afa0000c,


@@ 929,30 929,30 @@ ulong bootcode[]={
	0x000000027,
	0x010600010,
	0x000000027,
	0x023c2863b,
	0x023c28643,
	0x0afa20004,
	0x023c38646,
	0x023c3864e,
	0x0afa30008,
	0x023c2864b,
	0x023c28653,
	0x0afa2000c,
	0x00c000a3f,
	0x0afa00010,
	0x023c28662,
	0x023c2866a,
	0x00c00080e,
	0x0afa20004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0068,
	0x023c3864f,
	0x023c38657,
	0x0afa30004,
	0x023c2865a,
	0x023c28662,
	0x0afa20008,
	0x023c3865f,
	0x023c38667,
	0x0afa3000c,
	0x00c000a3f,
	0x0afa00010,
	0x023c28662,
	0x023c2866a,
	0x00c00080e,
	0x0afa20004,
	0x08fa20000,


@@ 966,7 966,7 @@ ulong bootcode[]={
	0x0afa0000c,
	0x008000783,
	0x000000027,
	0x023c38583,
	0x023c3858b,
	0x00c00093f,
	0x0afa30004,
	0x0200203e8,


@@ 977,7 977,7 @@ ulong bootcode[]={
	0x008000718,
	0x024450001,
	0x0afa50004,
	0x023c48573,
	0x023c4857b,
	0x0afa40008,
	0x020030004,
	0x00c0009a1,


@@ 990,7 990,7 @@ ulong bootcode[]={
	0x00800072a,
	0x000013025,
	0x0afa50004,
	0x023c48578,
	0x023c48580,
	0x0afa40008,
	0x020020003,
	0x00c0009a1,


@@ 1003,7 1003,7 @@ ulong bootcode[]={
	0x00800072a,
	0x000013025,
	0x0afa50004,
	0x023c4857c,
	0x023c48584,
	0x0afa40008,
	0x020030006,
	0x00c0009a1,


@@ 1026,7 1026,7 @@ ulong bootcode[]={
	0x0afa30004,
	0x020020002,
	0x0afa20004,
	0x023c3866d,
	0x023c38675,
	0x0afa30008,
	0x08fa20058,
	0x023a30014,


@@ 1044,7 1044,7 @@ ulong bootcode[]={
	0x0afa20004,
	0x020030002,
	0x0afa30004,
	0x023c2867b,
	0x023c28683,
	0x0afa20008,
	0x08fa30058,
	0x023a20014,


@@ 1059,7 1059,7 @@ ulong bootcode[]={
	0x023bd0054,
	0x023bdfeec,
	0x0afbf0000,
	0x023c28689,
	0x023c28691,
	0x0afa20004,
	0x08fa30118,
	0x000000027,


@@ 1079,7 1079,7 @@ ulong bootcode[]={
	0x000000027,
	0x004210006,
	0x0afa10110,
	0x023c38692,
	0x023c3869a,
	0x00c00080e,
	0x0afa30004,
	0x08fa50110,


@@ 1111,13 1111,13 @@ ulong bootcode[]={
	0x010200038,
	0x000000027,
	0x024250001,
	0x023c2870a,
	0x023c28712,
	0x0afa20004,
	0x023c386b4,
	0x023c386bc,
	0x0afa30008,
	0x00c000989,
	0x0afa5000c,
	0x023c2870a,
	0x023c28712,
	0x0afa20004,
	0x020040001,
	0x0afa40008,


@@ 1126,26 1126,26 @@ ulong bootcode[]={
	0x0afa2000c,
	0x004210004,
	0x0afa10018,
	0x023c386ba,
	0x023c386c2,
	0x00c00080e,
	0x0afa30004,
	0x023c2870a,
	0x023c28712,
	0x0afa20004,
	0x023c386c1,
	0x023c386c9,
	0x0afa30008,
	0x08fa20028,
	0x00c000989,
	0x0afa2000c,
	0x023c3870a,
	0x023c38712,
	0x00c000a33,
	0x0afa30004,
	0x0afa10014,
	0x023c4870a,
	0x023c48712,
	0x00c000a33,
	0x0afa40004,
	0x0afa10010,
	0x08fa40018,
	0x023c3870a,
	0x023c38712,
	0x0afa40004,
	0x0afa30008,
	0x08fa40010,


@@ 1155,7 1155,7 @@ ulong bootcode[]={
	0x000000027,
	0x010230004,
	0x000000027,
	0x023c286c4,
	0x023c286cc,
	0x00c00080e,
	0x0afa20004,
	0x08fa30018,


@@ 1170,10 1170,10 @@ ulong bootcode[]={
	0x000000027,
	0x023bdfefc,
	0x0afbf0000,
	0x023c286ca,
	0x023c286d2,
	0x00c00093f,
	0x0afa20004,
	0x023c286d2,
	0x023c286da,
	0x0afa20004,
	0x020040002,
	0x00c000a6b,


@@ 1186,12 1186,12 @@ ulong bootcode[]={
	0x023bd0104,
	0x0afa10018,
	0x0afa10004,
	0x023c486da,
	0x023c486e2,
	0x0afa40008,
	0x0afa0000c,
	0x023c286e2,
	0x023c286ea,
	0x0afa20010,
	0x023c486e3,
	0x023c486eb,
	0x00c000a67,
	0x0afa40014,
	0x08fa50018,


@@ 1205,14 1205,14 @@ ulong bootcode[]={
	0x023bd0104,
	0x00c000a53,
	0x0afa50004,
	0x023c386e4,
	0x023c386ec,
	0x0afa30004,
	0x023a40090,
	0x00c000a77,
	0x0afa40008,
	0x004210004,
	0x000000027,
	0x023c286ec,
	0x023c286f4,
	0x00c00080e,
	0x0afa20004,
	0x023a30090,


@@ 1222,16 1222,16 @@ ulong bootcode[]={
	0x0afa20008,
	0x023a30090,
	0x0afa30004,
	0x023c286f1,
	0x023c286f9,
	0x0afa20008,
	0x08fa3007c,
	0x00c000989,
	0x0afa3000c,
	0x0afa00004,
	0x023c286f5,
	0x023c286fd,
	0x00c0011e4,
	0x0afa20008,
	0x023c286fd,
	0x023c28705,
	0x0afa20004,
	0x020040001,
	0x00c000a6b,


@@ 1259,7 1259,7 @@ ulong bootcode[]={
	0x000002825,
	0x028a20021,
	0x010400011,
	0x023c69886,
	0x023c6998e,
	0x000051080,
	0x000461021,
	0x08c420000,


@@ 1284,7 1284,7 @@ ulong bootcode[]={
	0x000002025,
	0x028820021,
	0x01040000d,
	0x023c59886,
	0x023c5998e,
	0x000041080,
	0x000451021,
	0x08c420000,


@@ 1316,7 1316,7 @@ ulong bootcode[]={
	0x023bd0008,
	0x023bdfff0,
	0x0afbf0000,
	0x023c69886,
	0x023c6998e,
	0x020040020,
	0x004800010,
	0x000000027,


@@ 1332,7 1332,7 @@ ulong bootcode[]={
	0x000a0f809,
	0x0ac400000,
	0x08fa4000c,
	0x023c69886,
	0x023c6998e,
	0x008000927,
	0x02484ffff,
	0x08fa30014,


@@ 1352,7 1352,7 @@ ulong bootcode[]={
	0x023a41020,
	0x0afa3000c,
	0x024840004,
	0x00c001261,
	0x00c001257,
	0x0afa40010,
	0x023a6001c,
	0x020020001,


@@ 1389,7 1389,7 @@ ulong bootcode[]={
	0x023a41024,
	0x0afa3000c,
	0x024840004,
	0x00c001261,
	0x00c001257,
	0x0afa40010,
	0x08fa21020,
	0x023a6001c,


@@ 1428,7 1428,7 @@ ulong bootcode[]={
	0x023a40024,
	0x0afa2000c,
	0x024840004,
	0x00c001261,
	0x00c001257,
	0x0afa40010,
	0x08fa20014,
	0x000000027,


@@ 1480,7 1480,7 @@ ulong bootcode[]={
	0x014400008,
	0x000000027,
	0x0afa50004,
	0x00c0017f9,
	0x00c001855,
	0x0afa00008,
	0x08fa20000,
	0x000000027,


@@ 1492,7 1492,7 @@ ulong bootcode[]={
	0x000000027,
	0x000042600,
	0x000042603,
	0x00c0017f9,
	0x00c001855,
	0x0afa40008,
	0x010200004,
	0x000000027,


@@ 1591,7 1591,7 @@ ulong bootcode[]={
	0x08fa20010,
	0x000000027,
	0x0afa20004,
	0x00c0017f9,
	0x00c001855,
	0x0afa00008,
	0x08fa30010,
	0x08fa20000,


@@ 1675,7 1675,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02003001c,
	0x00c001941,
	0x00c00199d,
	0x0afa3000c,
	0x08fa20010,
	0x08fa3001c,


@@ 1685,7 1685,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02003001c,
	0x00c001941,
	0x00c00199d,
	0x0afa3000c,
	0x08fa20010,
	0x08fa3001c,


@@ 1695,7 1695,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02003001c,
	0x00c001941,
	0x00c00199d,
	0x0afa3000c,
	0x08fa5001c,
	0x08fa20010,


@@ 1890,7 1890,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x020020040,
	0x00c001941,
	0x00c00199d,
	0x0afa2000c,
	0x08fa30010,
	0x008000b4f,


@@ 1921,7 1921,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02003001c,
	0x00c001941,
	0x00c00199d,
	0x0afa3000c,
	0x08fa20010,
	0x08fa3001c,


@@ 1931,7 1931,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02003001c,
	0x00c001941,
	0x00c00199d,
	0x0afa3000c,
	0x08fa20010,
	0x08fa3001c,


@@ 1941,7 1941,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02003001c,
	0x00c001941,
	0x00c00199d,
	0x0afa3000c,
	0x08fa20010,
	0x008000b4f,


@@ 2028,7 2028,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02003001c,
	0x00c001941,
	0x00c00199d,
	0x0afa3000c,
	0x08fa20010,
	0x008000b4f,


@@ 2126,7 2126,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02003001c,
	0x00c001941,
	0x00c00199d,
	0x0afa3000c,
	0x08fa6001c,
	0x08fa20010,


@@ 2481,7 2481,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x020020074,
	0x00c001941,
	0x00c00199d,
	0x0afa2000c,
	0x08fa30010,
	0x008000b4f,


@@ 2499,7 2499,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x020030074,
	0x00c001941,
	0x00c00199d,
	0x0afa3000c,
	0x08fa20010,
	0x008000b4f,


@@ 2525,7 2525,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02002001c,
	0x00c001941,
	0x00c00199d,
	0x0afa2000c,
	0x08fa30010,
	0x008000b4f,


@@ 2556,7 2556,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02002001e,
	0x00c001941,
	0x00c00199d,
	0x0afa2000c,
	0x08fa30010,
	0x008000b4f,


@@ 2574,7 2574,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02003001c,
	0x00c001941,
	0x00c00199d,
	0x0afa3000c,
	0x08fa20010,
	0x08fa3001c,


@@ 2584,7 2584,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x020030024,
	0x00c001941,
	0x00c00199d,
	0x0afa3000c,
	0x08fa20010,
	0x008000b4f,


@@ 2651,7 2651,7 @@ ulong bootcode[]={
	0x024a30008,
	0x0afa30008,
	0x020020040,
	0x00c001941,
	0x00c00199d,
	0x0afa2000c,
	0x08fa30010,
	0x08fa2001c,


@@ 2688,7 2688,7 @@ ulong bootcode[]={
	0x024a20008,
	0x0afa20008,
	0x02003001c,
	0x00c001941,
	0x00c00199d,
	0x0afa3000c,
	0x08fa20010,
	0x02003001c,


@@ 2699,7 2699,7 @@ ulong bootcode[]={
	0x000000027,
	0x024420024,
	0x0afa20008,
	0x00c001941,
	0x00c00199d,
	0x0afa3000c,
	0x08fa20010,
	0x02003001c,


@@ 2710,7 2710,7 @@ ulong bootcode[]={
	0x000000027,
	0x024420040,
	0x0afa20008,
	0x00c001941,
	0x00c00199d,
	0x0afa3000c,
	0x08fa20010,
	0x000000027,


@@ 2816,7 2816,7 @@ ulong bootcode[]={
	0x024a2000e,
	0x0afa20008,
	0x02003001c,
	0x00c001941,
	0x00c00199d,
	0x0afa3000c,
	0x08fa20010,
	0x000000027,


@@ 2942,7 2942,7 @@ ulong bootcode[]={
	0x024a2000e,
	0x0afa20008,
	0x02003001c,
	0x00c001941,
	0x00c00199d,
	0x0afa3000c,
	0x08fa70018,
	0x08fa20010,


@@ 3179,7 3179,7 @@ ulong bootcode[]={
	0x000000027,
	0x0afa20008,
	0x08ca3000c,
	0x00c001941,
	0x00c00199d,
	0x0afa3000c,
	0x08fa20018,
	0x08fa30010,


@@ 3216,7 3216,7 @@ ulong bootcode[]={
	0x000000027,
	0x0afa20008,
	0x08ca3000c,
	0x00c001941,
	0x00c00199d,
	0x0afa3000c,
	0x08fa20018,
	0x08fa30010,


@@ 3414,7 3414,7 @@ ulong bootcode[]={
	0x024a30008,
	0x0afa30008,
	0x020020074,
	0x00c001941,
	0x00c00199d,
	0x0afa2000c,
	0x08fa30010,
	0x08fa2001c,


@@ 3438,7 3438,7 @@ ulong bootcode[]={
	0x024a20008,
	0x0afa20008,
	0x020030074,
	0x00c001941,
	0x00c00199d,
	0x0afa3000c,
	0x08fa20010,
	0x000000027,


@@ 3473,7 3473,7 @@ ulong bootcode[]={
	0x024a3000e,
	0x0afa30008,
	0x02002001c,
	0x00c001941,
	0x00c00199d,
	0x0afa2000c,
	0x08fa30010,
	0x08fa2001c,


@@ 3510,7 3510,7 @@ ulong bootcode[]={
	0x024a30024,
	0x0afa30008,
	0x02002001e,
	0x00c001941,
	0x00c00199d,
	0x0afa2000c,
	0x08fa30010,
	0x08fa2001c,


@@ 3534,7 3534,7 @@ ulong bootcode[]={
	0x024a30008,
	0x0afa30008,
	0x02002001c,
	0x00c001941,
	0x00c00199d,
	0x0afa2000c,
	0x08fa30010,
	0x020020024,


@@ 3545,7 3545,7 @@ ulong bootcode[]={
	0x000000027,
	0x024630024,
	0x0afa30008,
	0x00c001941,
	0x00c00199d,
	0x0afa2000c,
	0x08fa30010,
	0x08fa2001c,


@@ 3559,333 3559,369 @@ ulong bootcode[]={
	0x00000000c,
	0x003e00008,
	0x000000027,
	0x023bdfff0,
	0x023bdffec,
	0x0afbf0000,
	0x03c020000,
	0x0344253b0,
	0x0afc2810e,
	0x020030001,
	0x0a3c39831,
	0x020020001,
	0x0a3c29833,
	0x020030001,
	0x0a3c39829,
	0x020020001,
	0x0a3c2986e,
	0x020030001,
	0x0a3c39872,
	0x020020001,
	0x0a3c2987b,
	0x03c030000,
	0x034634d1c,
	0x0afc38112,
	0x020020002,
	0x0a3c2986a,
	0x020030002,
	0x0a3c39875,
	0x020020002,
	0x0a3c2987e,
	0x020030002,
	0x0a3c3985e,
	0x03c020000,
	0x034425464,
	0x0afc28116,
	0x020030003,
	0x0a3c3986b,
	0x020020003,
	0x0a3c2986c,
	0x020030003,
	0x0a3c3986d,
	0x020020003,
	0x0a3c2984b,
	0x020030003,
	0x0a3c3984d,
	0x03c020000,
	0x0344252e8,
	0x0afc2811a,
	0x020030004,
	0x0a3c39869,
	0x03c020000,
	0x034425330,
	0x0afc2811e,
	0x020030005,
	0x0a3c39879,
	0x03c020000,
	0x034425380,
	0x0afc28122,
	0x020030006,
	0x0a3c3982b,
	0x020020007,
	0x0afc2808e,
	0x023c39786,
	0x0afa30004,
	0x020020001,
	0x0afa20008,
	0x020030080,
	0x00c0018ac,
	0x023c28112,
	0x0afa20004,
	0x0afa00008,
	0x0200300a0,
	0x00c001908,
	0x0afa3000c,
	0x0a3c09786,
	0x0a3c0978f,
	0x0a3c09790,
	0x0a3c097ab,
	0x023c68112,
	0x020050001,
	0x000051880,
	0x000661821,
	0x03c040000,
	0x0348454ec,
	0x0ac640000,
	0x0a3c597b9,
	0x0a3c597bb,
	0x0a3c597b1,
	0x0a3c597f6,
	0x0a3c597fa,
	0x0a3c59803,
	0x024a50001,
	0x000051880,
	0x000661821,
	0x03c040000,
	0x034844dac,
	0x0ac640000,
	0x0a3c597f2,
	0x0a3c597fd,
	0x0a3c59806,
	0x0a3c597e6,
	0x024a50001,
	0x000051880,
	0x000661821,
	0x03c040000,
	0x0348455d4,
	0x0ac640000,
	0x0a3c597f3,
	0x0a3c597f4,
	0x0a3c597f5,
	0x0a3c597d3,
	0x0a3c597d5,
	0x024a50001,
	0x000051080,
	0x000461021,
	0x03c040000,
	0x034845418,
	0x0ac440000,
	0x0a3c597f1,
	0x024a50001,
	0x000051080,
	0x000461021,
	0x03c040000,
	0x03484546c,
	0x0ac440000,
	0x0a3c59801,
	0x024a50001,
	0x000051080,
	0x000461021,
	0x03c040000,
	0x0348454bc,
	0x0ac440000,
	0x0a3c597b3,
	0x024a30001,
	0x0afc3808e,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0010,
	0x023bd0014,
	0x023bdfffc,
	0x0afbf0000,
	0x08fc6808e,
	0x08fa60008,
	0x08fc5808e,
	0x000000027,
	0x014c00005,
	0x014a00006,
	0x000000027,
	0x00c0011e8,
	0x000000027,
	0x08fc6808e,
	0x08fa60008,
	0x08fc5808e,
	0x000000027,
	0x083a3000b,
	0x028c20028,
	0x03063007f,
	0x000032e00,
	0x000052e03,
	0x014400005,
	0x004c00019,
	0x000000027,
	0x028c20200,
	0x010400016,
	0x000000027,
	0x028a30028,
	0x014600005,
	0x000000027,
	0x08fa20000,
	0x023bd0004,
	0x000400008,
	0x020010001,
	0x000051600,
	0x000021603,
	0x000021600,
	0x000021603,
	0x023c39806,
	0x000431021,
	0x024c30001,
	0x0afc3808e,
	0x0a0460000,
	0x000051600,
	0x000021603,
	0x000021600,
	0x000021603,
	0x023c39806,
	0x000431021,
	0x080420000,
	0x023c3810a,
	0x000021600,
	0x000021603,
	0x000021080,
	0x000051880,
	0x023c28112,
	0x08fa4000c,
	0x000431021,
	0x0ac440000,
	0x000621821,
	0x0ac640000,
	0x023c2978e,
	0x000461021,
	0x0a0450000,
	0x024a20001,
	0x0afc2808e,
	0x08fa20000,
	0x023bd0004,
	0x000400008,
	0x000000825,
	0x023bdffcc,
	0x08fa20000,
	0x023bd0004,
	0x000400008,
	0x020010001,
	0x023bdffc8,
	0x0afbf0000,
	0x08fab0044,
	0x023ce9786,
	0x08fca80e2,
	0x08fa60040,
	0x08fc2805e,
	0x08fa60044,
	0x08fc3805e,
	0x000000027,
	0x0afa2001c,
	0x08fc380de,
	0x0afa3001c,
	0x08fc280de,
	0x000000027,
	0x0afa30018,
	0x08fa70038,
	0x0afa20018,
	0x08fa3003c,
	0x000000027,
	0x0246fffff,
	0x0afcf80de,
	0x001e74823,
	0x000002825,
	0x000a9202a,
	0x01080000c,
	0x000000027,
	0x000c54021,
	0x081080000,
	0x000000027,
	0x000084600,
	0x000084603,
	0x03102007f,
	0x001c21821,
	0x080630000,
	0x0afc3805e,
	0x08fa20040,
	0x000000027,
	0x0146000aa,
	0x02442fffc,
	0x0afc280de,
	0x080c30000,
	0x000000027,
	0x000c51821,
	0x000e53821,
	0x0afc7805e,
	0x001455021,
	0x0afca80e2,
	0x024660001,
	0x080630000,
	0x020020025,
	0x000031e00,
	0x000031e03,
	0x010620028,
	0x000032825,
	0x014600013,
	0x0306500ff,
	0x02003007f,
	0x00065202a,
	0x0108000e1,
	0x000000027,
	0x000ef202b,
	0x014800002,
	0x0afa60044,
	0x0afa60004,
	0x023a40020,
	0x00c001a41,
	0x0afa40008,
	0x08fa30020,
	0x000012825,
	0x08fa20044,
	0x000000027,
	0x025e7ffff,
	0x000ef202b,
	0x010800002,
	0x000433021,
	0x0afa60044,
	0x010a000c6,
	0x000000027,
	0x0a0e00000,
	0x08fa3001c,
	0x020020009,
	0x010a200bc,
	0x000000027,
	0x0afc3805e,
	0x08fa20018,
	0x02002000a,
	0x010a200b7,
	0x000000027,
	0x0afc280de,
	0x08fa20000,
	0x023bd0034,
	0x000400008,
	0x000070825,
	0x000ef202b,
	0x010800004,
	0x020020025,
	0x010a2001d,
	0x000000027,
	0x000071025,
	0x024e70001,
	0x0a0450000,
	0x02002000a,
	0x014a20003,
	0x0254a0001,
	0x008001271,
	0x000005025,
	0x020020009,
	0x014a2ffc2,
	0x08fc280e2,
	0x000000027,
	0x025430007,
	0x0201cfff8,
	0x0007c5024,
	0x008001271,
	0x024420001,
	0x0afc280e2,
	0x08fc2805e,
	0x08fc380de,
	0x000000027,
	0x02008fc18,
	0x0200dfc18,
	0x000006025,
	0x000062825,
	0x024c60001,
	0x0afa60040,
	0x080a50000,
	0x00043202b,
	0x01080ffd8,
	0x000000027,
	0x000052e00,
	0x000052e03,
	0x014a00003,
	0x02003007f,
	0x00065202a,
	0x014800007,
	0x000000027,
	0x008001271,
	0x024c6ffff,
	0x02002002e,
	0x014a20007,
	0x08fc2805e,
	0x000000027,
	0x02002fc18,
	0x015020002,
	0x024430001,
	0x0afc3805e,
	0x008001267,
	0x0a0450000,
	0x08fc3805e,
	0x000000027,
	0x000004025,
	0x0080012b8,
	0x000006825,
	0x028a20031,
	0x014400025,
	0x0afa30004,
	0x00c001a0b,
	0x0afa50008,
	0x08fa60044,
	0x008001267,
	0x0afc1805e,
	0x02003fc18,
	0x0afa30034,
	0x02002fc18,
	0x0afa20030,
	0x0afa0002c,
	0x080c30000,
	0x000000027,
	0x020030039,
	0x000031e00,
	0x000031e03,
	0x0306500ff,
	0x02003007f,
	0x00065202a,
	0x014800021,
	0x010800085,
	0x000000027,
	0x000004825,
	0x028a30030,
	0x014600005,
	0x0afa60004,
	0x023a40020,
	0x00c001a41,
	0x0afa40008,
	0x08fa30020,
	0x000012825,
	0x08fa20044,
	0x000000027,
	0x000433021,
	0x014a00003,
	0x0afa60044,
	0x008001267,
	0x024c6ffff,
	0x02003002e,
	0x014a30008,
	0x000000027,
	0x08fa20034,
	0x02003fc18,
	0x014430002,
	0x000000027,
	0x0afa00034,
	0x0080012a7,
	0x0afa00030,
	0x028a30031,
	0x014600026,
	0x000000027,
	0x020020039,
	0x00045202a,
	0x01080000c,
	0x014800022,
	0x000000027,
	0x02002fc18,
	0x015020005,
	0x000003825,
	0x028a20030,
	0x014400005,
	0x000000027,
	0x020030039,
	0x00065202a,
	0x01080000d,
	0x000000027,
	0x08fa20034,
	0x02003fc18,
	0x014430005,
	0x000000027,
	0x014a0ffe4,
	0x000094025,
	0x008001271,
	0x014a0ffe2,
	0x0afa70034,
	0x008001267,
	0x024c6ffff,
	0x014a0ffe0,
	0x000096825,
	0x008001271,
	0x014a0ffde,
	0x0afa70030,
	0x008001267,
	0x024c6ffff,
	0x02002000a,
	0x001220018,
	0x000001812,
	0x000651821,
	0x02003000a,
	0x000e30018,
	0x000001012,
	0x000451021,
	0x000062825,
	0x024c60001,
	0x0afa60040,
	0x0afa60044,
	0x080a50000,
	0x000000027,
	0x000052e00,
	0x000052e03,
	0x0080012d4,
	0x02469ffd0,
	0x020030030,
	0x014a30006,
	0x0080012cf,
	0x02447ffd0,
	0x020020030,
	0x014a20007,
	0x000000027,
	0x08fa30034,
	0x02002fc18,
	0x010620003,
	0x000000027,
	0x0080012ce,
	0x000000027,
	0x02003002a,
	0x014a3000e,
	0x000000027,
	0x08fa20048,
	0x08fa30048,
	0x08c450000,
	0x024630004,
	0x0afa30048,
	0x08fa20034,
	0x02003fc18,
	0x011030003,
	0x014430003,
	0x000000027,
	0x0080012a7,
	0x0afa50034,
	0x0080012a7,
	0x0afa50030,
	0x004a00004,
	0x000003025,
	0x028a20200,
	0x014400020,
	0x000000027,
	0x0080012d3,
	0x08fa20048,
	0x000061880,
	0x0afa20004,
	0x08fa40034,
	0x000000027,
	0x02002002a,
	0x014a20009,
	0x0afa40008,
	0x08fa20030,
	0x000000027,
	0x08d650000,
	0x02002fc18,
	0x015020003,
	0x0256b0004,
	0x0080012b8,
	0x000054025,
	0x0080012b8,
	0x000056825,
	0x030a5007f,
	0x0afab0044,
	0x0afab0004,
	0x0afa80030,
	0x0afa80008,
	0x0afad002c,
	0x0afad000c,
	0x0afac0028,
	0x0afac0010,
	0x0afa2000c,
	0x08fa4002c,
	0x023c28112,
	0x0afa40010,
	0x0afa50014,
	0x023c29806,
	0x000451021,
	0x080420000,
	0x023c3810a,
	0x000021600,
	0x000021603,
	0x000021080,
	0x000431021,
	0x08c420000,
	0x000621821,
	0x08c630000,
	0x000000027,
	0x00040f809,
	0x00060f809,
	0x000000027,
	0x08fcf80de,
	0x08fad002c,
	0x08fab0044,
	0x08fca80e2,
	0x08fa80030,
	0x08fc7805e,
	0x08fa60040,
	0x004210005,
	0x023ce9786,
	0x08fa40028,
	0x000011023,
	0x0080012b8,
	0x000826025,
	0x008001271,
	0x001615821,
	0x000e51021,
	0x024a50001,
	0x008001274,
	0x0a0480000,
	0x08fa60044,
	0x004210006,
	0x000000027,
	0x08fa4002c,
	0x000011823,
	0x000832025,
	0x0080012a7,
	0x0afa4002c,
	0x08fa20048,
	0x000000027,
	0x000411021,
	0x008001267,
	0x0afa20048,
	0x023c2978e,
	0x000453021,
	0x080c60000,
	0x000000027,
	0x000063600,
	0x000063603,
	0x00800130d,
	0x000000027,
	0x024c60001,
	0x014a0ff87,
	0x0afa60044,
	0x008001267,
	0x024c6ffff,
	0x00800128a,
	0x0afc080e2,
	0x08fc380e2,
	0x000000027,
	0x024630008,
	0x0201cfff8,
	0x0007c1824,
	0x00800128a,
	0x0afc380e2,
	0x08fc2805e,
	0x000000027,
	0x0a0400000,
	0x08fc1805e,
	0x08fa2001c,
	0x000000027,
	0x0afc2805e,
	0x08fa30018,
	0x000000027,
	0x0afc380de,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0038,
	0x024c60001,
	0x00800127b,
	0x0afa60044,
	0x023bdfff0,
	0x0afbf0000,
	0x08fa40018,


@@ 3902,13 3938,13 @@ ulong bootcode[]={
	0x0afa30004,
	0x0afa40008,
	0x08fa3001c,
	0x00c001422,
	0x00c001446,
	0x0afa3000c,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0010,
	0x00800133a,
	0x00800135e,
	0x000042023,
	0x023bdffa8,
	0x0afbf0000,


@@ 4001,7 4037,7 @@ ulong bootcode[]={
	0x02002fc18,
	0x0afa30008,
	0x0afa2000c,
	0x00c00132f,
	0x00c001353,
	0x0afa70010,
	0x08fa10028,
	0x08fa20000,


@@ 4020,12 4056,12 @@ ulong bootcode[]={
	0x024a5ffff,
	0x001651021,
	0x020040030,
	0x008001396,
	0x0080013ba,
	0x0a0440000,
	0x024a5ffff,
	0x001651021,
	0x020040078,
	0x0080013b2,
	0x0080013d6,
	0x0a0440000,
	0x030e30040,
	0x01060001e,


@@ 4047,27 4083,27 @@ ulong bootcode[]={
	0x000000027,
	0x01d200003,
	0x000000027,
	0x008001387,
	0x0080013ab,
	0x000000027,
	0x01d000003,
	0x000000027,
	0x008001387,
	0x0080013ab,
	0x000000027,
	0x030e20040,
	0x01440ffa0,
	0x024a5ffff,
	0x0010a001b,
	0x00800137c,
	0x0080013a0,
	0x000003010,
	0x0010a001b,
	0x0080013c3,
	0x0080013e7,
	0x000004012,
	0x0200d0001,
	0x008001374,
	0x008001398,
	0x000084023,
	0x08ca80000,
	0x020030004,
	0x00800136f,
	0x008001393,
	0x0afa30028,
	0x08ca20000,
	0x000000027,


@@ 4079,15 4115,15 @@ ulong bootcode[]={
	0x000031c03,
	0x020020004,
	0x0afa20028,
	0x00800136f,
	0x008001393,
	0x000034025,
	0x08ca80000,
	0x020030004,
	0x00800136f,
	0x008001393,
	0x0afa30028,
	0x08ca80000,
	0x020030004,
	0x00800136f,
	0x008001393,
	0x0afa30028,
	0x020030030,
	0x01043000a,


@@ 4095,11 4131,11 @@ ulong bootcode[]={
	0x020030048,
	0x010430003,
	0x000000027,
	0x00800136c,
	0x008001390,
	0x000000027,
	0x08ca90000,
	0x020030004,
	0x00800136f,
	0x008001393,
	0x0afa30028,
	0x08ca30000,
	0x000000027,


@@ 4109,14 4145,14 @@ ulong bootcode[]={
	0x03042ffff,
	0x020030004,
	0x0afa30028,
	0x00800136f,
	0x008001393,
	0x000024025,
	0x00800135c,
	0x008001380,
	0x0200a000a,
	0x0200e0001,
	0x00800135c,
	0x008001380,
	0x0200a0010,
	0x00800135c,
	0x008001380,
	0x0200a0008,
	0x020030075,
	0x011430006,


@@ 4124,137 4160,169 @@ ulong bootcode[]={
	0x020030078,
	0x01143fff7,
	0x000000027,
	0x00800135c,
	0x008001380,
	0x000000027,
	0x0200a000a,
	0x00800135c,
	0x008001380,
	0x034e70020,
	0x023bdfff0,
	0x023bdffe8,
	0x0afbf0000,
	0x08fa30014,
	0x00c000a33,
	0x0afa30004,
	0x08fac0014,
	0x08faa0018,
	0x08fc980de,
	0x08fc880e2,
	0x08fa7001c,
	0x08fc6805e,
	0x02002fc18,
	0x011420003,
	0x000012825,
	0x005410045,
	0x08fcc80e2,
	0x08fab0020,
	0x08fca80de,
	0x08fa90024,
	0x08fa8001c,
	0x08fc7805e,
	0x0afa00014,
	0x02003fc18,
	0x011630003,
	0x000002825,
	0x00561005d,
	0x000000027,
	0x0000c5825,
	0x0816b0000,
	0x081020000,
	0x000000027,
	0x0000b5e00,
	0x0000b5e03,
	0x011600025,
	0x0258c0001,
	0x02002fc18,
	0x010e20005,
	0x000000027,
	0x01ce00003,
	0x000000027,
	0x008001432,
	0x000000027,
	0x000c9202b,
	0x010800005,
	0x000000027,
	0x000061025,
	0x024c60001,
	0x0afc6805e,
	0x0a04b0000,
	0x025080001,
	0x02002000a,
	0x015620008,
	0x0afc880e2,
	0x000004025,
	0x0afc080e2,
	0x02003fc18,
	0x010e3ffe3,
	0x000021600,
	0x000021603,
	0x0304600ff,
	0x02002007f,
	0x00046202a,
	0x010800051,
	0x000000027,
	0x0afa80004,
	0x023a4000c,
	0x00c001a41,
	0x0afa40008,
	0x08fcc80e2,
	0x08fab0020,
	0x08fca80de,
	0x08fa90024,
	0x08fc7805e,
	0x08fa50014,
	0x000013025,
	0x08fa2000c,
	0x08fa3001c,
	0x000000027,
	0x008001432,
	0x024e7ffff,
	0x020020009,
	0x01562fff9,
	0x000624021,
	0x0afa8001c,
	0x014c0001a,
	0x000000027,
	0x025030007,
	0x0201cfff8,
	0x0007c4024,
	0x02003fc18,
	0x010e3ffd8,
	0x0afc880e2,
	0x008001432,
	0x024e7ffff,
	0x02002fc18,
	0x011420003,
	0x011630003,
	0x000000027,
	0x005400005,
	0x005600005,
	0x000000027,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0010,
	0x0000a3823,
	0x000a7202a,
	0x023bd0018,
	0x0000b3023,
	0x000a6202a,
	0x01080fff9,
	0x000000027,
	0x000c9202b,
	0x000ea202b,
	0x010800006,
	0x000000027,
	0x000061825,
	0x024c60001,
	0x0afc6805e,
	0x000071025,
	0x024e70001,
	0x0afc7805e,
	0x020040020,
	0x0a0640000,
	0x025080001,
	0x0a0440000,
	0x0258c0001,
	0x024a50001,
	0x008001479,
	0x0afcc80e2,
	0x024a50001,
	0x008001467,
	0x0afc880e2,
	0x000aa202a,
	0x01080ffba,
	0x02002fc18,
	0x011220005,
	0x0afa50014,
	0x01d200003,
	0x000000027,
	0x008001454,
	0x000000027,
	0x000ea202b,
	0x010800009,
	0x000000027,
	0x02003007f,
	0x00066202a,
	0x01480000b,
	0x000000027,
	0x000c9202b,
	0x000071025,
	0x024e70001,
	0x0afc7805e,
	0x0a0460000,
	0x02002fc18,
	0x01122ffb7,
	0x000000027,
	0x02529ffff,
	0x008001454,
	0x0afa90024,
	0x0afa70004,
	0x00c001a0b,
	0x0afa60008,
	0x08fcc80e2,
	0x08fab0020,
	0x08fca80de,
	0x08fa90024,
	0x08fa8001c,
	0x08fa50014,
	0x0afc1805e,
	0x00800149b,
	0x000013825,
	0x025080001,
	0x00800146d,
	0x0afa8001c,
	0x00c001add,
	0x0afa80004,
	0x08fcc80e2,
	0x08fab0020,
	0x08fca80de,
	0x08fa90024,
	0x08fa8001c,
	0x08fc7805e,
	0x000012825,
	0x000ab202a,
	0x01080ff99,
	0x0afa50014,
	0x000ea202b,
	0x010800006,
	0x000000027,
	0x000061025,
	0x024c60001,
	0x0afc6805e,
	0x000071025,
	0x024e70001,
	0x0afc7805e,
	0x020040020,
	0x0a0440000,
	0x025080001,
	0x0258c0001,
	0x024a50001,
	0x008001476,
	0x0afc880e2,
	0x023bdffe4,
	0x0080014b9,
	0x0afcc80e2,
	0x023bdffd8,
	0x0afbf0000,
	0x08fc2808e,
	0x000000027,
	0x01440001f,
	0x014400028,
	0x000000027,
	0x00c0011e8,
	0x000000027,
	0x08fa40030,
	0x08fa30020,
	0x023c19806,
	0x0afa30004,
	0x08fa20024,
	0x000240821,
	0x0afa20008,
	0x08fa30028,
	0x08fa4003c,
	0x000000027,
	0x004800004,
	0x000002825,
	0x028830200,
	0x014600017,
	0x000000027,
	0x0afa3000c,
	0x08fa2002c,
	0x000050880,
	0x0afa20004,
	0x08fa30030,
	0x000000027,
	0x0afa20010,
	0x0afa30008,
	0x08fa20034,
	0x000000027,
	0x0afa2000c,
	0x08fa30038,
	0x023c28112,
	0x0afa30010,
	0x0afa40014,
	0x080210000,
	0x023c2810a,
	0x000010e00,
	0x000010e03,
	0x000010880,
	0x000220821,
	0x08c210000,
	0x000000027,


@@ 4263,40 4331,51 @@ ulong bootcode[]={
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd001c,
	0x02002002a,
	0x0a3a20018,
	0x08fa30030,
	0x02002002a,
	0x0a3a30019,
	0x0a3a2001a,
	0x0a3a0001b,
	0x023bd0028,
	0x023c3978e,
	0x000642821,
	0x080a50000,
	0x000000027,
	0x000052e00,
	0x000052e03,
	0x0080014d7,
	0x000000027,
	0x023a20018,
	0x0afa20004,
	0x023c380ee,
	0x0afa30008,
	0x08fa2003c,
	0x00c000989,
	0x0afa2000c,
	0x023a30018,
	0x0afa30004,
	0x0afa00008,
	0x02002fc18,
	0x00c001422,
	0x00c001446,
	0x0afa2000c,
	0x08fa20000,
	0x023bd001c,
	0x023bd0028,
	0x000400008,
	0x000000825,
	0x023bdffec,
	0x023bdffe4,
	0x0afbf0000,
	0x08fa30018,
	0x023a20010,
	0x08c630000,
	0x0afa20004,
	0x08fa40020,
	0x000000027,
	0x0a3a30010,
	0x0a3a00011,
	0x08c840000,
	0x00c001a0b,
	0x0afa40008,
	0x0a0200000,
	0x023a20010,
	0x0afa20004,
	0x08fa3001c,
	0x08fa30024,
	0x02002fc18,
	0x0afa30008,
	0x00c001422,
	0x00c001446,
	0x0afa2000c,
	0x08fa20000,
	0x023bd0014,
	0x023bd001c,
	0x000400008,
	0x020010004,
	0x023bdffec,


@@ 4313,7 4392,7 @@ ulong bootcode[]={
	0x000000027,
	0x0afa3000c,
	0x08fa20024,
	0x00c00132f,
	0x00c001353,
	0x0afa20010,
	0x08fa20000,
	0x023bd0014,


@@ 4331,51 4410,64 @@ ulong bootcode[]={
	0x0a0a40000,
	0x003e00008,
	0x000000825,
	0x08fa30014,
	0x020020068,
	0x00043202a,
	0x014800016,
	0x000000027,
	0x010620012,
	0x023bdfff8,
	0x08fa2001c,
	0x020030068,
	0x00062202a,
	0x01480001f,
	0x000002825,
	0x010430019,
	0x000000027,
	0x020020023,
	0x01062000d,
	0x020030023,
	0x010430012,
	0x000000027,
	0x02002002b,
	0x010620008,
	0x02003002b,
	0x01043000b,
	0x000000027,
	0x02002002d,
	0x010620003,
	0x02003002d,
	0x010430004,
	0x000000027,
	0x023bd0008,
	0x003e00008,
	0x000000825,
	0x000050823,
	0x020050002,
	0x023bd0008,
	0x003e00008,
	0x02001fffe,
	0x000050823,
	0x020050001,
	0x023bd0008,
	0x003e00008,
	0x02001ffff,
	0x000050823,
	0x020050004,
	0x023bd0008,
	0x003e00008,
	0x02001fffc,
	0x000050823,
	0x020050010,
	0x023bd0008,
	0x003e00008,
	0x02001fff0,
	0x02002006c,
	0x010620008,
	0x000050823,
	0x02003006c,
	0x01043000b,
	0x000000027,
	0x020020075,
	0x010620003,
	0x020030075,
	0x010430004,
	0x000000027,
	0x023bd0008,
	0x003e00008,
	0x000000825,
	0x000050823,
	0x020050020,
	0x023bd0008,
	0x003e00008,
	0x02001ffe0,
	0x08fa20010,
	0x000000027,
	0x030420008,
	0x010400003,
	0x000050823,
	0x08fa30018,
	0x000000027,
	0x030630008,
	0x01060ffdc,
	0x020050008,
	0x020050040,
	0x023bd0008,
	0x003e00008,
	0x02001ffc0,
	0x003e00008,
	0x02001fff8,
	0x000050823,
	0x023bdff60,
	0x0afbf0000,
	0x08fa200a4,


@@ 4387,18 4479,18 @@ ulong bootcode[]={
	0x0e7a6004c,
	0x0e7a70004,
	0x0e7a60008,
	0x00c0018e8,
	0x00c001944,
	0x000000027,
	0x01020000e,
	0x000000027,
	0x023c280ee,
	0x023c280f3,
	0x0afa20004,
	0x08fa300a8,
	0x02002fc18,
	0x0afa30008,
	0x0afa2000c,
	0x08fa300b0,
	0x00c00132f,
	0x00c001353,
	0x0afa30010,
	0x08fa20000,
	0x023bd00a0,


@@ 4409,18 4501,18 @@ ulong bootcode[]={
	0x020030001,
	0x0e7a10004,
	0x0e7a00008,
	0x00c001918,
	0x00c001974,
	0x0afa3000c,
	0x01020000e,
	0x000000027,
	0x023c280f2,
	0x023c280f7,
	0x0afa20004,
	0x08fa300a8,
	0x02002fc18,
	0x0afa30008,
	0x0afa2000c,
	0x08fa300b0,
	0x00c00132f,
	0x00c001353,
	0x0afa30010,
	0x08fa20000,
	0x023bd00a0,


@@ 4431,21 4523,21 @@ ulong bootcode[]={
	0x02003ffff,
	0x0e7a10004,
	0x0e7a00008,
	0x00c001918,
	0x00c001974,
	0x0afa3000c,
	0x08fad00b4,
	0x08fac00ac,
	0x023a90050,
	0x01020000e,
	0x023ae0078,
	0x023c280f7,
	0x023c280fc,
	0x0afa20004,
	0x08fa300a8,
	0x02002fc18,
	0x0afa30008,
	0x0afa2000c,
	0x08fa300b0,
	0x00c00132f,
	0x00c001353,
	0x0afa30010,
	0x08fa20000,
	0x023bd00a0,


@@ 4489,7 4581,7 @@ ulong bootcode[]={
	0x023a20034,
	0x0e7a10004,
	0x0e7a00008,
	0x00c001825,
	0x00c001881,
	0x0afa2000c,
	0x08fa20034,
	0x04444f800,


@@ 4513,7 4605,7 @@ ulong bootcode[]={
	0x000023043,
	0x0afa60030,
	0x000061023,
	0x00c0017d0,
	0x00c00182c,
	0x0afa20004,
	0x0c7a30048,
	0x0c7a2004c,


@@ 4525,7 4617,7 @@ ulong bootcode[]={
	0x08fa30034,
	0x000000027,
	0x000431023,
	0x00c0017d0,
	0x00c00182c,
	0x0afa20004,
	0x08fad00b4,
	0x023ae0078,


@@ 4548,7 4640,7 @@ ulong bootcode[]={
	0x08fa30034,
	0x000000027,
	0x000431023,
	0x00c0017d0,
	0x00c00182c,
	0x0afa20004,
	0x08fad00b4,
	0x08fac00ac,


@@ 4557,7 4649,7 @@ ulong bootcode[]={
	0x0c7a2003c,
	0x000000027,
	0x046201182,
	0x0080015b9,
	0x008001615,
	0x023ae0078,
	0x0c7c180e6,
	0x0c7c080ea,


@@ 4574,7 4666,7 @@ ulong bootcode[]={
	0x08fa30034,
	0x000000027,
	0x000431023,
	0x00c0017d0,
	0x00c00182c,
	0x0afa20004,
	0x08fad00b4,
	0x08fac00ac,


@@ 4583,7 4675,7 @@ ulong bootcode[]={
	0x0c7a2003c,
	0x000000027,
	0x046201182,
	0x0080015d0,
	0x00800162c,
	0x023ae0078,
	0x02003fc18,
	0x015830002,


@@ 4618,7 4710,7 @@ ulong bootcode[]={
	0x0200cffff,
	0x0afac00ac,
	0x0200d0065,
	0x00800157d,
	0x0080015d9,
	0x0afad00b4,
	0x0c7a70048,
	0x0c7a6004c,


@@ 4632,7 4724,7 @@ ulong bootcode[]={
	0x08fa30034,
	0x02002ffff,
	0x000431023,
	0x00c0017d0,
	0x00c00182c,
	0x0afa20004,
	0x08fad00b4,
	0x023ae0078,


@@ 4654,7 4746,7 @@ ulong bootcode[]={
	0x000671823,
	0x004600134,
	0x0afa7002c,
	0x00c0017d0,
	0x00c00182c,
	0x0afa30004,
	0x0c7a30040,
	0x0c7a20044,


@@ 4663,7 4755,7 @@ ulong bootcode[]={
	0x046201083,
	0x0e7a30004,
	0x0e7a20008,
	0x00c00178e,
	0x00c0017ea,
	0x000000027,
	0x08fad00b4,
	0x023ae0078,


@@ 4721,7 4813,7 @@ ulong bootcode[]={
	0x024e70001,
	0x02484fff6,
	0x0a0440001,
	0x008001660,
	0x0080016bc,
	0x024c6ffff,
	0x010e00007,
	0x0200b0001,


@@ 4789,7 4881,7 @@ ulong bootcode[]={
	0x020030030,
	0x0a0430000,
	0x024e7ffff,
	0x0080016a7,
	0x008001703,
	0x024c60001,
	0x019000013,
	0x000000027,


@@ 4809,7 4901,7 @@ ulong bootcode[]={
	0x0256b0001,
	0x0a0430000,
	0x02508ffff,
	0x0080016b8,
	0x008001714,
	0x024c60001,
	0x08fa300b0,
	0x000000027,


@@ 4838,7 4930,7 @@ ulong bootcode[]={
	0x0afa30008,
	0x0afa2000c,
	0x08fa300b0,
	0x00c00132f,
	0x00c001353,
	0x0afa30010,
	0x08fa20000,
	0x023bd00a0,


@@ 4894,19 4986,19 @@ ulong bootcode[]={
	0x000001810,
	0x024630030,
	0x0a0430000,
	0x0080016df,
	0x00800173b,
	0x024c60001,
	0x000061825,
	0x001231021,
	0x02003002b,
	0x0a0430000,
	0x008001700,
	0x00800175c,
	0x024c60001,
	0x000061025,
	0x001221821,
	0x020020065,
	0x0a0620000,
	0x0080016f6,
	0x008001752,
	0x024c60001,
	0x020030067,
	0x011a30006,


@@ 4914,7 5006,7 @@ ulong bootcode[]={
	0x020030068,
	0x011a30003,
	0x000000027,
	0x0080016d9,
	0x008001735,
	0x000000027,
	0x024c7ffff,
	0x004e00006,


@@ 4934,11 5026,11 @@ ulong bootcode[]={
	0x000000027,
	0x01107ff93,
	0x000073025,
	0x0080016d9,
	0x008001735,
	0x024c60001,
	0x00800173e,
	0x00800179a,
	0x02508ffff,
	0x008001736,
	0x008001792,
	0x024e7ffff,
	0x08fa30034,
	0x02002ffff,


@@ 4948,7 5040,7 @@ ulong bootcode[]={
	0x000003825,
	0x08fa30034,
	0x0200d0068,
	0x008001694,
	0x0080016f0,
	0x001835023,
	0x08fa200b0,
	0x000000027,


@@ 4959,7 5051,7 @@ ulong bootcode[]={
	0x001221821,
	0x02002002b,
	0x0a0620000,
	0x008001685,
	0x0080016e1,
	0x024c60001,
	0x0c7c180e6,
	0x0c7c080ea,


@@ 4969,7 5061,7 @@ ulong bootcode[]={
	0x0e7a60044,
	0x0e7a70004,
	0x0e7a60008,
	0x00c00178e,
	0x00c0017ea,
	0x000000027,
	0x08fad00b4,
	0x023ae0078,


@@ 4996,14 5088,14 @@ ulong bootcode[]={
	0x046222181,
	0x0e7a70040,
	0x0e7a60044,
	0x008001657,
	0x0080016b3,
	0x000000027,
	0x0080015f3,
	0x00800164f,
	0x0258cffff,
	0x020020001,
	0x0afa20014,
	0x025ad0020,
	0x00800157d,
	0x0080015d9,
	0x0afad00b4,
	0x023bdffe8,
	0x0afbf0000,


@@ 5020,7 5112,7 @@ ulong bootcode[]={
	0x04624c081,
	0x0e7a30004,
	0x0e7a20008,
	0x00c001873,
	0x00c0018cf,
	0x0afa2000c,
	0x04620c032,
	0x000000027,


@@ 5049,7 5141,7 @@ ulong bootcode[]={
	0x023a2001c,
	0x0e7a30004,
	0x0e7a20008,
	0x00c001873,
	0x00c0018cf,
	0x0afa2000c,
	0x0c7a1001c,
	0x0c7a00020,


@@ 5065,7 5157,7 @@ ulong bootcode[]={
	0x04624c081,
	0x0e7a30004,
	0x0e7a20008,
	0x00c00178e,
	0x00c0017ea,
	0x000000027,
	0x08fa20000,
	0x023bd000c,


@@ 5078,7 5170,7 @@ ulong bootcode[]={
	0x004810008,
	0x000000027,
	0x000041023,
	0x00c0017d0,
	0x00c00182c,
	0x0afa20004,
	0x08fa20000,
	0x023bd0014,


@@ 5099,12 5191,12 @@ ulong bootcode[]={
	0x000042843,
	0x0afa50010,
	0x000851823,
	0x00c0017d0,
	0x00c00182c,
	0x0afa30004,
	0x0e7a10008,
	0x0e7a0000c,
	0x08fa20010,
	0x00c0017d0,
	0x00c00182c,
	0x0afa20004,
	0x0c7a30008,
	0x0c7a2000c,


@@ 5259,7 5351,7 @@ ulong bootcode[]={
	0x00045202a,
	0x014800013,
	0x000000027,
	0x08fc38102,
	0x08fc3810a,
	0x08fa40008,
	0x000a31807,
	0x0201cffff,


@@ 5281,7 5373,7 @@ ulong bootcode[]={
	0x00065202a,
	0x01480fff3,
	0x000000027,
	0x08fc38106,
	0x08fc3810e,
	0x024a2ffea,
	0x000431007,
	0x0201cffff,


@@ 5289,7 5381,7 @@ ulong bootcode[]={
	0x08fa4000c,
	0x000000027,
	0x000821024,
	0x008001894,
	0x0080018f0,
	0x0afa2000c,
	0x023bdfff0,
	0x08fa3001c,


@@ 5370,7 5462,7 @@ ulong bootcode[]={
	0x000000825,
	0x0e7a50004,
	0x0e7a40008,
	0x00c001918,
	0x00c001974,
	0x0afa0000c,
	0x014200005,
	0x000000027,


@@ 5548,8 5640,256 @@ ulong bootcode[]={
	0x000000027,
	0x0a0c8ffff,
	0x024c6ffff,
	0x0080019a7,
	0x008001a03,
	0x024e7ffff,
	0x08fa50004,
	0x08fa20008,
	0x000000027,
	0x03046ffff,
	0x0200200ff,
	0x00046202a,
	0x014800016,
	0x000000027,
	0x014c00004,
	0x000000027,
	0x000050825,
	0x003e00008,
	0x0a0a60000,
	0x028c30080,
	0x014600005,
	0x000000027,
	0x020020083,
	0x00046202a,
	0x010800004,
	0x000000027,
	0x024a10001,
	0x003e00008,
	0x0a0a60000,
	0x02002ff83,
	0x0a0a20000,
	0x024c2ff81,
	0x024a10002,
	0x003e00008,
	0x0a0a20001,
	0x030c200ff,
	0x014400007,
	0x000000027,
	0x02002ff80,
	0x0a0a20000,
	0x000061203,
	0x024a10002,
	0x003e00008,
	0x0a0a20001,
	0x0200301ff,
	0x00066202a,
	0x014800006,
	0x000000027,
	0x02003ff81,
	0x0a0a30000,
	0x024a10002,
	0x003e00008,
	0x0a0a60001,
	0x02003ff82,
	0x0a0a30000,
	0x000061a03,
	0x0a0a30001,
	0x024a10003,
	0x003e00008,
	0x0a0a60002,
	0x023bdfff4,
	0x08fa60010,
	0x08fa50014,
	0x080c20000,
	0x020030081,
	0x000021600,
	0x000021603,
	0x0304200ff,
	0x000023c00,
	0x000073c03,
	0x030e2ffff,
	0x00062202a,
	0x014800042,
	0x000000027,
	0x010430027,
	0x000000027,
	0x010400016,
	0x000000027,
	0x020030080,
	0x010430009,
	0x000000027,
	0x010a00003,
	0x000000027,
	0x020030001,
	0x0aca30000,
	0x030e1ffff,
	0x023bd000c,
	0x003e00008,
	0x03021ffff,
	0x080c20001,
	0x000000027,
	0x000021600,
	0x000021603,
	0x0304200ff,
	0x000023400,
	0x000063403,
	0x030c3ffff,
	0x014600007,
	0x000000027,
	0x010a00002,
	0x000000027,
	0x0aca00000,
	0x023bd000c,
	0x003e00008,
	0x000000825,
	0x010a00003,
	0x000000027,
	0x020020002,
	0x0aca20000,
	0x030c1ffff,
	0x03021ffff,
	0x023bd000c,
	0x003e00008,
	0x000010a00,
	0x080c20001,
	0x000000027,
	0x000021600,
	0x000021603,
	0x0304200ff,
	0x000023400,
	0x000063403,
	0x030c3ffff,
	0x014600007,
	0x000000027,
	0x010a0ffe9,
	0x000000027,
	0x000000825,
	0x023bd000c,
	0x003e00008,
	0x0aca00000,
	0x010a00003,
	0x000000027,
	0x020020002,
	0x0aca20000,
	0x030c1ffff,
	0x03021ffff,
	0x023bd000c,
	0x003e00008,
	0x024210100,
	0x020030082,
	0x01043001f,
	0x000000027,
	0x020030083,
	0x010430003,
	0x000000027,
	0x008001a56,
	0x000000027,
	0x080c30001,
	0x000000027,
	0x000031e00,
	0x000031e03,
	0x0306300ff,
	0x000033400,
	0x000063403,
	0x030c2ffff,
	0x00002182b,
	0x01060ffc6,
	0x000000027,
	0x030c3ffff,
	0x020020004,
	0x00043202b,
	0x01480ffc1,
	0x000000027,
	0x010a00003,
	0x000000027,
	0x020030002,
	0x0aca30000,
	0x030c1ffff,
	0x03021ffff,
	0x023bd000c,
	0x003e00008,
	0x02421007f,
	0x080c20001,
	0x000000027,
	0x000021600,
	0x000021603,
	0x0304200ff,
	0x000023c00,
	0x000073c03,
	0x030e3ffff,
	0x014600007,
	0x000000027,
	0x010a0ffaf,
	0x000000027,
	0x000000825,
	0x023bd000c,
	0x003e00008,
	0x0aca00000,
	0x080c20002,
	0x000000027,
	0x000021600,
	0x000021603,
	0x0304200ff,
	0x000023400,
	0x000063403,
	0x030c3ffff,
	0x014600007,
	0x000000027,
	0x010a0ff9f,
	0x000000027,
	0x000000825,
	0x023bd000c,
	0x003e00008,
	0x0aca00000,
	0x010a00003,
	0x000000027,
	0x020020003,
	0x0aca20000,
	0x030c1ffff,
	0x03021ffff,
	0x030e2ffff,
	0x03042ffff,
	0x000021200,
	0x023bd000c,
	0x003e00008,
	0x000220821,
	0x023bdffe8,
	0x0afbf0000,
	0x08fa6001c,
	0x000003825,
	0x0afa00010,
	0x080c30000,
	0x000000027,
	0x000031e00,
	0x000031e03,
	0x0306500ff,
	0x02003007f,
	0x00065202a,
	0x010800013,
	0x000000027,
	0x0afa6001c,
	0x0afa60004,
	0x023a40014,
	0x00c001a41,
	0x0afa40008,
	0x08fa70010,
	0x000012825,
	0x08fa30014,
	0x08fa2001c,
	0x014a00005,
	0x000433021,
	0x08fa20000,
	0x023bd0018,
	0x000400008,
	0x000070825,
	0x024e70001,
	0x008001ae2,
	0x0afa70010,
	0x014a0fffc,
	0x024c60001,
	0x08fa20000,
	0x023bd0018,
	0x000400008,
	0x000070825,
	0x000000000,
	0x000000000,
	0x000000000,


@@ 5587,18 5927,18 @@ ulong bootcode[]={
	0x005f5e100,
	0x03b9aca00,
	0x000000000,
	0x0000071a8,
	0x0000071ad,
	0x0000071c2,
	0x0000071c9,
	0x0000071de,
	0x0000071e4,
	0x0000071f9,
	0x0000071b0,
	0x0000071b5,
	0x0000071ca,
	0x0000071d1,
	0x0000071e6,
	0x0000071ec,
	0x000007201,
	0x000007216,
	0x00000721a,
	0x00000722f,
	0x000007236,
	0x000007209,
	0x00000721e,
	0x000007222,
	0x000007237,
	0x00000723e,
	0x000000000,
	0x000000000,
	0x000000000,


@@ 5610,14 5950,16 @@ ulong bootcode[]={
	0x000000000,
	0x040240000,
	0x000000000,
	0x04e614e00,
	0x02b496e66,
	0x0002d496e,
	0x066000000,
	0x02a25632a,
	0x0004e614e,
	0x0002b496e,
	0x066002d49,
	0x06e660000,
	0x000000000,
	0x000000000,
	0x0001fffff,
	0x07fffffff,
	0x000005214,
	0x000005320,
	0x000000000,
	0x000000000,
	0x000000000,


@@ 6001,6 6343,8 @@ ulong bootcode[]={
	0x0632f7469,
	0x06d650000,
	0x000000000,
	0x00005dc8,
	0x00006320,
	0x0,
	0x00006320,
	0x0,
};

M power/main.c => power/main.c +1 -4
@@ 44,9 44,6 @@ char sysname[64];
 */
int ioid;


char	user[NAMELEN] = "bootes";

void
main(void)
{


@@ 258,7 255,7 @@ userinit(void)
	p->fgrp = newfgrp();

	strcpy(p->text, "*init*");
	strcpy(p->user, "bootes");
	strcpy(p->user, eve);
	savefpregs(&initfp);
	p->fpstate = FPinit;


M ss/main.c => ss/main.c +1 -3
@@ 10,8 10,6 @@
#include	<libg.h>
#include	<gnot.h>

char user[NAMELEN];

uchar *intrreg;

void


@@ 135,7 133,7 @@ userinit(void)
	p->fgrp = newfgrp();

	strcpy(p->text, "*init*");
	strcpy(p->user, "bootes");
	strcpy(p->user, eve);
	savefpregs(&initfp);
	p->fpstate = FPinit;