~kris/9p

9hist

48620e74b9f47a6a1275c7527d7ee5cafc61fc06 — David du Colombier 35 years ago 282e75f
Plan 9 from Bell Labs 1990-11-27
M gnot/dat.h => gnot/dat.h +1 -1
@@ 357,7 357,7 @@ struct MMUCache
	MMU	mmu[NMMU];
};

#define	NERR	20
#define	NERR	15
#define	NNOTE	5
#define	NFD	100
struct User

M gnot/devmnt.c => gnot/devmnt.c +8 -6
@@ 669,15 669,16 @@ void
mntxmit(Mnt *m, Mnthdr *mh)
{
	ulong n;
	Mntbuf *mbw, *t;
	Mntbuf *mbw;
	Mnthdr *w, *ow;
	MntQ *q;
	int qlocked, tag, written;

	mh->mbr = mballoc();
	mh->mbr = 0;
	mbw = mballoc();
	if(waserror()){			/* 1 */
		mbfree(mh->mbr);
		if(mh->mbr)
			mbfree(mh->mbr);
		mbfree(mbw);
		nexterror();
	}


@@ 706,6 707,7 @@ mntxmit(Mnt *m, Mnthdr *mh)
	/*
	 * Read response
	 */
	mh->mbr = mballoc();
	n = (*devtab[q->msg->type].read)(q->msg, mh->mbr->buf, BUFSIZE);
	mqfree(q);
	poperror();		/* 2 */


@@ 772,6 774,7 @@ mntxmit(Mnt *m, Mnthdr *mh)
			mnterrdequeue(m, mh);
			nexterror();
		}
		mh->mbr = mballoc();
		n = (*devtab[q->msg->type].read)(q->msg, mh->mbr->buf, BUFSIZE);
		poperror();		/* 3 */
		if(convM2S(mh->mbr->buf, &mh->rhdr, n) == 0){


@@ 808,9 811,8 @@ mntxmit(Mnt *m, Mnthdr *mh)
		w = &mnthdralloc.arena[tag];
		if(w->flushing || !w->active)	/* nothing to do; mntflush will clean up */
			goto Read;
		t = mh->mbr;
		mh->mbr = w->mbr;
		w->mbr = t;
		w->mbr = mh->mbr;
		mh->mbr = 0;
		memcpy(&w->rhdr, &mh->rhdr, sizeof mh->rhdr);
		mntwunlink(q, w);
		w->readreply = 1;

M gnot/errno.h => gnot/errno.h +1 -1
@@ 59,5 59,5 @@ enum{
	Enoasync,	/* out of async stream modules */
	Enopipe,	/* out of pipes */
	Enofilsys,	/* out of filsys resources */
	Egreg,		/* ken hasn't implemented datakit */
	Egreg,		/* ken has implemented datakit */
};

M gnot/main.c => gnot/main.c +3 -3
@@ 314,11 314,11 @@ confinit(void)
	conf.nmtab = 50*mul;
	conf.nmount = 80*mul;
	conf.nmntdev = 10*mul;
	conf.nmntbuf = 2*conf.nmntdev;
	conf.nmntbuf = conf.nmntdev;
	conf.nmnthdr = 2*conf.nmntdev;
	conf.nstream = 40 + 16*mul;		/* was 64 */
	conf.nstream = 40 + 32*mul;
	conf.nqueue = 5 * conf.nstream;
	conf.nblock = 24 * conf.nstream;	/* was 32 */
	conf.nblock = 24 * conf.nstream;
	conf.nsrv = 16*mul;			/* was 32 */
	conf.nbitmap = 300*mul;
	conf.nbitbyte = 300*1024*mul;

M gnot/stream.c => gnot/stream.c +79 -13
@@ 35,7 35,6 @@ static Qinfo *lds;
 */
Stream *slist;
Queue *qlist;
Block *blist;
static Lock garbagelock;

/*


@@ 44,6 43,8 @@ static Lock garbagelock;
 */
typedef struct {
	int	size;
	int	lim;
	int	made;
	Blist;
	QLock;		/* qlock for sleepers on r */
	Rendez	r;	/* sleep here waiting for blocks */


@@ 66,29 67,24 @@ void
streaminit(void)
{
	int class, i, n;
	Block *bp;
	Bclass *bcp;

	/*
	 *  allocate blocks, queues, and streams
	 *  allocate queues, streams
	 */
	slist = (Stream *)ialloc(conf.nstream * sizeof(Stream), 0);
	qlist = (Queue *)ialloc(conf.nqueue * sizeof(Queue), 0);
	blist = (Block *)ialloc(conf.nblock * sizeof(Block), 0);
	bp = blist;

	/*
	 *  set limits on blocks
	 */
	n = conf.nblock;
	for(class = 0; class < Nclass; class++){
		if(class < Nclass-1)
			n = n/2;
		bcp = &bclass[class];
		for(i = 0; i < n; i++) {
			if(bcp->size)
				bp->base = (uchar *)ialloc(bcp->size, 0);
			bp->lim = bp->base + bcp->size;
			bp->flags = class;
			freeb(bp);
			bp++;
		}
		bcp->lim = n;
		bcp->made = 0;
	}

	/*


@@ 111,6 107,74 @@ newqinfo(Qinfo *qi)
}

/*
 *  upgrade a block 0 block to another class (called with bcp qlocked)
 */
newblock(Bclass *bcp)
{
	Page *page;
	int n;
	Block *bp;
	uchar *cp;

	if(bcp->made > bcp->lim)
		return;

	if(bcp == bclass){
		/*
		 *  create some level zero blocks and return
		 */
		page = newpage(1, 0, 0);
		page->va = VA(kmap(page));
		n = BY2PG/sizeof(Block);
		bp = (Block *)(page->va);
		while(n-- > 0){
			bp->flags = 0;
			bp->base = bp->lim = bp->rptr = bp->wptr = 0;
			if(bcp->first)
				bcp->last->next = bp;
			else
				bcp->first = bp;
			bcp->last = bp;
			bcp->made++;
			bp++;
		}
	} else {
		/*
		 *  create a page worth of new blocks
		 */
		page = newpage(1, 0, 0);
		page->va = VA(kmap(page));
		n = BY2PG/bcp->size;
		cp = (uchar *)(page->va);
		
		while(n-- > 0){
			/*
			 *  upgrade a level 0 block
			 */
			bp = allocb(0);
			qlock(bclass);
			bclass->made--;
			bcp->made++;
			bp->flags = bcp - bclass;
			qunlock(bclass);

			/*
			 *  tack on the data area
			 */
			bp->base = bp->rptr = bp->wptr = cp;
			cp += bcp->size;
			bp->lim = cp;
			if(bcp->first)
				bcp->last->next = bp;
			else
				bcp->first = bp;
			bcp->last = bp;
		}
	}
	return;
}

/*
 *  allocate a block
 */
static int


@@ 138,6 202,8 @@ allocb(ulong size)
	 */
	lock(bcp);
	while(bcp->first == 0){
		if(newblock(bcp) == 0)
			continue;
		unlock(bcp);
		qlock(bcp);
		if(waserror()){

M gnot/trap.c => gnot/trap.c +2 -2
@@ 91,10 91,10 @@ trap(Ureg *ur)
	if(u)
		u->p->pc = ur->pc;		/* BUG */
	if(user){
		sprint(buf, "sys: trap: %s", ur->pc, excname(ur->vo));
		sprint(buf, "sys: trap: pc=0x%lux %s", ur->pc, excname(ur->vo));
		postnote(u->p, 1, buf, NDebug);
	}else{
		print("kernel trap vo=0x%ux pc=%lux\n", ur->vo, ur->pc);
		print("kernel trap vo=0x%ux pc=0x%lux\n", ur->vo, ur->pc);
		dumpregs(ur);
		exit();
	}

M port/devboot.c => port/devboot.c +6 -4
@@ 13,8 13,8 @@ enum{
};

Dirtab bootdir[]={
	"boot",		Qboot,		0,			0666,
	"mem",		Qmem,		0,			0666,
	"boot",		{Qboot},	0,	0666,
	"mem",		{Qmem},		0,	0666,
};

#define	NBOOT	(sizeof bootdir/sizeof(Dirtab))


@@ 76,7 76,7 @@ bootclose(Chan *c)
long	 
bootread(Chan *c, void *buf, long n)
{
	switch(c->qid & ~CHDIR){
	switch(c->qid.path & ~CHDIR){
	case Qdir:
		return devdirread(c, buf, n, bootdir, NBOOT, devgen);
	}


@@ 89,7 89,7 @@ bootwrite(Chan *c, void *buf, long n)
{
	ulong pc;

	switch(c->qid & ~CHDIR){
	switch(c->qid.path & ~CHDIR){
	case Qmem:
		/* kernel memory.  BUG: shouldn't be so easygoing. BUG: mem mapping? */
		if(c->offset>=KZERO && c->offset<KZERO+conf.npage*BY2PG){


@@ 99,6 99,7 @@ bootwrite(Chan *c, void *buf, long n)
			memcpy((char*)c->offset, buf, n);
			return n;
		}
		print("bootwrite: bad addr %lux\n", c->offset);
		error(Ebadarg);

	case Qboot:


@@ 106,6 107,7 @@ bootwrite(Chan *c, void *buf, long n)
		splhi();
		gotopc(pc);
	}
	print("bootwrite: bad path %d\n", c->qid.path);
	error(Ebadarg);
}


M port/devmnt.c => port/devmnt.c +8 -6
@@ 669,15 669,16 @@ void
mntxmit(Mnt *m, Mnthdr *mh)
{
	ulong n;
	Mntbuf *mbw, *t;
	Mntbuf *mbw;
	Mnthdr *w, *ow;
	MntQ *q;
	int qlocked, tag, written;

	mh->mbr = mballoc();
	mh->mbr = 0;
	mbw = mballoc();
	if(waserror()){			/* 1 */
		mbfree(mh->mbr);
		if(mh->mbr)
			mbfree(mh->mbr);
		mbfree(mbw);
		nexterror();
	}


@@ 706,6 707,7 @@ mntxmit(Mnt *m, Mnthdr *mh)
	/*
	 * Read response
	 */
	mh->mbr = mballoc();
	n = (*devtab[q->msg->type].read)(q->msg, mh->mbr->buf, BUFSIZE);
	mqfree(q);
	poperror();		/* 2 */


@@ 772,6 774,7 @@ mntxmit(Mnt *m, Mnthdr *mh)
			mnterrdequeue(m, mh);
			nexterror();
		}
		mh->mbr = mballoc();
		n = (*devtab[q->msg->type].read)(q->msg, mh->mbr->buf, BUFSIZE);
		poperror();		/* 3 */
		if(convM2S(mh->mbr->buf, &mh->rhdr, n) == 0){


@@ 808,9 811,8 @@ mntxmit(Mnt *m, Mnthdr *mh)
		w = &mnthdralloc.arena[tag];
		if(w->flushing || !w->active)	/* nothing to do; mntflush will clean up */
			goto Read;
		t = mh->mbr;
		mh->mbr = w->mbr;
		w->mbr = t;
		w->mbr = mh->mbr;
		mh->mbr = 0;
		memcpy(&w->rhdr, &mh->rhdr, sizeof mh->rhdr);
		mntwunlink(q, w);
		w->readreply = 1;

M port/stream.c => port/stream.c +80 -14
@@ 35,7 35,6 @@ static Qinfo *lds;
 */
Stream *slist;
Queue *qlist;
Block *blist;
static Lock garbagelock;

/*


@@ 44,6 43,8 @@ static Lock garbagelock;
 */
typedef struct {
	int	size;
	int	lim;
	int	made;
	Blist;
	QLock;		/* qlock for sleepers on r */
	Rendez	r;	/* sleep here waiting for blocks */


@@ 66,29 67,24 @@ void
streaminit(void)
{
	int class, i, n;
	Block *bp;
	Bclass *bcp;

	/*
	 *  allocate blocks, queues, and streams
	 *  allocate queues, streams
	 */
	slist = (Stream *)ialloc(conf.nstream * sizeof(Stream), 0);
	qlist = (Queue *)ialloc(conf.nqueue * sizeof(Queue), 0);
	blist = (Block *)ialloc(conf.nblock * sizeof(Block), 0);
	bp = blist;

	/*
	 *  set limits on blocks
	 */
	n = conf.nblock;
	for(class = 0; class < Nclass; class++){
		if(class < Nclass-1)
			n = n/2;
		bcp = &bclass[class];
		for(i = 0; i < n; i++) {
			if(bcp->size)
				bp->base = (uchar *)ialloc(bcp->size, 0);
			bp->lim = bp->base + bcp->size;
			bp->flags = class;
			freeb(bp);
			bp++;
		}
		bcp->lim = n;
		bcp->made = 0;
	}

	/*


@@ 111,6 107,74 @@ newqinfo(Qinfo *qi)
}

/*
 *  upgrade a block 0 block to another class (called with bcp qlocked)
 */
newblock(Bclass *bcp)
{
	Page *page;
	int n;
	Block *bp;
	uchar *cp;

	if(bcp->made > bcp->lim)
		return;

	if(bcp == bclass){
		/*
		 *  create some level zero blocks and return
		 */
		page = newpage(1, 0, 0);
		page->va = VA(kmap(page));
		n = BY2PG/sizeof(Block);
		bp = (Block *)(page->va);
		while(n-- > 0){
			bp->flags = 0;
			bp->base = bp->lim = bp->rptr = bp->wptr = 0;
			if(bcp->first)
				bcp->last->next = bp;
			else
				bcp->first = bp;
			bcp->last = bp;
			bcp->made++;
			bp++;
		}
	} else {
		/*
		 *  create a page worth of new blocks
		 */
		page = newpage(1, 0, 0);
		page->va = VA(kmap(page));
		n = BY2PG/bcp->size;
		cp = (uchar *)(page->va);
		
		while(n-- > 0){
			/*
			 *  upgrade a level 0 block
			 */
			bp = allocb(0);
			qlock(bclass);
			bclass->made--;
			bcp->made++;
			bp->flags = bcp - bclass;
			qunlock(bclass);

			/*
			 *  tack on the data area
			 */
			bp->base = bp->rptr = bp->wptr = cp;
			cp += bcp->size;
			bp->lim = cp;
			if(bcp->first)
				bcp->last->next = bp;
			else
				bcp->first = bp;
			bcp->last = bp;
		}
	}
	return;
}

/*
 *  allocate a block
 */
static int


@@ 138,6 202,8 @@ allocb(ulong size)
	 */
	lock(bcp);
	while(bcp->first == 0){
		if(newblock(bcp) == 0)
			continue;
		unlock(bcp);
		qlock(bcp);
		if(waserror()){


@@ 846,7 912,7 @@ streamclose(Chan *c)
	 *  if no stream, ignore it
	 */
	if(!c->stream)
		return 1;
		return;
	return streamclose1(c->stream);
}


M power/bboot.c => power/bboot.c +171 -70
@@ 4,7 4,7 @@
#include <fcall.h>

#define DEFFILE "/mips/9"
#define DEFSYS "bitbootes"
#define DEFSYS "bit!bootes"

Fcall	hdr;
char	*sys;


@@ 23,16 23,14 @@ typedef
struct address {
	char *name;
	char *cmd;
	char *srvname;
} Address;

Address addr[] = {
	{ "bitbootes", "bitconnect", "bit!bootes" },
	{ "ross", "connect 020701005eff", "nonet!ross" },
	{ "bootes", "connect 080069020205", "nonet!bootes" },
	{ "helix", "connect 080069020427", "nonet!helix" },
	{ "spindle", "connect 0800690202df", "nonet!spindle" },
	{ "r70", "connect 08002b04265d", "nonet!r70" },
	{ "ross", "connect 020701005eff" },
	{ "bootes", "connect 080069020205" },
	{ "helix", "connect 080069020427" },
	{ "spindle", "connect 0800690202df" },
	{ "r70", "connect 08002b04265d" },
	{ 0 }
};



@@ 62,7 60,9 @@ struct a_out_h {
/*
 *  predeclared
 */
Address* lookup(char *);
int	dkdial(char *);
int	nonetdial(char *);
int	bitdial(char *);
int	readseg(int, int, long, long, int);
int	readkernel(int);
int	readconf(int);


@@ 115,99 115,193 @@ main(int argc, char *argv[])
			close(fd);
		if(cfd > 0)
			close(cfd);
		if(efd > 0)
			close(efd);
		fd = cfd = efd = 0;
		fd = cfd = 0;
		boot(1, sysname);
	}
}

void
boot(int ask, char *addr)
int
bitdial(char *arg)
{
	int n;
	char conffile[128];
	return open("#3/bit3", ORDWR);
}

int
nonetdial(char *arg)
{
	int efd, cfd, fd;
	Address *a;
	static int mounted;

	if(ask){
		outin("bootfile", bootfile, bbuf, sizeof(bbuf));
		bootfile = bbuf;
		outin("server", sys, sbuf, sizeof(sbuf));
		sys = sbuf;
	for(a = addr; a->name; a++){
		if(strcmp(a->name, arg) == 0)
			break;
	}

	a = lookup(sys);
	if(a == 0){
		fprint(2, "boot: %s unknown\n", sys);
		return;
	if(a->name == 0){
		print("can't convert nonet address to ether address\n");
		return -1;
	}
	scmd = a->cmd;

	/*
	 *  for the bit, we skip all the ether goo
	 */
	if(strcmp(scmd, "bitconnect") == 0){
		fd = open("#3/bit3", ORDWR);
		if(fd < 0){
			prerror("opening #3/bit3");
			return;
	if(!mounted){
		/*
		 *  grab a lance channel, make it recognize ether type 0x900,
		 *  and push the nonet ethernet multiplexor onto it.
		 */
		efd = open("#l/1/ctl", 2);
		if(efd < 0){
			prerror("opening #l/1/ctl");
			return -1;
		}
		if(write(efd, "connect 0x900", sizeof("connect 0x900")-1)<0){
			close(efd);
			prerror("connect 0x900");
			return -1;
		}
		if(write(efd, "push noether", sizeof("push noether")-1)<0){
			close(efd);
			prerror("push noether");
			return -1;
		}
		if(write(efd, "config nonet", sizeof("config nonet")-1)<0){
			close(efd);
			prerror("config nonet");
			return -1;
		}
		goto Mesg;
		mounted = 1;
	}

	/*
	 *  grab a lance channel, make it recognize ether type 0x900,
	 *  and push the nonet ethernet multiplexor onto it.
	 *  grab a nonet channel and call up the file server
	 */
	cfd = open("#l/1/ctl", 2);
	if(cfd < 0){
		prerror("opening #l/1/ctl");
		return;
	fd = open("#nnonet/2/data", 2);
	if(fd < 0) {
		prerror("opening #nnonet/2/data");
		return -1;
	}
	if(write(cfd, "connect 0x900", sizeof("connect 0x900")-1)<0){
		prerror("connect 0x900");
		return;
	cfd = open("#nnonet/2/ctl", 2);
	if(cfd < 0){
		close(fd);
		fd = -1;
		prerror("opening #nnonet/2/ctl");
		return -1;
	}
	if(write(cfd, "push noether", sizeof("push noether")-1)<0){
		prerror("push noether");
		return;
	if(write(cfd, a->cmd, strlen(a->cmd))<0){
		close(cfd);
		close(fd);
		cfd = fd = -1;
		prerror(a->cmd);
		return -1;
	}
	if(write(cfd, "config nonet", sizeof("config nonet")-1)<0){
		prerror("config nonet");
		return;
	return fd;
}

int
dkdial(char *arg)
{
	int fd;
	char cmd[64];
	static int mounted;

	if(!mounted){
		/*
		 *  grab the hsvme and configure it for a datakit
		 */
		efd = open("#h/ctl", 2);
		if(efd < 0){
			prerror("opening #h/ctl");
			return -1;
		}
		if(write(efd, "push dkmux", sizeof("push dkmux")-1)<0){
			close(efd);
			prerror("push dkmux");
			return -1;
		}
		if(write(efd, "config 4 256 restart dk", sizeof("config 4 256 restart dk")-1)<0){
			close(efd);
			prerror("config 4 256 restart dk");
			return -1;
		}
		mounted = 1;
		sleep(2000);		/* wait for things to settle down */
	}

	/*
	 *  grab a nonet channel and call up the ross file server
	 *  grab a datakit channel and call up the file server
	 */
	fd = open("#nnonet/2/data", 2);
	fd = open("#kdk/5/data", 2);
	if(fd < 0) {
		prerror("opening #n/2/data");
		return;
		prerror("opening #kdk/5/data");
		return -1;
	}
	cfd = open("#nnonet/2/ctl", 2);
	cfd = open("#kdk/5/ctl", 2);
	if(cfd < 0){
		prerror("opening #n/2/ctl");
		return;
		close(fd);
		fd = -1;
		prerror("opening #kdk/5/ctl");
		return -1;
	}
	if(write(cfd, scmd, strlen(scmd))<0){
		prerror(scmd);
	sprint(cmd, "connect %s", arg);
	if(write(cfd, cmd, strlen(cmd))<0){
		close(cfd);
		close(fd);
		cfd = fd = -1;
		prerror(cmd);
		return -1;
	}
	return fd;
}

void
boot(int ask, char *addr)
{
	int n, tries;
	char conffile[128];
	char *srvname;

	if(ask){
		outin("bootfile", bootfile, bbuf, sizeof(bbuf));
		bootfile = bbuf;
		outin("server", sys, sbuf, sizeof(sbuf));
		sys = sbuf;
	}

	for(tries = 0; tries < 5; tries++){
		fd = -1;
		if(strncmp(sys, "bit!", 4) == 0)
			fd = bitdial(srvname = &sys[4]);
		else if(strncmp(sys, "dk!", 3) == 0)
			fd = dkdial(srvname = &sys[3]);
		else if(strncmp(sys, "nonet!", 5) == 0)
			fd = nonetdial(srvname = &sys[5]);
		else
			fd = nonetdial(srvname = sys);
		if(fd >= 0)
			break;
		print("can't connect, retrying...\n");
		sleep(1000);
	}
	if(fd < 0){
		print("can't connect\n");
		return;
	}

    Mesg:
	print("nop...");
	hdr.type = Tnop;
	hdr.tag = ~0;
	n = convS2M(&hdr, buf);
	if(write(fd, buf, n) != n){
		print("n = %d\n", n);
		prerror("write nop");
		return;
	}
  reread:
	n = read(fd, buf, sizeof buf);
	if(n <= 0){
		prerror("read nop");
		return;
	}
	if(n == 2)
		goto reread;
	if(convM2S(buf, &hdr, n) == 0) {
		print("n = %d; buf = %.2x %.2x %.2x %.2x\n",
			n, buf[0], buf[1], buf[2], buf[3]);


@@ 218,10 312,14 @@ boot(int ask, char *addr)
		prerror("not Rnop");
		return;
	}
	if(hdr.tag != ~0){
		prerror("tag not ~0");
		return;
	}

	print("session...");
	hdr.type = Tsession;
	hdr.lang = 'v';
	hdr.tag = ~0;
	n = convS2M(&hdr, buf);
	if(write(fd, buf, n) != n){
		prerror("write session");


@@ 236,13 334,16 @@ boot(int ask, char *addr)
		prerror("format session");
		return;
	}
	if(hdr.type != Rsession){
		prerror("not Rsession");
	if(hdr.tag != ~0){
		prerror("tag not ~0");
		return;
	}
	if(hdr.type == Rerror){
		fprint(2, "boot: error %s\n", hdr.ename);
		return;
	}
	if(hdr.err){
		print("error %d;", hdr.err);
		prerror("remote error");
	if(hdr.type != Rsession){
		prerror("not Rsession");
		return;
	}



@@ 251,7 352,7 @@ boot(int ask, char *addr)
		prerror("bind");
		return;
	}
	if(mount(fd, "/", MAFTER|MCREATE, "") < 0){
	if(mount(fd, "/", MAFTER|MCREATE, "", "") < 0){
		prerror("mount");
		return;
	}


@@ 283,7 384,7 @@ prerror(char *s)
{
	char buf[64];

	errstr(0, buf);
	errstr(buf);
	fprint(2, "boot: %s: %s\n", s, buf);
}



@@ 295,7 396,7 @@ error(char *s)
{
	char buf[64];

	errstr(0, buf);
	errstr(buf);
	fprint(2, "boot: %s: %s\n", s, buf);
	exits(0);
}

M power/boot.c => power/boot.c +151 -78
@@ 2,7 2,7 @@
#include <libc.h>
#include <fcall.h>

#define DEFSYS "bitbootes"
#define DEFSYS "bit!bootes"
#define DEFFILE "/mips/9"

Fcall	hdr;


@@ 21,27 21,27 @@ typedef
struct address {
	char *name;
	char *cmd;
	char *srvname;
} Address;

Address addr[] = {
	{ "bitbootes", "bitconnect", "bit!bootes" },
	{ "ross", "connect 020701005eff", "nonet!ross" },
	{ "bootes", "connect 080069020205", "nonet!bootes" },
	{ "helix", "connect 080069020427", "nonet!helix" },
	{ "spindle", "connect 0800690202df", "nonet!spindle" },
	{ "r70", "connect 08002b04265d", "nonet!r70" },
	{ "ross", "connect 020701005eff" },
	{ "bootes", "connect 080069020205" },
	{ "helix", "connect 080069020427" },
	{ "spindle", "connect 0800690202df" },
	{ "r70", "connect 08002b04265d" },
	{ 0 }
};

/*
 *  predeclared
 */
Address* lookup(char *);
int	outin(char *, char *, char *, int);
void	prerror(char *);
void	error(char *);
void	boot(int);
int	dkdial(char *);
int	nonetdial(char *);
int	bitdial(char *);

/*
 *  usage: 9b [-a] [server] [file]


@@ 95,83 95,173 @@ main(int argc, char *argv[])
			close(fd);
		if(cfd > 0)
			close(cfd);
		if(efd > 0)
			close(efd);
		fd = cfd = efd = 0;
		fd = cfd = 0;
		boot(1);
	}
}

void
boot(int ask)
int
bitdial(char *arg)
{
	int n, f;
	return open("#3/bit3", ORDWR);
}

int
nonetdial(char *arg)
{
	int efd, cfd, fd;
	Address *a;
	static int mounted;

	if(ask){
		outin("server", sys, sbuf, sizeof(sbuf));
		sys = sbuf;
	for(a = addr; a->name; a++){
		if(strcmp(a->name, arg) == 0)
			break;
	}
	a = lookup(sys);
	if(a == 0){
		fprint(2, "boot: %s unknown\n", sys);
		return;
	if(a->name == 0){
		print("can't convert nonet address to ether address\n");
		return -1;
	}
	scmd = a->cmd;

	/*
	 *  for the bit, we skip all the ether goo
	 */
	if(strcmp(scmd, "bitconnect") == 0){
		fd = open("#3/bit3", ORDWR);
		if(fd < 0){
			prerror("opening #3/bit3");
			return;
	if(!mounted){
		/*
		 *  grab a lance channel, make it recognize ether type 0x900,
		 *  and push the nonet ethernet multiplexor onto it.
		 */
		efd = open("#l/1/ctl", 2);
		if(efd < 0){
			prerror("opening #l/1/ctl");
			return -1;
		}
		if(write(efd, "connect 0x900", sizeof("connect 0x900")-1)<0){
			close(efd);
			prerror("connect 0x900");
			return -1;
		}
		if(write(efd, "push noether", sizeof("push noether")-1)<0){
			close(efd);
			prerror("push noether");
			return -1;
		}
		if(write(efd, "config nonet", sizeof("config nonet")-1)<0){
			close(efd);
			prerror("config nonet");
			return -1;
		}
		goto Mesg;
		mounted = 1;
	}

	/*
	 *  grab a lance channel, make it recognize ether type 0x900,
	 *  and push the nonet ethernet multiplexor onto it.
	 *  grab a nonet channel and call up the file server
	 */
	efd = open("#l/1/ctl", 2);
	if(efd < 0){
		prerror("opening #l/1/ctl");
		return;
	fd = open("#nnonet/2/data", 2);
	if(fd < 0) {
		prerror("opening #nnonet/2/data");
		return -1;
	}
	if(write(efd, "connect 0x900", sizeof("connect 0x900")-1)<0){
		prerror("connect 0x900");
		return;
	cfd = open("#nnonet/2/ctl", 2);
	if(cfd < 0){
		close(fd);
		fd = -1;
		prerror("opening #nnonet/2/ctl");
		return -1;
	}
	if(write(efd, "push noether", sizeof("push noether")-1)<0){
		prerror("push noether");
		return;
	if(write(cfd, a->cmd, strlen(a->cmd))<0){
		close(cfd);
		close(fd);
		fd = cfd = -1;
		prerror(a->cmd);
		return -1;
	}
	if(write(efd, "config nonet", sizeof("config nonet")-1)<0){
		prerror("config nonet");
		return;
	return fd;
}

int
dkdial(char *arg)
{
	int fd;
	char cmd[64];
	static int mounted;

	if(!mounted){
		/*
		 *  grab the hsvme and configure it for a datakit
		 */
		efd = open("#h/ctl", 2);
		if(efd < 0){
			prerror("opening #h/ctl");
			return -1;
		}
		if(write(efd, "push dkmux", sizeof("push dkmux")-1)<0){
			close(efd);
			prerror("push dkmux");
			return -1;
		}
		if(write(efd, "config 4 256 restart dk", sizeof("config 4 256 restart dk")-1)<0){
			close(efd);
			prerror("config 4 256 restart dk");
			return -1;
		}
		mounted = 1;
		sleep(2000);		/* wait for things to settle down */
	}

	/*
	 *  grab a nonet channel and call up the ross file server
	 *  grab a datakit channel and call up the file server
	 */
	fd = open("#nnonet/2/data", 2);
	fd = open("#kdk/5/data", 2);
	if(fd < 0) {
		prerror("opening #nnonet/2/data");
		return;
		prerror("opening #kdk/5/data");
		return -1;
	}
	cfd = open("#nnonet/2/ctl", 2);
	cfd = open("#kdk/5/ctl", 2);
	if(cfd < 0){
		prerror("opening #nnonet/2/ctl");
		return;
		close(fd);
		fd = -1;
		prerror("opening #kdk/5/ctl");
		return -1;
	}
	sprint(cmd, "connect %s", arg);
	if(write(cfd, cmd, strlen(cmd))<0){
		close(cfd);
		close(fd);
		cfd = fd = -1;
		prerror(cmd);
		return -1;
	}
	if(write(cfd, scmd, strlen(scmd))<0){
		prerror(scmd);
	return fd;
}

void
boot(int ask)
{
	int n, f, tries;
	char *srvname;

	if(ask){
		outin("server", sys, sbuf, sizeof(sbuf));
		sys = sbuf;
	}

	for(tries = 0; tries < 5; tries++){
		fd = -1;
		if(strncmp(sys, "bit!", 4) == 0)
			fd = bitdial(srvname = &sys[4]);
		else if(strncmp(sys, "dk!", 3) == 0)
			fd = dkdial(srvname = &sys[3]);
		else if(strncmp(sys, "nonet!", 5) == 0)
			fd = nonetdial(srvname = &sys[5]);
		else
			fd = nonetdial(srvname = sys);
		if(fd >= 0)
			break;
		print("can't connect, retrying...\n");
		sleep(1000);
	}
	if(fd < 0){
		print("can't connect\n");
		return;
	}

    Mesg:
	print("nop...");
	hdr.type = Tnop;
	hdr.tag = ~0;


@@ 181,11 271,14 @@ boot(int ask)
		prerror("write nop");
		return;
	}
  reread:
	n = read(fd, buf, sizeof buf);
	if(n <= 0){
		prerror("read nop");
		return;
	}
	if(n == 2)
		goto reread;
	if(convM2S(buf, &hdr, n) == 0) {
		print("n = %d; buf = %.2x %.2x %.2x %.2x\n",
			n, buf[0], buf[1], buf[2], buf[3]);


@@ 232,7 325,7 @@ boot(int ask)
	}

	print("post...");
	sprint(buf, "#s/%s", a->srvname);
	sprint(buf, "#s/%s", srvname);
	f = create(buf, 1, 0666);
	if(f < 0)
		error("create");


@@ 289,26 382,6 @@ error(char *s)
}

/*
 *  lookup the address for a system
 */
Address *
lookup(char *arg)
{
	Address *a;

	if(strcmp(arg, "?")==0 || strcmp(arg, "help")==0){
		for(a = addr; a->name; a++)
			print("%s\n", a->name);
		return 0;
	}
	for(a = addr; a->name; a++){
		if(strcmp(a->name, arg) == 0)
			return a;
	}
	return 0;
}

/*
 *  prompt and get input
 */
int

M power/boot.h => power/boot.h +1332 -1000
@@ 1,7 1,7 @@
ulong bootcode[]={
	0x000000407,
	0x0000043e8,
	0x0000005e8,
	0x0000048c0,
	0x000000640,
	0x000001100,
	0x000000000,
	0x000001020,


@@ 16,43 16,43 @@ ulong bootcode[]={
	0x0afa10004,
	0x00c000415,
	0x0afa20008,
	0x00c00077b,
	0x00c000833,
	0x0afa10004,
	0x008000411,
	0x000000027,
	0x023bdffe4,
	0x0afbf0000,
	0x0afa00014,
	0x023c2823d,
	0x023c28219,
	0x0afa20004,
	0x00c000885,
	0x00c000972,
	0x0afa00008,
	0x023c38245,
	0x023c38221,
	0x0afa30004,
	0x020020001,
	0x00c000885,
	0x00c000972,
	0x0afa20008,
	0x023c3824d,
	0x023c38229,
	0x0afa30004,
	0x020020001,
	0x00c000885,
	0x00c000972,
	0x0afa20008,
	0x023c28255,
	0x023c28231,
	0x0afa20004,
	0x020040001,
	0x0afa40008,
	0x0200201b6,
	0x00c000871,
	0x00c00095e,
	0x0afa2000c,
	0x004210004,
	0x0afa10018,
	0x023c38260,
	0x00c0006c5,
	0x023c3823c,
	0x00c0007bf,
	0x0afa30004,
	0x08fa40024,
	0x000000027,
	0x08c840000,
	0x00c00084a,
	0x00c000937,
	0x0afa40004,
	0x0afa10010,
	0x08fa40018,


@@ 64,15 64,15 @@ ulong bootcode[]={
	0x000000027,
	0x0afa30008,
	0x08fa40010,
	0x00c00088f,
	0x00c000981,
	0x0afa4000c,
	0x01c200004,
	0x000000027,
	0x023c28268,
	0x00c0006c5,
	0x023c28244,
	0x00c0007bf,
	0x0afa20004,
	0x08fa30018,
	0x00c00086c,
	0x00c000959,
	0x0afa30004,
	0x08fa70014,
	0x02009002d,


@@ 105,604 105,854 @@ ulong bootcode[]={
	0x000000027,
	0x01069fff1,
	0x000000027,
	0x023c28270,
	0x023c2824c,
	0x0afc28002,
	0x023c3827a,
	0x023c38257,
	0x038c20001,
	0x010400029,
	0x0afc3805a,
	0x010400021,
	0x0afc38062,
	0x038c20002,
	0x010400020,
	0x010400018,
	0x000000027,
	0x00c00049b,
	0x00c0005d6,
	0x0afa70004,
	0x08fc58096,
	0x08fc5809e,
	0x000000027,
	0x018a00003,
	0x000000027,
	0x00c00086c,
	0x00c000959,
	0x0afa50004,
	0x08fc28072,
	0x000000027,
	0x018400004,
	0x000000027,
	0x08fc38072,
	0x00c00086c,
	0x0afa30004,
	0x08fc28076,
	0x000000027,
	0x018400004,
	0x000000027,
	0x08fc38076,
	0x00c00086c,
	0x00c000959,
	0x0afa30004,
	0x0afc08076,
	0x0afc08072,
	0x0afc08096,
	0x0afc0809e,
	0x020030001,
	0x00c00049b,
	0x00c0005d6,
	0x0afa30004,
	0x08fc58096,
	0x08fc5809e,
	0x008000477,
	0x000000027,
	0x08ca30000,
	0x000000027,
	0x0afc3805a,
	0x0afc38062,
	0x08ca20004,
	0x008000473,
	0x0afc28002,
	0x08ca20000,
	0x008000473,
	0x0afc2805a,
	0x023bdffd8,
	0x0afc28062,
	0x023bdfff4,
	0x0afbf0000,
	0x08fc58002,
	0x08fa2002c,
	0x023c2825f,
	0x0afa20004,
	0x020030002,
	0x00c000972,
	0x0afa30008,
	0x08fa20000,
	0x000000027,
	0x01040000a,
	0x000400008,
	0x023bd000c,
	0x023bdffdc,
	0x0afbf0000,
	0x023c580a2,
	0x08ca20000,
	0x000000027,
	0x01040000b,
	0x000000027,
	0x0afa50014,
	0x08ca20000,
	0x000000027,
	0x023c38282,
	0x0afa20004,
	0x08fa40028,
	0x00c0008e1,
	0x0afa40008,
	0x08fa50014,
	0x0142000a1,
	0x000000027,
	0x0afa50014,
	0x08ca20000,
	0x000000027,
	0x014400008,
	0x000000027,
	0x023c38267,
	0x00c00085e,
	0x0afa30004,
	0x0afa50008,
	0x023c3809a,
	0x08fa20000,
	0x023bd0024,
	0x000400008,
	0x02001ffff,
	0x08fc2807e,
	0x000000027,
	0x014400048,
	0x000000027,
	0x023c28295,
	0x0afa20004,
	0x020040002,
	0x00c000972,
	0x0afa40008,
	0x004210008,
	0x000000027,
	0x023c3829e,
	0x00c0007ad,
	0x0afa30004,
	0x08fa20000,
	0x023bd0024,
	0x000400008,
	0x02001ffff,
	0x0afa10020,
	0x0afa10004,
	0x023c482af,
	0x0afa40008,
	0x02003000d,
	0x00c000981,
	0x0afa3000c,
	0x020020038,
	0x00c00071b,
	0x0afa20010,
	0x023c5809a,
	0x0afc58002,
	0x00c0006d9,
	0x08fa50020,
	0x00421000a,
	0x000000027,
	0x00c000959,
	0x0afa50004,
	0x01420000c,
	0x023c382bd,
	0x00c0007ad,
	0x0afa30004,
	0x08fa20000,
	0x023bd0024,
	0x000400008,
	0x02001ffff,
	0x0afa50004,
	0x023c482cb,
	0x0afa40008,
	0x02003000c,
	0x00c000981,
	0x0afa3000c,
	0x08fa50020,
	0x00421000a,
	0x000000027,
	0x020020002,
	0x0afa20004,
	0x023c38289,
	0x0afa30008,
	0x08fc28002,
	0x00c0007cb,
	0x0afa2000c,
	0x00c000959,
	0x0afa50004,
	0x023c382d8,
	0x00c0007ad,
	0x0afa30004,
	0x08fa20000,
	0x023bd0024,
	0x000400008,
	0x02001ffff,
	0x0afa50004,
	0x023c482e5,
	0x0afa40008,
	0x02003000c,
	0x00c000981,
	0x0afa3000c,
	0x00421000b,
	0x000000027,
	0x08fa20020,
	0x00c000959,
	0x0afa20004,
	0x023c382f2,
	0x00c0007ad,
	0x0afa30004,
	0x08fa20000,
	0x023bd0024,
	0x000400008,
	0x02001ffff,
	0x020020001,
	0x0afc2807e,
	0x023c282ff,
	0x0afa20004,
	0x020040002,
	0x00c000972,
	0x0afa40008,
	0x004210008,
	0x0afa10018,
	0x023c3830e,
	0x00c0007ad,
	0x0afa30004,
	0x08fa20000,
	0x023bd0024,
	0x000400008,
	0x023bd0028,
	0x02001ffff,
	0x023c38325,
	0x0afa30004,
	0x020040002,
	0x00c000972,
	0x0afa40008,
	0x00421000c,
	0x0afa1001c,
	0x08c250004,
	0x023c4829b,
	0x0afc5807a,
	0x08fa20018,
	0x00c000959,
	0x0afa20004,
	0x023c28333,
	0x0afa20004,
	0x00c0007ad,
	0x02003ffff,
	0x08fa20000,
	0x023bd0024,
	0x000400008,
	0x02001ffff,
	0x08fa40014,
	0x000000027,
	0x08c840004,
	0x00c000937,
	0x0afa40004,
	0x0afa10010,
	0x08fa4001c,
	0x000000027,
	0x0afa40004,
	0x08fa20014,
	0x000000027,
	0x08c420004,
	0x000000027,
	0x0afa20008,
	0x08fa40010,
	0x00c000981,
	0x0afa4000c,
	0x004210012,
	0x000000027,
	0x08fa2001c,
	0x00c000959,
	0x0afa20004,
	0x08fa30018,
	0x00c000959,
	0x0afa30004,
	0x08fa30014,
	0x000000027,
	0x08c630004,
	0x000000027,
	0x0afa30004,
	0x00c0007ad,
	0x02002ffff,
	0x08fa20000,
	0x023bd0024,
	0x000400008,
	0x02001ffff,
	0x08fa10018,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0024,
	0x0080004a1,
	0x024a50008,
	0x023bdffa8,
	0x0afbf0000,
	0x08fc2810e,
	0x000000027,
	0x014400038,
	0x000000027,
	0x023c28349,
	0x0afa20004,
	0x020040002,
	0x00c000972,
	0x0afa40008,
	0x004210008,
	0x0afc1807a,
	0x023c38350,
	0x00c0007ad,
	0x0afa30004,
	0x08fa20000,
	0x023bd0058,
	0x000400008,
	0x02001ffff,
	0x0afa10004,
	0x023c4835f,
	0x0afa40008,
	0x02003000a,
	0x00c000981,
	0x0afa3000c,
	0x08fc5807a,
	0x00421000a,
	0x000000027,
	0x00c000959,
	0x0afa50004,
	0x023c3836a,
	0x00c0007ad,
	0x0afa30004,
	0x08fa20000,
	0x023bd0058,
	0x000400008,
	0x02001ffff,
	0x0afa50004,
	0x00c000808,
	0x023c48375,
	0x0afa40008,
	0x014200182,
	0x020050002,
	0x023c382a6,
	0x020030017,
	0x00c000981,
	0x0afa3000c,
	0x00421000b,
	0x000000027,
	0x08fc2807a,
	0x00c000959,
	0x0afa20004,
	0x023c3838d,
	0x00c0007ad,
	0x0afa30004,
	0x00c000885,
	0x0afa50008,
	0x08fa20000,
	0x023bd0058,
	0x000400008,
	0x02001ffff,
	0x020020001,
	0x0afc2810e,
	0x0200307d0,
	0x00c00097c,
	0x0afa30004,
	0x023c383a5,
	0x0afa30004,
	0x020040002,
	0x00c000972,
	0x0afa40008,
	0x004210008,
	0x0afc18096,
	0x023c282ae,
	0x00c0006b3,
	0x0afa10054,
	0x023c283b1,
	0x00c0007ad,
	0x0afa20004,
	0x08fa20000,
	0x000000027,
	0x023bd0058,
	0x000400008,
	0x023bd0028,
	0x023c38372,
	0x00c0007a6,
	0x02001ffff,
	0x023c283c5,
	0x0afa20004,
	0x020040002,
	0x00c000972,
	0x0afa40008,
	0x00421000c,
	0x0afc18076,
	0x08fa30054,
	0x00c000959,
	0x0afa30004,
	0x020020032,
	0x0a3c2966e,
	0x02003ffff,
	0x0a7c39672,
	0x023c3966e,
	0x023c383d0,
	0x0afa30004,
	0x00c0007ad,
	0x02002ffff,
	0x08fa20000,
	0x023bd0058,
	0x000400008,
	0x02001ffff,
	0x023a20014,
	0x0afa20004,
	0x023c383e3,
	0x0afa30008,
	0x08fa2005c,
	0x00c0008a8,
	0x0afa2000c,
	0x023a40014,
	0x00c000937,
	0x0afa40004,
	0x0afa10010,
	0x08fc48076,
	0x023a20014,
	0x0afa40004,
	0x0afa20008,
	0x08fa40010,
	0x00c000981,
	0x0afa4000c,
	0x004210010,
	0x000000027,
	0x08fc28076,
	0x00c000959,
	0x0afa20004,
	0x08fa30054,
	0x00c000959,
	0x0afa30004,
	0x02002ffff,
	0x0afc28076,
	0x023a30014,
	0x00c0007ad,
	0x0afa30004,
	0x08fa20000,
	0x023bd0058,
	0x000400008,
	0x02001ffff,
	0x08fa10054,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0058,
	0x023bdffd4,
	0x0afbf0000,
	0x08fc6809e,
	0x08fa20030,
	0x000000027,
	0x01040000d,
	0x000000027,
	0x023c383ee,
	0x0afa30004,
	0x023c4866e,
	0x00c000894,
	0x08fc28002,
	0x023c380d2,
	0x0afa20008,
	0x0afa3000c,
	0x020020038,
	0x00c0007d3,
	0x0afa20010,
	0x08fc6809e,
	0x023c380d2,
	0x0afc38002,
	0x000002825,
	0x028a20005,
	0x010400014,
	0x0afa50020,
	0x02002ffff,
	0x0afc2809e,
	0x08fc28002,
	0x023c483f5,
	0x0afa20004,
	0x0afa40008,
	0x08fc28096,
	0x023c4866e,
	0x020020004,
	0x00c0008c0,
	0x0afa2000c,
	0x08fc58002,
	0x014200192,
	0x000000027,
	0x024a20004,
	0x0afa2001c,
	0x00c000493,
	0x0afa20004,
	0x000013025,
	0x004c00181,
	0x0afc6809e,
	0x004c10008,
	0x000000027,
	0x023c38421,
	0x00c00085e,
	0x0afa30004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd002c,
	0x023c28430,
	0x00c00085e,
	0x0afa20004,
	0x020030032,
	0x0a3c396c6,
	0x02002ffff,
	0x0a7c296ca,
	0x023c296c6,
	0x0afa20004,
	0x023c486c6,
	0x00c000986,
	0x0afa40008,
	0x0afa10024,
	0x00c00088f,
	0x08fc3809e,
	0x023c486c6,
	0x0afa30004,
	0x0afa40008,
	0x0afa10028,
	0x00c000981,
	0x0afa1000c,
	0x08fa50024,
	0x08fa50028,
	0x000000027,
	0x01025000c,
	0x000000027,
	0x023c28379,
	0x023c28437,
	0x0afa20004,
	0x00c0007a6,
	0x00c00085e,
	0x0afa50008,
	0x023c28381,
	0x00c0006b3,
	0x023c2843f,
	0x00c0007ad,
	0x0afa20004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x08fc28096,
	0x023c4866e,
	0x023bd002c,
	0x08fc2809e,
	0x023c486c6,
	0x0afa20004,
	0x0afa40008,
	0x020021000,
	0x00c00088a,
	0x00c000977,
	0x0afa2000c,
	0x01c200008,
	0x000000027,
	0x023c3838b,
	0x00c0006b3,
	0x023c38449,
	0x00c0007ad,
	0x0afa30004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x023c3866e,
	0x023bd002c,
	0x020030002,
	0x014230003,
	0x000000027,
	0x00800062b,
	0x000000027,
	0x023c386c6,
	0x0afa30004,
	0x023c4966e,
	0x023c496c6,
	0x0afa40008,
	0x0afa10024,
	0x00c000c47,
	0x0afa10028,
	0x00c000d39,
	0x0afa1000c,
	0x014200019,
	0x000000027,
	0x023c28394,
	0x023c28452,
	0x0afa20004,
	0x08fa30024,
	0x08fa30028,
	0x000000027,
	0x0afa30008,
	0x083c2866e,
	0x083c286c6,
	0x000000027,
	0x0afa2000c,
	0x083c3866f,
	0x083c386c7,
	0x000000027,
	0x0afa30010,
	0x083c28670,
	0x083c286c8,
	0x000000027,
	0x0afa20014,
	0x083c38671,
	0x00c0007a6,
	0x083c386c9,
	0x00c00085e,
	0x0afa30018,
	0x023c283b7,
	0x00c0006b3,
	0x023c28475,
	0x00c0007ad,
	0x0afa20004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x083c3966e,
	0x023bd002c,
	0x083c396c6,
	0x020020033,
	0x010620008,
	0x000000027,
	0x023c383c2,
	0x00c0006b3,
	0x023c38480,
	0x00c0007ad,
	0x0afa30004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x087c29672,
	0x023bd002c,
	0x087c296ca,
	0x02003ffff,
	0x010430008,
	0x000000027,
	0x023c283cb,
	0x00c0006b3,
	0x023c28489,
	0x00c0007ad,
	0x0afa20004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x023c383d6,
	0x00c0007a6,
	0x023bd002c,
	0x023c38494,
	0x00c00085e,
	0x0afa30004,
	0x020020034,
	0x0a3c2966e,
	0x0a3c296c6,
	0x02003ffff,
	0x0a7c39672,
	0x023c3966e,
	0x0a7c396ca,
	0x023c396c6,
	0x0afa30004,
	0x023c4866e,
	0x00c000894,
	0x023c486c6,
	0x00c000986,
	0x0afa40008,
	0x08fc28096,
	0x023c4866e,
	0x08fc2809e,
	0x023c486c6,
	0x0afa20004,
	0x0afa40008,
	0x0afa10024,
	0x00c00088f,
	0x0afa10028,
	0x00c000981,
	0x0afa1000c,
	0x08fa40024,
	0x08fa40028,
	0x000000027,
	0x010240008,
	0x000000027,
	0x023c283e1,
	0x00c0006b3,
	0x023c2849f,
	0x00c0007ad,
	0x0afa20004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x08fc28096,
	0x023c4866e,
	0x023bd002c,
	0x08fc2809e,
	0x023c486c6,
	0x0afa20004,
	0x0afa40008,
	0x020021000,
	0x00c00088a,
	0x00c000977,
	0x0afa2000c,
	0x01c200008,
	0x000000027,
	0x023c383ef,
	0x00c0006b3,
	0x023c384ad,
	0x00c0007ad,
	0x0afa30004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x023c3866e,
	0x023bd002c,
	0x023c386c6,
	0x0afa30004,
	0x023c4966e,
	0x023c496c6,
	0x0afa40008,
	0x00c000c47,
	0x00c000d39,
	0x0afa1000c,
	0x014200008,
	0x000000027,
	0x023c283fc,
	0x00c0006b3,
	0x023c284ba,
	0x00c0007ad,
	0x0afa20004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x087c39672,
	0x023bd002c,
	0x087c396ca,
	0x02002ffff,
	0x010620008,
	0x000000027,
	0x023c3840b,
	0x00c0006b3,
	0x023c384c9,
	0x00c0007ad,
	0x0afa30004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x083c2966e,
	0x023bd002c,
	0x083c296c6,
	0x020030037,
	0x01443000d,
	0x000000027,
	0x020020002,
	0x0afa20004,
	0x023c38416,
	0x023c384d4,
	0x0afa30008,
	0x023c2966e,
	0x023c296c6,
	0x024420008,
	0x00c0007cb,
	0x00c000883,
	0x0afa2000c,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x083c3966e,
	0x023bd002c,
	0x083c396c6,
	0x020020035,
	0x010620008,
	0x000000027,
	0x023c38426,
	0x00c0006b3,
	0x023c384e4,
	0x00c0007ad,
	0x0afa30004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x023c28433,
	0x00c0007a6,
	0x023bd002c,
	0x023c284f1,
	0x00c00085e,
	0x0afa20004,
	0x023c3866e,
	0x023c386c6,
	0x0afa30004,
	0x023c2843b,
	0x023c284f9,
	0x0afa20008,
	0x08fa3001c,
	0x000000027,
	0x08c630008,
	0x00c0007f0,
	0x00c0008a8,
	0x0afa3000c,
	0x023c3866e,
	0x023c386c6,
	0x0afa30004,
	0x020040001,
	0x0afa40008,
	0x0200301b6,
	0x00c000871,
	0x00c00095e,
	0x0afa3000c,
	0x004210004,
	0x0afa10020,
	0x023c28441,
	0x00c0006c5,
	0x0afa10024,
	0x023c284ff,
	0x00c0007bf,
	0x0afa20004,
	0x023c3866e,
	0x023c386c6,
	0x0afa30004,
	0x023c28448,
	0x023c28506,
	0x0afa20008,
	0x08fc38096,
	0x00c0007f0,
	0x08fc3809e,
	0x00c0008a8,
	0x0afa3000c,
	0x023c2866e,
	0x00c00084a,
	0x023c286c6,
	0x00c000937,
	0x0afa20004,
	0x0afa10018,
	0x023c4866e,
	0x00c00084a,
	0x023c486c6,
	0x00c000937,
	0x0afa40004,
	0x0afa10014,
	0x08fa40020,
	0x023c3866e,
	0x08fa40024,
	0x023c386c6,
	0x0afa40004,
	0x0afa30008,
	0x08fa40014,
	0x00c00088f,
	0x00c000981,
	0x0afa4000c,
	0x08fa30018,
	0x000000027,
	0x010230004,
	0x000000027,
	0x023c2844b,
	0x00c0006c5,
	0x023c28509,
	0x00c0007bf,
	0x0afa20004,
	0x08fa30020,
	0x00c00086c,
	0x08fa30024,
	0x00c000959,
	0x0afa30004,
	0x023c38451,
	0x023c3850f,
	0x0afa30004,
	0x020040001,
	0x0afa40008,
	0x0200301b6,
	0x00c000871,
	0x00c00095e,
	0x0afa3000c,
	0x004210004,
	0x0afa10020,
	0x023c28459,
	0x00c0006c5,
	0x0afa10024,
	0x023c28517,
	0x00c0007bf,
	0x0afa20004,
	0x023c3866e,
	0x023c386c6,
	0x0afa30004,
	0x023c28460,
	0x023c2851e,
	0x0afa20008,
	0x08fc38096,
	0x00c0007f0,
	0x08fc3809e,
	0x00c0008a8,
	0x0afa3000c,
	0x023c2866e,
	0x00c00084a,
	0x023c286c6,
	0x00c000937,
	0x0afa20004,
	0x0afa10018,
	0x023c4866e,
	0x00c00084a,
	0x023c486c6,
	0x00c000937,
	0x0afa40004,
	0x0afa10014,
	0x08fa40020,
	0x023c3866e,
	0x08fa40024,
	0x023c386c6,
	0x0afa40004,
	0x0afa30008,
	0x08fa40014,
	0x00c00088f,
	0x00c000981,
	0x0afa4000c,
	0x08fa30018,
	0x000000027,
	0x010230004,
	0x000000027,
	0x023c28463,
	0x00c0006c5,
	0x023c28521,
	0x00c0007bf,
	0x0afa20004,
	0x08fa30020,
	0x00c00086c,
	0x08fa30024,
	0x00c000959,
	0x0afa30004,
	0x023c28469,
	0x00c0007a6,
	0x023c28527,
	0x00c00085e,
	0x0afa20004,
	0x023c28472,
	0x023c28530,
	0x0afa20004,
	0x023c48474,
	0x023c48532,
	0x0afa40008,
	0x00c000867,
	0x00c000954,
	0x0afa0000c,
	0x004210004,
	0x000000027,
	0x023c28476,
	0x00c0006c5,
	0x023c28534,
	0x00c0007bf,
	0x0afa20004,
	0x08fc28096,
	0x023c4847b,
	0x08fc2809e,
	0x023c48539,
	0x0afa20004,
	0x0afa40008,
	0x020020006,
	0x0afa2000c,
	0x023c4847d,
	0x023c4853b,
	0x0afa40010,
	0x023c2847e,
	0x00c000880,
	0x023c2853c,
	0x00c00096d,
	0x0afa20014,
	0x004210004,
	0x000000027,
	0x023c3847f,
	0x00c0006c5,
	0x023c3853d,
	0x00c0007bf,
	0x0afa30004,
	0x023c28485,
	0x00c0007a6,
	0x023c28543,
	0x00c00085e,
	0x0afa20004,
	0x08fc38096,
	0x00c00086c,
	0x08fc3809e,
	0x00c000959,
	0x0afa30004,
	0x08fa2002c,
	0x08fa20030,
	0x000000027,
	0x010400010,
	0x000000027,
	0x023c3848e,
	0x023c3854c,
	0x0afa30004,
	0x023c28499,
	0x023c28557,
	0x0afa20008,
	0x023c3849e,
	0x023c3855c,
	0x0afa3000c,
	0x00c000856,
	0x00c000943,
	0x0afa00010,
	0x023c284b1,
	0x00c0006c5,
	0x023c2856f,
	0x00c0007bf,
	0x0afa20004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x023c284a1,
	0x023bd002c,
	0x023c2855f,
	0x0afa20004,
	0x023c384ac,
	0x023c3856a,
	0x0afa30008,
	0x00c000856,
	0x00c000943,
	0x0afa0000c,
	0x023c284b1,
	0x00c0006c5,
	0x0afa20004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x023c282be,
	0x0afa20004,
	0x00c000885,
	0x0afa50008,
	0x004210008,
	0x0afc18076,
	0x023c382c7,
	0x00c0006b3,
	0x0afa30004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x0afa10004,
	0x023c482d8,
	0x0afa40008,
	0x02003000d,
	0x00c00088f,
	0x0afa3000c,
	0x004210008,
	0x000000027,
	0x023c282e6,
	0x00c0006b3,
	0x023c2856f,
	0x00c0007bf,
	0x0afa20004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x08fc28076,
	0x023c482f4,
	0x023bd002c,
	0x023c28405,
	0x00c00085e,
	0x0afa20004,
	0x0afa40008,
	0x02002000c,
	0x00c00088f,
	0x0afa2000c,
	0x004210008,
	0x000000027,
	0x023c38301,
	0x00c0006b3,
	0x0afa30004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x08fc38076,
	0x023c4830e,
	0x0200303e8,
	0x00c00097c,
	0x0afa30004,
	0x08fc6809e,
	0x08fa20020,
	0x0080005ea,
	0x024450001,
	0x0afa50004,
	0x023c483fa,
	0x0afa40008,
	0x02003000c,
	0x00c00088f,
	0x020030003,
	0x00c0008c0,
	0x0afa3000c,
	0x004210008,
	0x000000027,
	0x023c2831b,
	0x00c0006b3,
	0x0afa20004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x023c28328,
	0x0afa20004,
	0x020040002,
	0x00c000885,
	0x0afa40008,
	0x004210008,
	0x0afc18096,
	0x023c38337,
	0x00c0006b3,
	0x0afa30004,
	0x08fa20000,
	0x08fc58002,
	0x014200007,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x023c3834e,
	0x024a30003,
	0x0afa3001c,
	0x00c000551,
	0x0afa30004,
	0x020040002,
	0x00c000885,
	0x0080005fe,
	0x000013025,
	0x0afa50004,
	0x023c483fe,
	0x0afa40008,
	0x004210008,
	0x0afc18072,
	0x023c2835c,
	0x00c0006b3,
	0x0afa20004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x08fc4807a,
	0x00c00084a,
	0x0afa40004,
	0x0afa10018,
	0x08fc48072,
	0x000000027,
	0x0afa40004,
	0x08fc2807a,
	0x000000027,
	0x0afa20008,
	0x08fa40018,
	0x00c00088f,
	0x0afa4000c,
	0x00421fe26,
	0x020020005,
	0x00c0008c0,
	0x0afa2000c,
	0x08fc58002,
	0x014200007,
	0x000000027,
	0x08fc2807a,
	0x00c0006b3,
	0x024a20005,
	0x0afa2001c,
	0x00c00049e,
	0x0afa20004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0028,
	0x0080005fe,
	0x000013025,
	0x0afa5001c,
	0x00c00049e,
	0x0afa50004,
	0x0080005fe,
	0x000013025,
	0x023bdffac,
	0x0afbf0000,
	0x023a30014,
	0x00c000876,
	0x00c000963,
	0x0afa30004,
	0x020020002,
	0x0afa20004,
	0x023c384bc,
	0x023c3857a,
	0x0afa30008,
	0x08fa20058,
	0x023a30014,
	0x0afa2000c,
	0x00c0007cb,
	0x00c000883,
	0x0afa30010,
	0x08fa20000,
	0x000000027,


@@ 711,141 961,75 @@ ulong bootcode[]={
	0x023bdffac,
	0x0afbf0000,
	0x023a20014,
	0x00c000876,
	0x00c000963,
	0x0afa20004,
	0x020030002,
	0x0afa30004,
	0x023c284ca,
	0x023c28588,
	0x0afa20008,
	0x08fa30058,
	0x023a20014,
	0x0afa3000c,
	0x00c0007cb,
	0x00c000883,
	0x0afa20010,
	0x00c00078a,
	0x00c000842,
	0x0afa00004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0054,
	0x023bdfff0,
	0x0afbf0000,
	0x08fa20014,
	0x023c484d8,
	0x0afa20004,
	0x00c000808,
	0x0afa40008,
	0x010200024,
	0x000000027,
	0x08fa30014,
	0x023c484da,
	0x0afa30004,
	0x00c000808,
	0x0afa40008,
	0x01020001d,
	0x000000027,
	0x023c58592,
	0x08ca30000,
	0x000000027,
	0x010600014,
	0x000000027,
	0x0afa5000c,
	0x08ca30000,
	0x000000027,
	0x0afa30004,
	0x08fa40014,
	0x00c000808,
	0x0afa40008,
	0x08fa5000c,
	0x014200005,
	0x000000027,
	0x08fa20000,
	0x023bd0010,
	0x000400008,
	0x000050825,
	0x024a5000c,
	0x08ca30000,
	0x000000027,
	0x01460ffee,
	0x000000027,
	0x08fa20000,
	0x023bd0010,
	0x000400008,
	0x000000825,
	0x023c58592,
	0x08ca20000,
	0x000000027,
	0x01040000e,
	0x000000027,
	0x023c384df,
	0x0afa30004,
	0x0afa5000c,
	0x08ca20000,
	0x00c0007a6,
	0x0afa20008,
	0x08fa3000c,
	0x000000027,
	0x02465000c,
	0x08ca20000,
	0x000000027,
	0x01440fff4,
	0x000000027,
	0x08fa20000,
	0x023bd0010,
	0x000400008,
	0x000000825,
	0x023bdffec,
	0x0afbf0000,
	0x023c384e3,
	0x0afa30004,
	0x08fa20018,
	0x023c28596,
	0x0afa20004,
	0x08fa30018,
	0x000000027,
	0x0afa20008,
	0x08fa3001c,
	0x00c0007a6,
	0x0afa3000c,
	0x0afa30008,
	0x08fa2001c,
	0x00c00085e,
	0x0afa2000c,
	0x0afa00004,
	0x08fa30020,
	0x08fa20020,
	0x000000027,
	0x0afa30008,
	0x0afa20008,
	0x08fa40024,
	0x00c00088a,
	0x00c000977,
	0x0afa4000c,
	0x014200003,
	0x000012825,
	0x00800071d,
	0x0080007d5,
	0x000000027,
	0x004210006,
	0x0afa10010,
	0x023c284ec,
	0x00c0006c5,
	0x0afa20004,
	0x023c3859f,
	0x00c0007bf,
	0x0afa30004,
	0x08fa50010,
	0x000000027,
	0x020020001,
	0x014a2000c,
	0x020030001,
	0x014a3000c,
	0x000000027,
	0x08fa30020,
	0x08fa20020,
	0x000000027,
	0x0afa30004,
	0x08fa2001c,
	0x00c00082f,
	0x0afa20008,
	0x0afa20004,
	0x08fa3001c,
	0x00c0008f7,
	0x0afa30008,
	0x08fa50010,
	0x08fa20000,
	0x023bd0014,
	0x000400008,
	0x000050825,
	0x08fa20020,
	0x08fa30020,
	0x000000027,
	0x000a21821,
	0x0a060ffff,
	0x000a31021,
	0x0a040ffff,
	0x08fa20000,
	0x023bd0014,
	0x000400008,
	0x000050825,
	0x023bdfff8,
	0x023c685ea,
	0x023c68642,
	0x000002825,
	0x028a20021,
	0x010400011,


@@ 871,7 1055,7 @@ ulong bootcode[]={
	0x000070825,
	0x023bdfff8,
	0x08fa7000c,
	0x023c585ea,
	0x023c58642,
	0x000002025,
	0x028820021,
	0x01040000d,


@@ 896,10 1080,10 @@ ulong bootcode[]={
	0x000000027,
	0x014400003,
	0x000000027,
	0x00c00078a,
	0x00c000842,
	0x0afa00004,
	0x023c3807e,
	0x00c00078a,
	0x023c38086,
	0x00c000842,
	0x0afa30004,
	0x08fa20000,
	0x000000027,


@@ 907,7 1091,7 @@ ulong bootcode[]={
	0x023bd0008,
	0x023bdfff0,
	0x0afbf0000,
	0x023c685ea,
	0x023c68642,
	0x020040020,
	0x004800010,
	0x000000027,


@@ 923,11 1107,11 @@ ulong bootcode[]={
	0x000a0f809,
	0x0ac400000,
	0x08fa4000c,
	0x023c685ea,
	0x00800078e,
	0x023c68642,
	0x008000846,
	0x02484ffff,
	0x08fa30014,
	0x00c000862,
	0x00c00094f,
	0x0afa30004,
	0x08fa20000,
	0x000000027,


@@ 943,26 1127,26 @@ ulong bootcode[]={
	0x023a41020,
	0x0afa3000c,
	0x024840004,
	0x00c000f1c,
	0x00c00100e,
	0x0afa40010,
	0x023a6001c,
	0x020020001,
	0x0afa20004,
	0x0afa60008,
	0x000261023,
	0x00c00088f,
	0x00c000981,
	0x0afa2000c,
	0x0afa10014,
	0x00421000c,
	0x000012825,
	0x08fc38066,
	0x08fc3806e,
	0x000000027,
	0x024630001,
	0x02862000a,
	0x014400006,
	0x0afc38066,
	0x0afc3806e,
	0x020020001,
	0x00c00077b,
	0x00c000833,
	0x0afa20004,
	0x08fa50014,
	0x000000027,


@@ 980,26 1164,26 @@ ulong bootcode[]={
	0x023a41024,
	0x0afa3000c,
	0x024840004,
	0x00c000f1c,
	0x00c00100e,
	0x0afa40010,
	0x08fa21020,
	0x023a6001c,
	0x0afa20004,
	0x0afa60008,
	0x000261023,
	0x00c00088f,
	0x00c000981,
	0x0afa2000c,
	0x0afa10014,
	0x00421000c,
	0x000012825,
	0x08fc38066,
	0x08fc3806e,
	0x000000027,
	0x024630001,
	0x02862000a,
	0x014400006,
	0x0afc38066,
	0x0afc3806e,
	0x020020001,
	0x00c00077b,
	0x00c000833,
	0x0afa20004,
	0x08fa50014,
	0x000000027,


@@ 1010,7 1194,7 @@ ulong bootcode[]={
	0x023bdffe4,
	0x0afbf0000,
	0x08fa50020,
	0x08fc2806a,
	0x08fc28072,
	0x024a41000,
	0x0afa20014,
	0x0afa50004,


@@ 1019,11 1203,11 @@ ulong bootcode[]={
	0x023a40024,
	0x0afa2000c,
	0x024840004,
	0x00c000f1c,
	0x00c00100e,
	0x0afa40010,
	0x08fa20014,
	0x000000027,
	0x0afc2806a,
	0x0afc28072,
	0x08fa20020,
	0x000000027,
	0x000220823,


@@ 1031,78 1215,131 @@ ulong bootcode[]={
	0x000000027,
	0x000400008,
	0x023bd001c,
	0x023bdfff4,
	0x08fa80010,
	0x08fa70014,
	0x023bdfffc,
	0x08fa70010,
	0x000004025,
	0x08fa6000c,
	0x08fa50008,
	0x000000027,
	0x000081025,
	0x024e7ffff,
	0x004e00007,
	0x000000027,
	0x080a30000,
	0x000061025,
	0x080420000,
	0x000071825,
	0x000022e00,
	0x000052e03,
	0x000000027,
	0x01062000b,
	0x024c60001,
	0x004e10004,
	0x000000027,
	0x023bd0004,
	0x003e00008,
	0x000080825,
	0x080a10000,
	0x080c2ffff,
	0x023bd0004,
	0x003e00008,
	0x000220823,
	0x000051825,
	0x080630000,
	0x024e70001,
	0x000033600,
	0x000063603,
	0x000051600,
	0x000021603,
	0x000061e00,
	0x000031e03,
	0x01043000e,
	0x025080001,
	0x000051600,
	0x000021603,
	0x000061e00,
	0x000031e03,
	0x00062202a,
	0x010800004,
	0x000000027,
	0x023bd000c,
	0x003e00008,
	0x020010001,
	0x023bd000c,
	0x01460ffe9,
	0x024a50001,
	0x023bd0004,
	0x003e00008,
	0x000080825,
	0x023bdfffc,
	0x08fa30008,
	0x08fa2000c,
	0x000000027,
	0x080410000,
	0x080640000,
	0x01020000c,
	0x000000027,
	0x024630001,
	0x01024fffa,
	0x024420001,
	0x00024082b,
	0x014200004,
	0x000000027,
	0x023bd0004,
	0x003e00008,
	0x02001ffff,
	0x000051600,
	0x000021603,
	0x01440ffe1,
	0x000000027,
	0x023bd000c,
	0x003e00008,
	0x000000825,
	0x023bdffe8,
	0x0afbf0000,
	0x08fa60020,
	0x08fa5001c,
	0x023bd0004,
	0x023bd0004,
	0x003e00008,
	0x00024082b,
	0x023bdfffc,
	0x08fa30008,
	0x08fa4000c,
	0x000000027,
	0x0afa50014,
	0x0afa5001c,
	0x0afa50004,
	0x0afa60020,
	0x0afa60008,
	0x0afa0000c,
	0x020022710,
	0x00c0014c9,
	0x0afa20010,
	0x014200007,
	0x000830826,
	0x030210003,
	0x014200030,
	0x000000027,
	0x08fa3001c,
	0x08fa20020,
	0x03c06ff00,
	0x03c0700ff,
	0x030810003,
	0x01020000a,
	0x000000027,
	0x024462710,
	0x008000835,
	0x024652710,
	0x08fa10014,
	0x08fa20000,
	0x080850000,
	0x000000027,
	0x000400008,
	0x023bd0018,
	0x0a0650000,
	0x024630001,
	0x014a0fff8,
	0x024840001,
	0x08fa10008,
	0x003e00008,
	0x023bd0004,
	0x08c850000,
	0x024840004,
	0x000a60824,
	0x000a71024,
	0x010200018,
	0x024630004,
	0x010400010,
	0x030a1ff00,
	0x010200006,
	0x030a200ff,
	0x01440fff5,
	0x0ac65fffc,
	0x08fa10008,
	0x003e00008,
	0x023bd0004,
	0x000050e02,
	0x0a061fffc,
	0x000052c02,
	0x0a065fffd,
	0x0a060fffe,
	0x08fa10008,
	0x003e00008,
	0x023bd0004,
	0x000052e02,
	0x0a065fffc,
	0x0a060fffd,
	0x08fa10008,
	0x003e00008,
	0x023bd0004,
	0x0a060fffc,
	0x08fa10008,
	0x003e00008,
	0x023bd0004,
	0x080850000,
	0x000000027,
	0x0a0650000,
	0x024630001,
	0x014a0fffb,
	0x024840001,
	0x08fa10008,
	0x003e00008,
	0x023bd0004,
	0x023bdfff4,
	0x0afbf0000,
	0x08fa20010,
	0x000000027,
	0x0afa20004,
	0x00c00141e,
	0x00c001510,
	0x0afa00008,
	0x08fa30010,
	0x08fa20000,


@@ 1115,7 1352,7 @@ ulong bootcode[]={
	0x023a30010,
	0x0afa20004,
	0x024630004,
	0x00c00087b,
	0x00c000968,
	0x0afa30008,
	0x08fa20000,
	0x000000027,


@@ 1167,6 1404,11 @@ ulong bootcode[]={
	0x003e00008,
	0x023bd0004,
	0x023bdfffc,
	0x020010011,
	0x00000000c,
	0x003e00008,
	0x023bd0004,
	0x023bdfffc,
	0x020010014,
	0x00000000c,
	0x003e00008,


@@ 1212,10 1454,10 @@ ulong bootcode[]={
	0x038620034,
	0x01040000a,
	0x000000027,
	0x023c3802e,
	0x023c38006,
	0x0afa30004,
	0x080a20000,
	0x00c0007a6,
	0x00c00085e,
	0x0afa20008,
	0x08fa20000,
	0x023bd0014,


@@ 1237,7 1479,7 @@ ulong bootcode[]={
	0x038620039,
	0x01040fff1,
	0x000000027,
	0x0080008bd,
	0x0080009af,
	0x000000027,
	0x084a2000a,
	0x000000027,


@@ 1258,7 1500,7 @@ ulong bootcode[]={
	0x024a20008,
	0x0afa20008,
	0x020030040,
	0x00c0014df,
	0x00c0015c9,
	0x0afa3000c,
	0x08fa20010,
	0x000000027,


@@ 1281,7 1523,7 @@ ulong bootcode[]={
	0x0afa20004,
	0x024a20008,
	0x0afa20008,
	0x00c0014df,
	0x00c0015c9,
	0x0afa7000c,
	0x08fa20010,
	0x02003001c,


@@ 1292,7 1534,7 @@ ulong bootcode[]={
	0x000000027,
	0x024420024,
	0x0afa20008,
	0x00c0014df,
	0x00c0015c9,
	0x0afa3000c,
	0x08fa20010,
	0x02003001c,


@@ 1303,7 1545,7 @@ ulong bootcode[]={
	0x000000027,
	0x024420040,
	0x0afa20008,
	0x00c0014df,
	0x00c0015c9,
	0x0afa3000c,
	0x08fa20010,
	0x000000027,


@@ 1329,7 1571,7 @@ ulong bootcode[]={
	0x03862003d,
	0x010400003,
	0x000000027,
	0x0080008bd,
	0x0080009af,
	0x000000027,
	0x084a30002,
	0x000000027,


@@ 1421,7 1663,7 @@ ulong bootcode[]={
	0x0afa30004,
	0x024a3000c,
	0x0afa30008,
	0x00c0014df,
	0x00c0015c9,
	0x0afa7000c,
	0x08fa30010,
	0x08fa2001c,


@@ 1437,7 1679,7 @@ ulong bootcode[]={
	0x038620040,
	0x010400003,
	0x000000027,
	0x0080008bd,
	0x0080009af,
	0x000000027,
	0x084a30002,
	0x000000027,


@@ 1564,7 1806,7 @@ ulong bootcode[]={
	0x038620044,
	0x010400003,
	0x000000027,
	0x0080008bd,
	0x0080009af,
	0x000000027,
	0x084a30002,
	0x000000027,


@@ 1661,7 1903,7 @@ ulong bootcode[]={
	0x0afa20004,
	0x024a2000c,
	0x0afa20008,
	0x00c0014df,
	0x00c0015c9,
	0x0afa7000c,
	0x08fa70018,
	0x08fa20010,


@@ 1714,7 1956,7 @@ ulong bootcode[]={
	0x000000027,
	0x0afa20008,
	0x08ca3000c,
	0x00c0014df,
	0x00c0015c9,
	0x0afa3000c,
	0x08fa20018,
	0x08fa30010,


@@ 1737,7 1979,7 @@ ulong bootcode[]={
	0x038620048,
	0x010400003,
	0x000000027,
	0x0080008bd,
	0x0080009af,
	0x000000027,
	0x084a20002,
	0x000000027,


@@ 1814,7 2056,7 @@ ulong bootcode[]={
	0x000000027,
	0x0afa20008,
	0x08ca3000c,
	0x00c0014df,
	0x00c0015c9,
	0x0afa3000c,
	0x08fa20018,
	0x08fa30010,


@@ 1856,7 2098,7 @@ ulong bootcode[]={
	0x03862004c,
	0x010400003,
	0x000000027,
	0x0080008bd,
	0x0080009af,
	0x000000027,
	0x084a20002,
	0x000000027,


@@ 1911,7 2153,7 @@ ulong bootcode[]={
	0x0afa30004,
	0x024a30008,
	0x0afa30008,
	0x00c0014df,
	0x00c0015c9,
	0x0afa8000c,
	0x08fa30010,
	0x08fa2001c,


@@ 1927,7 2169,7 @@ ulong bootcode[]={
	0x03862004f,
	0x010400003,
	0x000000027,
	0x0080008bd,
	0x0080009af,
	0x000000027,
	0x084a30002,
	0x000000027,


@@ 1954,7 2196,7 @@ ulong bootcode[]={
	0x0afa20004,
	0x024a20008,
	0x0afa20008,
	0x00c0014df,
	0x00c0015c9,
	0x0afa8000c,
	0x08fa20010,
	0x000000027,


@@ 1975,7 2217,7 @@ ulong bootcode[]={
	0x08fa30018,
	0x000000027,
	0x0afa30008,
	0x00c0014df,
	0x00c0015c9,
	0x0afa2000c,
	0x08fa30010,
	0x02002001c,


@@ 1986,7 2228,7 @@ ulong bootcode[]={
	0x000000027,
	0x02463001c,
	0x0afa30008,
	0x00c0014df,
	0x00c0015c9,
	0x0afa2000c,
	0x08fa30010,
	0x02002001c,


@@ 1997,7 2239,7 @@ ulong bootcode[]={
	0x000000027,
	0x024630038,
	0x0afa30008,
	0x00c0014df,
	0x00c0015c9,
	0x0afa2000c,
	0x08fa40018,
	0x08fa30010,


@@ 2160,10 2402,10 @@ ulong bootcode[]={
	0x038430034,
	0x01060000a,
	0x000000027,
	0x023c2803c,
	0x023c28014,
	0x0afa20004,
	0x080c30000,
	0x00c0007a6,
	0x00c00085e,
	0x0afa30008,
	0x08fa20000,
	0x023bd0014,


@@ 2193,24 2435,24 @@ ulong bootcode[]={
	0x038430039,
	0x01060ffe9,
	0x000000027,
	0x008000c71,
	0x008000d63,
	0x000000027,
	0x090a20000,
	0x090a30001,
	0x024a50002,
	0x000031a00,
	0x000431025,
	0x008000c7a,
	0x008000d6c,
	0x0a4c2000a,
	0x024c20008,
	0x0afa20004,
	0x0afa50010,
	0x0afa50008,
	0x020020040,
	0x00c0014df,
	0x00c0015c9,
	0x0afa2000c,
	0x08fa30010,
	0x008000c7a,
	0x008000d6c,
	0x024650040,
	0x090a20000,
	0x090a30001,


@@ 2222,7 2464,7 @@ ulong bootcode[]={
	0x0afa20004,
	0x0afa50010,
	0x0afa50008,
	0x00c0014df,
	0x00c0015c9,
	0x0afa7000c,
	0x08fa30010,
	0x08fa2001c,


@@ 2232,7 2474,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02002001c,
	0x00c0014df,
	0x00c0015c9,
	0x0afa2000c,
	0x08fa30010,
	0x08fa2001c,


@@ 2242,10 2484,10 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02002001c,
	0x00c0014df,
	0x00c0015c9,
	0x0afa2000c,
	0x08fa30010,
	0x008000c7a,
	0x008000d6c,
	0x02465001c,
	0x02443ffc2,
	0x01c600050,


@@ 2261,14 2503,14 @@ ulong bootcode[]={
	0x03843003d,
	0x010600003,
	0x000000027,
	0x008000c71,
	0x008000d63,
	0x000000027,
	0x090a20000,
	0x090a30001,
	0x024a50002,
	0x000031a00,
	0x000431025,
	0x008000c7a,
	0x008000d6c,
	0x0a4c20002,
	0x090a20000,
	0x090a30001,


@@ 2281,7 2523,7 @@ ulong bootcode[]={
	0x024a50002,
	0x000031a00,
	0x000431025,
	0x008000c7a,
	0x008000d6c,
	0x0a4c20008,
	0x090a20000,
	0x090a30001,


@@ 2312,7 2554,7 @@ ulong bootcode[]={
	0x000031e00,
	0x000431025,
	0x024a50004,
	0x008000c7a,
	0x008000d6c,
	0x0acc20010,
	0x090a20000,
	0x090a30001,


@@ 2324,10 2566,10 @@ ulong bootcode[]={
	0x0afa20004,
	0x0afa50010,
	0x0afa50008,
	0x00c0014df,
	0x00c0015c9,
	0x0afa7000c,
	0x08fa30010,
	0x008000c7a,
	0x008000d6c,
	0x02465001c,
	0x03843003f,
	0x010600011,


@@ 2335,7 2577,7 @@ ulong bootcode[]={
	0x038430040,
	0x010600003,
	0x000000027,
	0x008000c71,
	0x008000d63,
	0x000000027,
	0x090a20000,
	0x090a30001,


@@ 2346,7 2588,7 @@ ulong bootcode[]={
	0x024a30002,
	0x024650001,
	0x080630000,
	0x008000c7a,
	0x008000d6c,
	0x0a0c30028,
	0x090a20000,
	0x090a30001,


@@ 2377,7 2619,7 @@ ulong bootcode[]={
	0x000031e00,
	0x000431025,
	0x024a50004,
	0x008000c7a,
	0x008000d6c,
	0x0acc20010,
	0x090a20000,
	0x090a30001,


@@ 2408,7 2650,7 @@ ulong bootcode[]={
	0x000031e00,
	0x000431025,
	0x024a50004,
	0x008000c7a,
	0x008000d6c,
	0x0acc20010,
	0x02443ffb7,
	0x01c6000c1,


@@ 2429,7 2671,7 @@ ulong bootcode[]={
	0x038430044,
	0x010600003,
	0x000000027,
	0x008000c71,
	0x008000d63,
	0x000000027,
	0x090a20000,
	0x090a30001,


@@ 2454,7 2696,7 @@ ulong bootcode[]={
	0x024a50002,
	0x000031a00,
	0x000431025,
	0x008000c7a,
	0x008000d6c,
	0x0acc2000c,
	0x090a20000,
	0x090a30001,


@@ 2485,7 2727,7 @@ ulong bootcode[]={
	0x000031e00,
	0x000431025,
	0x024a50004,
	0x008000c7a,
	0x008000d6c,
	0x0acc20010,
	0x090a20000,
	0x090a30001,


@@ 2497,7 2739,7 @@ ulong bootcode[]={
	0x0afa20004,
	0x0afa50010,
	0x0afa50008,
	0x00c0014df,
	0x00c0015c9,
	0x0afa7000c,
	0x08fa6001c,
	0x08fa30010,


@@ 2517,7 2759,7 @@ ulong bootcode[]={
	0x024a30004,
	0x024650001,
	0x080630000,
	0x008000c7a,
	0x008000d6c,
	0x0a0c30028,
	0x090a20000,
	0x090a30001,


@@ 2535,7 2777,7 @@ ulong bootcode[]={
	0x024650001,
	0x0acc50010,
	0x08cc3000c,
	0x008000c7a,
	0x008000d6c,
	0x000a32821,
	0x038430046,
	0x01060001d,


@@ 2546,14 2788,14 @@ ulong bootcode[]={
	0x038430048,
	0x010600003,
	0x000000027,
	0x008000c71,
	0x008000d63,
	0x000000027,
	0x090a20000,
	0x090a30001,
	0x024a50002,
	0x000031a00,
	0x000431025,
	0x008000c7a,
	0x008000d6c,
	0x0a4c20002,
	0x090a20000,
	0x090a30001,


@@ 2566,7 2808,7 @@ ulong bootcode[]={
	0x024a50002,
	0x000031a00,
	0x000431025,
	0x008000c7a,
	0x008000d6c,
	0x0acc2000c,
	0x090a20000,
	0x090a30001,


@@ 2596,14 2838,14 @@ ulong bootcode[]={
	0x024650001,
	0x0acc50010,
	0x08cc3000c,
	0x008000c7a,
	0x008000d6c,
	0x000a32821,
	0x090a20000,
	0x090a30001,
	0x024a50002,
	0x000031a00,
	0x000431025,
	0x008000c7a,
	0x008000d6c,
	0x0a4c20002,
	0x02443ffb3,
	0x01c600032,


@@ 2619,28 2861,28 @@ ulong bootcode[]={
	0x03843004c,
	0x010600003,
	0x000000027,
	0x008000c71,
	0x008000d63,
	0x000000027,
	0x090a20000,
	0x090a30001,
	0x024a50002,
	0x000031a00,
	0x000431025,
	0x008000c7a,
	0x008000d6c,
	0x0a4c20002,
	0x090a20000,
	0x090a30001,
	0x024a50002,
	0x000031a00,
	0x000431025,
	0x008000c7a,
	0x008000d6c,
	0x0a4c20002,
	0x090a20000,
	0x090a30001,
	0x024a50002,
	0x000031a00,
	0x000431025,
	0x008000c7a,
	0x008000d6c,
	0x0a4c20002,
	0x090a20000,
	0x090a30001,


@@ 2652,10 2894,10 @@ ulong bootcode[]={
	0x0afa20004,
	0x0afa50010,
	0x0afa50008,
	0x00c0014df,
	0x00c0015c9,
	0x0afa8000c,
	0x08fa30010,
	0x008000c7a,
	0x008000d6c,
	0x024650074,
	0x03843004e,
	0x01060000d,


@@ 2663,14 2905,14 @@ ulong bootcode[]={
	0x03843004f,
	0x010600003,
	0x000000027,
	0x008000c71,
	0x008000d63,
	0x000000027,
	0x090a20000,
	0x090a30001,
	0x024a50002,
	0x000031a00,
	0x000431025,
	0x008000c7a,
	0x008000d6c,
	0x0a4c20002,
	0x090a20000,
	0x090a30001,


@@ 2682,10 2924,10 @@ ulong bootcode[]={
	0x0afa20004,
	0x0afa50010,
	0x0afa50008,
	0x00c0014df,
	0x00c0015c9,
	0x0afa8000c,
	0x08fa30010,
	0x008000c7a,
	0x008000d6c,
	0x024650074,
	0x023bdffec,
	0x0afbf0000,


@@ 2696,7 2938,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02003001c,
	0x00c0014df,
	0x00c0015c9,
	0x0afa3000c,
	0x08fa20010,
	0x08fa3001c,


@@ 2706,7 2948,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02003001c,
	0x00c0014df,
	0x00c0015c9,
	0x0afa3000c,
	0x08fa20010,
	0x08fa3001c,


@@ 2716,7 2958,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02003001c,
	0x00c0014df,
	0x00c0015c9,
	0x0afa3000c,
	0x08fa5001c,
	0x08fa20010,


@@ 2814,14 3056,14 @@ ulong bootcode[]={
	0x000400008,
	0x023bd0014,
	0x023bdfffc,
	0x08fc780d2,
	0x08fc78052,
	0x083a2000b,
	0x028e3001e,
	0x03042007f,
	0x000022e00,
	0x000052e03,
	0x014600004,
	0x023c68512,
	0x023c685c2,
	0x023bd0004,
	0x003e00008,
	0x020010001,


@@ 2829,13 3071,13 @@ ulong bootcode[]={
	0x000031e03,
	0x000661821,
	0x024e20001,
	0x0afc280d2,
	0x0afc28052,
	0x0a0670000,
	0x000051600,
	0x000021603,
	0x000461021,
	0x080420000,
	0x023c380e2,
	0x023c3811a,
	0x000021080,
	0x08fa4000c,
	0x000431021,


@@ 2850,19 3092,19 @@ ulong bootcode[]={
	0x02008fc18,
	0x08fa60040,
	0x020120030,
	0x08fc280d6,
	0x08fc28026,
	0x02011002a,
	0x0afa2001c,
	0x08fc3806e,
	0x08fc3810a,
	0x0200e002e,
	0x0afa30018,
	0x08fb00038,
	0x0200c0039,
	0x0afd080d6,
	0x0afd08026,
	0x08fa3003c,
	0x000004825,
	0x02463ffff,
	0x0afc3806e,
	0x0afc3810a,
	0x000062825,
	0x080a50000,
	0x000000027,


@@ 2870,7 3112,7 @@ ulong bootcode[]={
	0x024c60001,
	0x014a00012,
	0x000000027,
	0x08fc3806e,
	0x08fc3810a,
	0x000000027,
	0x00203202b,
	0x014800002,


@@ 2879,31 3121,31 @@ ulong bootcode[]={
	0x0a2000000,
	0x08fa3001c,
	0x000000027,
	0x0afc380d6,
	0x0afc38026,
	0x08fa20018,
	0x000000027,
	0x0afc2806e,
	0x0afc2810a,
	0x08fa20000,
	0x023bd0034,
	0x000400008,
	0x000100825,
	0x08fc3806e,
	0x08fc3810a,
	0x000000027,
	0x00203202b,
	0x010800005,
	0x000000027,
	0x000101025,
	0x026100001,
	0x0afd080d6,
	0x0afd08026,
	0x0a0450000,
	0x08fc2806a,
	0x08fc28072,
	0x000000027,
	0x024420001,
	0x0afc2806a,
	0x0afc28072,
	0x02002000a,
	0x014a20071,
	0x000000027,
	0x0afc9806a,
	0x0afc98072,
	0x000062825,
	0x080a50000,
	0x000000027,


@@ 2919,14 3161,14 @@ ulong bootcode[]={
	0x000000027,
	0x014a00003,
	0x000000027,
	0x008000f30,
	0x008001022,
	0x024c6ffff,
	0x014ae0006,
	0x000000027,
	0x014e80002,
	0x000000027,
	0x000093825,
	0x008000f61,
	0x008001053,
	0x000097825,
	0x028a20031,
	0x01440001f,


@@ 2945,11 3187,11 @@ ulong bootcode[]={
	0x000000027,
	0x014a0ffe9,
	0x0000a3825,
	0x008000f30,
	0x008001022,
	0x024c6ffff,
	0x014a0ffe5,
	0x0000a7825,
	0x008000f30,
	0x008001022,
	0x024c6ffff,
	0x02002000a,
	0x001420018,


@@ 2959,22 3201,22 @@ ulong bootcode[]={
	0x024c60001,
	0x0afa60040,
	0x080a50000,
	0x008000f78,
	0x00800106a,
	0x0246affd0,
	0x014b20005,
	0x000000027,
	0x010e80003,
	0x000000027,
	0x008000f77,
	0x008001069,
	0x000000027,
	0x014b10008,
	0x000000027,
	0x08d650000,
	0x014e80003,
	0x0256b0004,
	0x008000f61,
	0x008001053,
	0x000053825,
	0x008000f61,
	0x008001053,
	0x000057825,
	0x030a5007f,
	0x0afab0044,


@@ 2986,17 3228,17 @@ ulong bootcode[]={
	0x0afad0028,
	0x0afad0010,
	0x0afa50014,
	0x023c28512,
	0x023c285c2,
	0x000451021,
	0x080420000,
	0x023c380e2,
	0x023c3811a,
	0x000021080,
	0x000431021,
	0x08c420000,
	0x000000027,
	0x00040f809,
	0x000000027,
	0x08fd080d6,
	0x08fd08026,
	0x020120030,
	0x08faf002c,
	0x02011002a,


@@ 3011,20 3253,20 @@ ulong bootcode[]={
	0x020130025,
	0x08fa40028,
	0x001211023,
	0x008000f61,
	0x008001053,
	0x000826825,
	0x008000f30,
	0x008001022,
	0x001615821,
	0x020020009,
	0x014a2ff66,
	0x000000027,
	0x08fc3806a,
	0x08fc38072,
	0x000000027,
	0x024630007,
	0x0201cfff8,
	0x0007c1824,
	0x008000f30,
	0x0afc3806a,
	0x008001022,
	0x0afc38072,
	0x023bdfff0,
	0x0afbf0000,
	0x08fa40018,


@@ 3041,13 3283,13 @@ ulong bootcode[]={
	0x0afa20004,
	0x0afa40008,
	0x08fa2001c,
	0x00c0010bb,
	0x00c0011ad,
	0x0afa2000c,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0010,
	0x008000fdd,
	0x0080010cf,
	0x000042023,
	0x023bdffa8,
	0x0afbf0000,


@@ 3142,7 3384,7 @@ ulong bootcode[]={
	0x000000027,
	0x0afa30008,
	0x0afad000c,
	0x00c000fd2,
	0x00c0010c4,
	0x0afa70010,
	0x08fa10028,
	0x08fa20000,


@@ 3159,7 3401,7 @@ ulong bootcode[]={
	0x0a0640000,
	0x024a5ffff,
	0x001651021,
	0x00800103b,
	0x00800112d,
	0x0a0520000,
	0x024a5ffff,
	0x001651021,


@@ 3167,7 3409,7 @@ ulong bootcode[]={
	0x0a0440000,
	0x024a5ffff,
	0x001651021,
	0x00800103b,
	0x00800112d,
	0x0a0520000,
	0x030e30040,
	0x01060001c,


@@ 3187,26 3429,26 @@ ulong bootcode[]={
	0x000000027,
	0x01d000003,
	0x000000027,
	0x00800102e,
	0x008001120,
	0x000000027,
	0x01d400003,
	0x000000027,
	0x00800102e,
	0x008001120,
	0x000000027,
	0x030e30040,
	0x01460ffa5,
	0x024a5ffff,
	0x00149001b,
	0x008001025,
	0x008001117,
	0x000003010,
	0x00149001b,
	0x008001069,
	0x00800115b,
	0x000005012,
	0x000158025,
	0x00800101d,
	0x00800110f,
	0x0026a5023,
	0x08cca0000,
	0x008001018,
	0x00800110a,
	0x0afa50028,
	0x08cc30000,
	0x0afa50028,


@@ 3214,13 3456,13 @@ ulong bootcode[]={
	0x000063403,
	0x000061400,
	0x000021403,
	0x008001018,
	0x00800110a,
	0x000025025,
	0x08cca0000,
	0x008001018,
	0x00800110a,
	0x0afa50028,
	0x08cca0000,
	0x008001018,
	0x00800110a,
	0x0afa50028,
	0x038620030,
	0x010400009,


@@ 3228,24 3470,24 @@ ulong bootcode[]={
	0x038620048,
	0x010400003,
	0x000000027,
	0x008001016,
	0x008001108,
	0x000000027,
	0x08cc80000,
	0x008001018,
	0x00800110a,
	0x0afa50028,
	0x08cc20000,
	0x0afa50028,
	0x000023400,
	0x000063403,
	0x030c3ffff,
	0x008001018,
	0x00800110a,
	0x000035025,
	0x008001007,
	0x0080010f9,
	0x02009000a,
	0x000158825,
	0x008001007,
	0x0080010f9,
	0x000144825,
	0x008001007,
	0x0080010f9,
	0x000164825,
	0x039220075,
	0x010400006,


@@ 3253,24 3495,24 @@ ulong bootcode[]={
	0x039220078,
	0x01040fff7,
	0x000000027,
	0x008001007,
	0x0080010f9,
	0x000000027,
	0x02009000a,
	0x008001007,
	0x0080010f9,
	0x034e70020,
	0x023bdfff0,
	0x0afbf0000,
	0x08fa30014,
	0x00c00084a,
	0x00c000937,
	0x0afa30004,
	0x08fad0014,
	0x0200efc18,
	0x08faa0018,
	0x0200c0020,
	0x08fc9806e,
	0x08fc8806a,
	0x08fc9810a,
	0x08fc88072,
	0x08fa7001c,
	0x08fc680d6,
	0x08fc68026,
	0x000012825,
	0x0114e0003,
	0x000007825,


@@ 3307,28 3549,28 @@ ulong bootcode[]={
	0x000000027,
	0x000061825,
	0x024c60001,
	0x0afc680d6,
	0x0afc68026,
	0x0a06c0000,
	0x025080001,
	0x024a50001,
	0x0080010e4,
	0x0afc8806a,
	0x0080011d6,
	0x0afc88072,
	0x000c9202b,
	0x010800005,
	0x000000027,
	0x000061025,
	0x024c60001,
	0x0afc680d6,
	0x0afc68026,
	0x0a04b0000,
	0x025080001,
	0x02002000a,
	0x015620007,
	0x0afc8806a,
	0x0afc88072,
	0x0000f4025,
	0x0afcf806a,
	0x0afcf8072,
	0x010eeffcd,
	0x000000027,
	0x0080010cd,
	0x0080011bf,
	0x024e7ffff,
	0x020020009,
	0x01562fffa,


@@ 3337,8 3579,8 @@ ulong bootcode[]={
	0x0201cfff8,
	0x0007c4024,
	0x010eeffc3,
	0x0afc8806a,
	0x0080010cd,
	0x0afc88072,
	0x0080011bf,
	0x024e7ffff,
	0x000aa202a,
	0x01080ffbe,


@@ 3348,12 3590,12 @@ ulong bootcode[]={
	0x000000027,
	0x000061025,
	0x024c60001,
	0x0afc680d6,
	0x0afc68026,
	0x0a04c0000,
	0x025080001,
	0x024a50001,
	0x00800110d,
	0x0afc8806a,
	0x0080011ff,
	0x0afc88072,
	0x023bdffec,
	0x0afbf0000,
	0x02004002a,


@@ 3366,7 3608,7 @@ ulong bootcode[]={
	0x023a30010,
	0x0afa30004,
	0x0afa00008,
	0x00c0010bb,
	0x00c0011ad,
	0x0afa2000c,
	0x08fa20000,
	0x023bd0014,


@@ 3384,7 3626,7 @@ ulong bootcode[]={
	0x08fa3001c,
	0x02002fc18,
	0x0afa30008,
	0x00c0010bb,
	0x00c0011ad,
	0x0afa2000c,
	0x08fa20000,
	0x023bd0014,


@@ 3404,21 3646,21 @@ ulong bootcode[]={
	0x000000027,
	0x0afa3000c,
	0x08fa20024,
	0x00c000fd2,
	0x00c0010c4,
	0x0afa20010,
	0x08fa20000,
	0x023bd0014,
	0x000400008,
	0x020010004,
	0x023bdfffc,
	0x08fc580d6,
	0x08fc2806e,
	0x08fc58026,
	0x08fc2810a,
	0x000000027,
	0x000a2202b,
	0x010800005,
	0x000000027,
	0x024a20001,
	0x0afc280d6,
	0x0afc28026,
	0x020040025,
	0x0a0a40000,
	0x023bd0004,


@@ 3529,10 3771,10 @@ ulong bootcode[]={
	0x023a20034,
	0x0e7a10004,
	0x0e7a00008,
	0x00c001442,
	0x00c001542,
	0x0afa2000c,
	0x0c7c18052,
	0x0c7c08056,
	0x0c7c1805a,
	0x0c7c0805e,
	0x0c7a20034,
	0x000000027,
	0x0468010a1,


@@ 3544,7 3786,7 @@ ulong bootcode[]={
	0x000023043,
	0x0afa60030,
	0x000061023,
	0x00c0013f5,
	0x00c0014e7,
	0x0afa20004,
	0x0c7a30048,
	0x0c7a2004c,


@@ 3556,7 3798,7 @@ ulong bootcode[]={
	0x08fa30034,
	0x000000027,
	0x000431023,
	0x00c0013f5,
	0x00c0014e7,
	0x0afa20004,
	0x08fad00b4,
	0x023ae0078,


@@ 3579,7 3821,7 @@ ulong bootcode[]={
	0x08fa30034,
	0x000000027,
	0x000431023,
	0x00c0013f5,
	0x00c0014e7,
	0x0afa20004,
	0x08fad00b4,
	0x08fac00ac,


@@ 3588,10 3830,10 @@ ulong bootcode[]={
	0x0c7a2003c,
	0x000000027,
	0x046201182,
	0x0080011f0,
	0x0080012e2,
	0x023ae0078,
	0x0c7c1805e,
	0x0c7c08062,
	0x0c7c18066,
	0x0c7c0806a,
	0x000000027,
	0x04626003e,
	0x000000027,


@@ 3605,7 3847,7 @@ ulong bootcode[]={
	0x08fa30034,
	0x000000027,
	0x000431023,
	0x00c0013f5,
	0x00c0014e7,
	0x0afa20004,
	0x08fad00b4,
	0x08fac00ac,


@@ 3614,7 3856,7 @@ ulong bootcode[]={
	0x0c7a2003c,
	0x000000027,
	0x046201182,
	0x008001207,
	0x0080012f9,
	0x023ae0078,
	0x02003fc18,
	0x015830002,


@@ 3649,7 3891,7 @@ ulong bootcode[]={
	0x0200cffff,
	0x0afac00ac,
	0x0200d0065,
	0x0080011bd,
	0x0080012af,
	0x0afad00b4,
	0x0c7a70048,
	0x0c7a6004c,


@@ 3663,7 3905,7 @@ ulong bootcode[]={
	0x08fa30034,
	0x02002ffff,
	0x000431023,
	0x00c0013f5,
	0x00c0014e7,
	0x0afa20004,
	0x08fad00b4,
	0x023ae0078,


@@ 3685,7 3927,7 @@ ulong bootcode[]={
	0x000671823,
	0x00460012b,
	0x0afa7002c,
	0x00c0013f5,
	0x00c0014e7,
	0x0afa30004,
	0x0c7a30040,
	0x0c7a20044,


@@ 3694,7 3936,7 @@ ulong bootcode[]={
	0x046201083,
	0x0e7a30004,
	0x0e7a20008,
	0x00c0013b3,
	0x00c0014a5,
	0x000000027,
	0x08fad00b4,
	0x023ae0078,


@@ 3743,7 3985,7 @@ ulong bootcode[]={
	0x024e70001,
	0x02484fff6,
	0x0a0440001,
	0x00800128e,
	0x008001380,
	0x024c6ffff,
	0x010e00007,
	0x0200b0001,


@@ 3811,7 4053,7 @@ ulong bootcode[]={
	0x020030030,
	0x0a0430000,
	0x024e7ffff,
	0x0080012d5,
	0x0080013c7,
	0x024c60001,
	0x019000013,
	0x000000027,


@@ 3831,7 4073,7 @@ ulong bootcode[]={
	0x0256b0001,
	0x0a0430000,
	0x02508ffff,
	0x0080012e6,
	0x0080013d8,
	0x024c60001,
	0x08fa300b0,
	0x000000027,


@@ 3860,7 4102,7 @@ ulong bootcode[]={
	0x0afa30008,
	0x0afa2000c,
	0x08fa300b0,
	0x00c000fd2,
	0x00c0010c4,
	0x0afa30010,
	0x08fa20000,
	0x023bd00a0,


@@ 3916,19 4158,19 @@ ulong bootcode[]={
	0x000001810,
	0x024630030,
	0x0a0430000,
	0x00800130d,
	0x0080013ff,
	0x024c60001,
	0x000061825,
	0x001231021,
	0x02003002b,
	0x0a0430000,
	0x00800132e,
	0x008001420,
	0x024c60001,
	0x000061025,
	0x001221821,
	0x020020065,
	0x0a0620000,
	0x008001324,
	0x008001416,
	0x024c60001,
	0x020030067,
	0x011a30006,


@@ 3936,7 4178,7 @@ ulong bootcode[]={
	0x020030068,
	0x011a30003,
	0x000000027,
	0x008001307,
	0x0080013f9,
	0x000000027,
	0x024c7ffff,
	0x004e00006,


@@ 3956,11 4198,11 @@ ulong bootcode[]={
	0x000000027,
	0x01107ff93,
	0x000073025,
	0x008001307,
	0x0080013f9,
	0x024c60001,
	0x00800136c,
	0x00800145e,
	0x02508ffff,
	0x008001364,
	0x008001456,
	0x024e7ffff,
	0x08fa30034,
	0x02002ffff,


@@ 3970,7 4212,7 @@ ulong bootcode[]={
	0x000003825,
	0x08fa30034,
	0x0200d0068,
	0x0080012c2,
	0x0080013b4,
	0x001835023,
	0x08fa200b0,
	0x000000027,


@@ 3981,17 4223,17 @@ ulong bootcode[]={
	0x001221821,
	0x02002002b,
	0x0a0620000,
	0x0080012b3,
	0x0080013a5,
	0x024c60001,
	0x0c7c3805e,
	0x0c7c28062,
	0x0c7c38066,
	0x0c7c2806a,
	0x000000027,
	0x046223182,
	0x0e7a70040,
	0x0e7a60044,
	0x0e7a70004,
	0x0e7a60008,
	0x00c0013b3,
	0x00c0014a5,
	0x000000027,
	0x08fad00b4,
	0x08fa8002c,


@@ 4009,14 4251,14 @@ ulong bootcode[]={
	0x046201181,
	0x0e7a70040,
	0x0e7a60044,
	0x008001285,
	0x008001377,
	0x023ae0078,
	0x00800122a,
	0x00800131c,
	0x0258cffff,
	0x020020001,
	0x0afa20014,
	0x025ad0020,
	0x0080011bd,
	0x0080012af,
	0x0afad00b4,
	0x023bdffe8,
	0x0afbf0000,


@@ 4033,7 4275,7 @@ ulong bootcode[]={
	0x04624c081,
	0x0e7a30004,
	0x0e7a20008,
	0x00c001491,
	0x00c001591,
	0x0afa2000c,
	0x04620c032,
	0x000000027,


@@ 4062,7 4304,7 @@ ulong bootcode[]={
	0x023a2001c,
	0x0e7a30004,
	0x0e7a20008,
	0x00c001491,
	0x00c001591,
	0x0afa2000c,
	0x0c7a1001c,
	0x0c7a00020,


@@ 4078,7 4320,7 @@ ulong bootcode[]={
	0x04624c081,
	0x0e7a30004,
	0x0e7a20008,
	0x00c0013b3,
	0x00c0014a5,
	0x000000027,
	0x08fa20000,
	0x023bd000c,


@@ 4091,7 4333,7 @@ ulong bootcode[]={
	0x004810008,
	0x000000027,
	0x000041023,
	0x00c0013f5,
	0x00c0014e7,
	0x0afa20004,
	0x08fa20000,
	0x023bd0014,


@@ 4101,7 4343,7 @@ ulong bootcode[]={
	0x01060000a,
	0x000000027,
	0x000041880,
	0x023c28006,
	0x023c2802a,
	0x000621821,
	0x08c630000,
	0x08fa20000,


@@ 4112,12 4354,12 @@ ulong bootcode[]={
	0x000042843,
	0x0afa50010,
	0x000851823,
	0x00c0013f5,
	0x00c0014e7,
	0x0afa30004,
	0x0e7a10008,
	0x0e7a0000c,
	0x08fa20010,
	0x00c0013f5,
	0x00c0014e7,
	0x0afa20004,
	0x0c7a30008,
	0x0c7a2000c,


@@ 4125,42 4367,56 @@ ulong bootcode[]={
	0x023bd0014,
	0x000400008,
	0x046220002,
	0x023bdfff8,
	0x083a60013,
	0x08fa4000c,
	0x000061600,
	0x000021603,
	0x01440000b,
	0x023bdfffc,
	0x083a4000f,
	0x08fa30008,
	0x01080000a,
	0x000000027,
	0x000041825,
	0x080630000,
	0x080610000,
	0x000000027,
	0x010600003,
	0x024840001,
	0x008001425,
	0x010200004,
	0x024630001,
	0x01424fffb,
	0x000000027,
	0x023bd0008,
	0x02461ffff,
	0x003e00008,
	0x02481ffff,
	0x000041025,
	0x080420000,
	0x023bd0004,
	0x030610003,
	0x010200008,
	0x000000027,
	0x000022e00,
	0x000052e03,
	0x01040000a,
	0x024840001,
	0x000051e00,
	0x000031e03,
	0x000061600,
	0x000021603,
	0x01462fff4,
	0x080610000,
	0x000000027,
	0x023bd0008,
	0x01420fffa,
	0x024630001,
	0x023bd0004,
	0x003e00008,
	0x02481ffff,
	0x023bd0008,
	0x02461ffff,
	0x03c06ff00,
	0x03c0700ff,
	0x08c650000,
	0x000000027,
	0x000a60824,
	0x000a71024,
	0x010200010,
	0x024630004,
	0x01040000b,
	0x030a1ff00,
	0x010200006,
	0x030a200ff,
	0x01440fff5,
	0x000000027,
	0x023bd0004,
	0x003e00008,
	0x000000825,
	0x02461ffff,
	0x023bd0004,
	0x003e00008,
	0x02461fffe,
	0x023bd0004,
	0x003e00008,
	0x02461fffd,
	0x023bd0004,
	0x003e00008,
	0x02461fffc,
	0x023bdfff4,
	0x0c7a70010,
	0x0c7a60014,


@@ 4264,7 4520,7 @@ ulong bootcode[]={
	0x00065102a,
	0x014400013,
	0x000000027,
	0x08fc180da,
	0x08fc18112,
	0x08fa30008,
	0x000a10807,
	0x0201cffff,


@@ 4286,7 4542,7 @@ ulong bootcode[]={
	0x00065102a,
	0x01440fff3,
	0x000000027,
	0x08fc380de,
	0x08fc38116,
	0x024a1ffea,
	0x000230807,
	0x0201cffff,


@@ 4294,64 4550,127 @@ ulong bootcode[]={
	0x08fa3000c,
	0x000000027,
	0x000610824,
	0x0080014b1,
	0x0080015b1,
	0x0afa1000c,
	0x023bdfff4,
	0x08fa80018,
	0x08fa7001c,
	0x08fa50010,
	0x08fa60014,
	0x023bdfffc,
	0x08fa30010,
	0x08fa40008,
	0x08fa5000c,
	0x000833021,
	0x028620004,
	0x000a4082b,
	0x014200036,
	0x000a33821,
	0x01440002a,
	0x000000027,
	0x024e7ffff,
	0x004e0000b,
	0x000a40826,
	0x030210003,
	0x014200026,
	0x000000027,
	0x000061825,
	0x024c60001,
	0x080630000,
	0x000051025,
	0x0a0430000,
	0x01468fff7,
	0x030810003,
	0x010200008,
	0x000000027,
	0x080a80000,
	0x000000027,
	0x0a0880000,
	0x024840001,
	0x030810003,
	0x01420fffa,
	0x024a50001,
	0x023bd000c,
	0x003e00008,
	0x000050825,
	0x023bd000c,
	0x024c3fff1,
	0x00083082b,
	0x01020000d,
	0x000000027,
	0x08ca80000,
	0x08ca90004,
	0x0ac880000,
	0x08ca80008,
	0x0ac890004,
	0x08ca9000c,
	0x0ac880008,
	0x0ac89000c,
	0x024840010,
	0x00083082b,
	0x01420fff5,
	0x024a50010,
	0x024c3fffd,
	0x00083082b,
	0x010200008,
	0x000000027,
	0x08ca80000,
	0x000000027,
	0x0ac880000,
	0x024840004,
	0x00083082b,
	0x01420fffa,
	0x024a50004,
	0x010e50006,
	0x000000027,
	0x080a80000,
	0x024a50001,
	0x0a0880000,
	0x014e5fffc,
	0x024840001,
	0x08fa10008,
	0x003e00008,
	0x000000825,
	0x023bdfff4,
	0x08fa60014,
	0x08fa80010,
	0x08fa50018,
	0x000c8202b,
	0x01080000e,
	0x023bd0004,
	0x014400028,
	0x000000027,
	0x001053821,
	0x000c53021,
	0x024a5ffff,
	0x004a00006,
	0x000e60826,
	0x030210003,
	0x014200024,
	0x000000027,
	0x030e10003,
	0x010200007,
	0x000000027,
	0x080e8ffff,
	0x024e7ffff,
	0x0a0c8ffff,
	0x030e10003,
	0x01420fffb,
	0x024c6ffff,
	0x080c20000,
	0x024a3000f,
	0x00067082b,
	0x01020000d,
	0x000000027,
	0x08ce8fffc,
	0x08ce9fff8,
	0x0acc8fffc,
	0x08ce8fff4,
	0x0acc9fff8,
	0x08ce9fff0,
	0x024e7fff0,
	0x0acc8fff4,
	0x0acc9fff0,
	0x00067082b,
	0x01420fff5,
	0x024c6fff0,
	0x024a30003,
	0x00067082b,
	0x010200007,
	0x000000027,
	0x08ce8fffc,
	0x024e7fffc,
	0x0acc8fffc,
	0x00067082b,
	0x01420fffb,
	0x024c6fffc,
	0x010e5ffd3,
	0x000000027,
	0x080e8ffff,
	0x000000027,
	0x0a0c8ffff,
	0x024c6ffff,
	0x008001630,
	0x024e7ffff,
	0x0080014e8,
	0x0a0e20000,
	0x023bd000c,
	0x003e00008,
	0x000080825,
	0x000083825,
	0x024a5ffff,
	0x004a00008,
	0x000000027,
	0x000062025,
	0x024c60001,
	0x080840000,
	0x000071825,
	0x0a0640000,
	0x0080014f4,
	0x024e70001,
	0x023bd000c,
	0x003e00008,
	0x000080825,
	0x000000000,
	0x062616420,
	0x074797065,
	0x03a202564,
	0x00a006261,
	0x064207479,
	0x070653a20,
	0x025640a00,
	0x000000000,
	0x000000000,
	0x000000001,


@@ 4364,14 4683,7 @@ ulong bootcode[]={
	0x000989680,
	0x005f5e100,
	0x03b9aca00,
	0x062616420,
	0x074797065,
	0x03a202564,
	0x00a006261,
	0x064207479,
	0x070653a20,
	0x025640a00,
	0x000000000,
	0x000000007,
	0x000000000,
	0x03fd34413,
	0x055475a32,


@@ 4391,6 4703,19 @@ ulong bootcode[]={
	0x061747573,
	0x000000000,
	0x000000000,
	0x000006190,
	0x000006195,
	0x0000061aa,
	0x0000061b1,
	0x0000061c6,
	0x0000061cc,
	0x0000061e1,
	0x0000061e9,
	0x0000061fe,
	0x000006202,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,


@@ 4405,17 4730,16 @@ ulong bootcode[]={
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000007,
	0x000000000,
	0x0001fffff,
	0x07fffffff,
	0x00000446c,
	0x000004584,
	0x000003fa8,
	0x000004660,
	0x0000044b4,
	0x0000044fc,
	0x00000454c,
	0x000004834,
	0x00000494c,
	0x000004370,
	0x000004a28,
	0x00000487c,
	0x0000048c4,
	0x000004914,
	0x000000000,
	0x000000000,
	0x000000000,


@@ 4439,43 4763,26 @@ ulong bootcode[]={
	0x000000000,
	0x000000000,
	0x000000000,
	0x062697462,
	0x06f6f7465,
	0x073006269,
	0x074636f6e,
	0x06e656374,
	0x000626974,
	0x021626f6f,
	0x074657300,
	0x0726f7373,
	0x000636f6e,
	0x06e656374,
	0x020303230,
	0x037303130,
	0x030356566,
	0x066006e6f,
	0x06e657421,
	0x0726f7373,
	0x000626f6f,
	0x074657300,
	0x0636f6e6e,
	0x065637420,
	0x030383030,
	0x036393032,
	0x030323035,
	0x0006e6f6e,
	0x065742162,
	0x06f6f7465,
	0x073006865,
	0x06600626f,
	0x06f746573,
	0x000636f6e,
	0x06e656374,
	0x020303830,
	0x030363930,
	0x032303230,
	0x035006865,
	0x06c697800,
	0x0636f6e6e,
	0x065637420,
	0x030383030,
	0x036393032,
	0x030343237,
	0x0006e6f6e,
	0x065742168,
	0x0656c6978,
	0x000737069,
	0x06e646c65,
	0x000636f6e,


@@ 4483,19 4790,13 @@ ulong bootcode[]={
	0x020303830,
	0x030363930,
	0x032303264,
	0x066006e6f,
	0x06e657421,
	0x07370696e,
	0x0646c6500,
	0x072373000,
	0x0636f6e6e,
	0x065637420,
	0x030383030,
	0x032623034,
	0x032363564,
	0x0006e6f6e,
	0x065742172,
	0x037300023,
	0x066007237,
	0x03000636f,
	0x06e6e6563,
	0x074203038,
	0x030303262,
	0x030343236,
	0x035640023,
	0x0632f636f,
	0x06e730023,
	0x0632f636f,


@@ 4509,174 4810,227 @@ ulong bootcode[]={
	0x065007379,
	0x0736e616d,
	0x065006269,
	0x074626f6f,
	0x074657300,
	0x02f6d6970,
	0x0732f3900,
	0x073657276,
	0x065720062,
	0x06f6f743a,
	0x020257320,
	0x0756e6b6e,
	0x06f776e0a,
	0x000626974,
	0x0636f6e6e,
	0x065637400,
	0x023332f62,
	0x069743300,
	0x07421626f,
	0x06f746573,
	0x0002f6d69,
	0x070732f39,
	0x00023332f,
	0x062697433,
	0x00063616e,
	0x027742063,
	0x06f6e7665,
	0x07274206e,
	0x06f6e6574,
	0x020616464,
	0x072657373,
	0x020746f20,
	0x065746865,
	0x072206164,
	0x064726573,
	0x0730a0023,
	0x06c2f312f,
	0x063746c00,
	0x06f70656e,
	0x0696e6720,
	0x023332f62,
	0x069743300,
	0x0236c2f31,
	0x02f63746c,
	0x0006f7065,
	0x06e696e67,
	0x020236c2f,
	0x0312f6374,
	0x06c00636f,
	0x06e6e6563,
	0x074203078,
	0x039303000,
	0x0636f6e6e,
	0x065637420,
	0x030783930,
	0x030007075,
	0x000636f6e,
	0x06e656374,
	0x020307839,
	0x030300063,
	0x06f6e6e65,
	0x063742030,
	0x078393030,
	0x000707573,
	0x068206e6f,
	0x065746865,
	0x072007075,
	0x07368206e,
	0x06f657468,
	0x065720070,
	0x075736820,
	0x06e6f6574,
	0x068657200,
	0x065720063,
	0x06f6e6669,
	0x067206e6f,
	0x06e657400,
	0x0636f6e66,
	0x06967206e,
	0x06f6e6574,
	0x000636f6e,
	0x066696720,
	0x06e6f6e65,
	0x07400236e,
	0x06e6f6e65,
	0x0742f322f,
	0x064617461,
	0x0006f7065,
	0x06e696e67,
	0x020236e6e,
	0x000236e6e,
	0x06f6e6574,
	0x02f322f64,
	0x061746100,
	0x06f70656e,
	0x0696e6720,
	0x0236e6e6f,
	0x06e65742f,
	0x0322f6374,
	0x0322f6461,
	0x074610023,
	0x06e6e6f6e,
	0x065742f32,
	0x02f63746c,
	0x0006f7065,
	0x06e696e67,
	0x020236e6e,
	0x06f6e6574,
	0x02f322f63,
	0x0746c0023,
	0x0682f6374,
	0x06c006f70,
	0x0656e696e,
	0x06720236e,
	0x067202368,
	0x02f63746c,
	0x000707573,
	0x06820646b,
	0x06d757800,
	0x070757368,
	0x020646b6d,
	0x075780063,
	0x06f6e6669,
	0x067203420,
	0x032353620,
	0x072657374,
	0x061727420,
	0x0646b0063,
	0x06f6e6669,
	0x067203420,
	0x032353620,
	0x072657374,
	0x061727420,
	0x0646b0023,
	0x06b646b2f,
	0x0352f6461,
	0x07461006f,
	0x070656e69,
	0x06e672023,
	0x06b646b2f,
	0x0352f6461,
	0x074610023,
	0x06b646b2f,
	0x0352f6374,
	0x06c006f70,
	0x0656e696e,
	0x06720236b,
	0x0646b2f35,
	0x02f63746c,
	0x000636f6e,
	0x06e656374,
	0x020257300,
	0x073657276,
	0x065720062,
	0x069742100,
	0x0646b2100,
	0x06e6f6e65,
	0x0742f322f,
	0x063746c00,
	0x06e6f702e,
	0x02e2e006e,
	0x0203d2025,
	0x0640a0077,
	0x072697465,
	0x0206e6f70,
	0x000726561,
	0x064206e6f,
	0x070006e20,
	0x03d202564,
	0x03b206275,
	0x066203d20,
	0x074210063,
	0x0616e2774,
	0x020636f6e,
	0x06e656374,
	0x02c207265,
	0x074727969,
	0x06e672e2e,
	0x02e0a0063,
	0x0616e2774,
	0x020636f6e,
	0x06e656374,
	0x00a006e6f,
	0x0702e2e2e,
	0x0006e203d,
	0x02025640a,
	0x000777269,
	0x07465206e,
	0x06f700072,
	0x065616420,
	0x06e6f7000,
	0x06e203d20,
	0x025643b20,
	0x062756620,
	0x03d20252e,
	0x032782025,
	0x02e327820,
	0x0252e3278,
	0x020252e32,
	0x07820252e,
	0x032782025,
	0x02e32780a,
	0x000666f72,
	0x06d617420,
	0x06e6f7000,
	0x06e6f7420,
	0x0526e6f70,
	0x000746167,
	0x0206e6f74,
	0x0207e3000,
	0x0780a0066,
	0x06f726d61,
	0x074206e6f,
	0x070006e6f,
	0x07420526e,
	0x06f700074,
	0x06167206e,
	0x06f74207e,
	0x030007365,
	0x07373696f,
	0x06e2e2e2e,
	0x000777269,
	0x074652073,
	0x065737369,
	0x06f6e0072,
	0x065616420,
	0x073657373,
	0x0696f6e2e,
	0x02e2e0077,
	0x0696f6e00,
	0x0666f726d,
	0x061742073,
	0x065737369,
	0x06f6e0074,
	0x06167206e,
	0x06f74207e,
	0x03000626f,
	0x06f743a20,
	0x06572726f,
	0x072202573,
	0x00a006e6f,
	0x074205273,
	0x065737369,
	0x06f6e0070,
	0x06f73742e,
	0x02e2e0023,
	0x0732f2573,
	0x000637265,
	0x061746500,
	0x025640077,
	0x072697465,
	0x020736573,
	0x073696f6e,
	0x000726561,
	0x064207365,
	0x07373696f,
	0x06e00666f,
	0x0726d6174,
	0x020736573,
	0x073696f6e,
	0x000746167,
	0x0206e6f74,
	0x0207e3000,
	0x0626f6f74,
	0x03a206572,
	0x0726f7220,
	0x025730a00,
	0x06e6f7420,
	0x052736573,
	0x073696f6e,
	0x000706f73,
	0x0742e2e2e,
	0x00023732f,
	0x025730063,
	0x072656174,
	0x065002564,
	0x000777269,
	0x074650023,
	0x0732f626f,
	0x06f740063,
	0x072656174,
	0x065002564,
	0x000777269,
	0x07465006d,
	0x06f756e74,
	0x02e2e2e00,
	0x02f002f00,
	0x062696e64,
	0x0002f0000,
	0x0626f6f74,
	0x000637265,
	0x061746500,
	0x025640077,
	0x072697465,
	0x0006d6f75,
	0x06e740073,
	0x075636365,
	0x073730a00,
	0x02f6d6970,
	0x0732f696e,
	0x069740069,
	0x06e742e2e,
	0x02e002f00,
	0x02f006269,
	0x06e64002f,
	0x00000006d,
	0x06f756e74,
	0x000737563,
	0x063657373,
	0x00a002f6d,
	0x06970732f,
	0x0696e6974,
	0x000696e69,
	0x074002d6d,
	0x0002f6d69,
	0x070732f69,
	0x06e697400,
	0x0696e6974,
	0x0002f6d69,
	0x070732f69,
	0x06e697400,
	0x02d6d002f,
	0x06d697073,
	0x02f696e69,
	0x07400696e,
	0x06974002f,
	0x06d697073,
	0x02f696e69,
	0x07400626f,
	0x06f743a20,
	0x025733a20,
	0x025730a00,
	0x0626f6f74,
	0x03a202573,
	0x03a202573,
	0x00a003f00,
	0x068656c70,
	0x00025730a,
	0x00025735b,
	0x025735d3a,
	0x020006361,
	0x06e277420,
	0x072656164,
	0x02023632f,
	0x0636f6e73,
	0x03b20706c,
	0x065617365,
	0x020726562,
	0x06f6f7400,
	0x000000000,
	0x00a00626f,
	0x06f743a20,
	0x025733a20,
	0x025730a00,
	0x025735b25,
	0x0735d3a20,
	0x00063616e,
	0x027742072,
	0x065616420,
	0x023632f63,
	0x06f6e733b,
	0x020706c65,
	0x061736520,
	0x07265626f,
	0x06f740000,
	0x000000000,
	0x000000000,
	0x000000000,


@@ 4709,30 5063,8 @@ ulong bootcode[]={
	0x000010000,
	0x002000000,
	0x000000000,
	0x000006158,
	0x000006162,
	0x00000616d,
	0x000006178,
	0x00000617d,
	0x000006192,
	0x00000619d,
	0x0000061a4,
	0x0000061b9,
	0x0000061c6,
	0x0000061cc,
	0x0000061e1,
	0x0000061ed,
	0x0000061f5,
	0x00000620a,
	0x000006218,
	0x00000621c,
	0x000006231,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000049f0,
	0x00004f20,
	0x0,
	0x000049f0,
	0x00004f20,
	0x0,
};

M power/errno.h => power/errno.h +1 -1
@@ 53,5 53,5 @@ enum{
	Enovmem,	/* virtual memory allocation failed */
	Enoasync,	/* out of async stream modules */
	Enopipe,	/* out of pipes */
	Egreg,		/* ken hasn't implemented datakit */
	Egreg,		/* ken has implemented datakit */
};

M power/main.c => power/main.c +1 -1
@@ 600,7 600,7 @@ confinit(void)
	/*
	 *  set minimal default values
	 */
	conf.nmach = 2;
	conf.nmach = 1;
	conf.nmod = 10000;
	conf.nalarm = 10000;
	conf.norig = 500;