~kris/9p

9hist

28c97040b6ae54e1a8b1631ccb195ab59a706acb — David du Colombier 36 years ago f3ed7ed
Plan 9 from Bell Labs 1990-04-27
9 files changed, 1476 insertions(+), 1028 deletions(-)

M port/devboot.c
M port/devlance.c
M power/bboot.c
M power/boot.c
M power/boot.h
M power/fns.h
M power/l.s
M power/main.c
M power/trap.c
M port/devboot.c => port/devboot.c +1 -0
@@ 104,6 104,7 @@ bootwrite(Chan *c, void *buf, long n)
	case Qboot:
		pc = *(ulong*)buf;
		splhi();
		flushmmu();
		gotopc(pc);
	}
	error(0, Ebadarg);

M port/devlance.c => port/devlance.c +7 -0
@@ 252,6 252,13 @@ lancedebq(char tag, Pkt *p, int len)
	memcpy(&(t->p), p, sizeof(Dpkt));
	l.dq.next = (l.dq.next+1) % Ndpkt;
	unlock(&l.dq);
/*	{
		char buf[1024];
		if(p->d[0] != 0xff){
			sprintpacket(buf, t);
			print("%s\n", buf);
		}
	} /**/
}

/*

M power/bboot.c => power/bboot.c +303 -161
@@ 3,9 3,23 @@

#include <fcall.h>

void	error(char *);
#define DEFFILE "/mips/9"
#define DEFSYS "bitbootes"

Fcall	hdr;
char	*sys;
char	*scmd;
char	*bootfile;

char	sbuf[2*NAMELEN];
char	bbuf[5*NAMELEN];
char	buf[4*1024];

int fd;
int cfd;
int efd;


typedef
struct address {
	char *name;


@@ 22,55 36,6 @@ Address addr[] = {
	{ 0 }
};

#define DEFFILE "/sys/src/9/mips/9"

char *
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->cmd;
	}
	return 0;
}

/*
 *  read a segment into memory
 */
int
readseg(int in, int out, long inoff, long outoff, int len)
{
	long	n;

	if(seek(in, inoff, 0) < 0){
		error("seeking bootfile");
		return -1;
	}
	if(seek(out, outoff, 0) != outoff){
		error("seeking #b/mem");
		return -1;
	}
	for(; len > 0; len -= n){
		print(".");
		if((n = read(in, buf, sizeof buf)) <= 0){
			error("reading bootfile");
			return -1;
		}
		if(write(out, buf, n) != n){
			error("writing #b/mem");
			return -1;
		}
	}
	return 0;
}

struct a_out_h {
	ulong	magic;			/* magic and sections */
	ulong	timestamp;		/* time and date */


@@ 95,97 60,97 @@ struct a_out_h {
} a_out;

/*
 *  read the kernel into memory and jump to it
 *  predeclared
 */
int
readkernel(int fd)
{
	int n;
	int bfd;
char	*lookup(char *);
int	readseg(int, int, long, long, int);
int	readkernel(int);
int	outin(char *, char *, char *, int);
void	prerror(char *);
void	error(char *);
void	boot(int);

	bfd = open("#b/mem", OWRITE);
	if(bfd < 0)
		error("can't open #b/mem");
/*
 *  usage: 9b [-a] [server] [file]
 *
 *  default server is `bitbootes', default file is `/sys/src/9/mips/9'
 */
main(int argc, char *argv[])
{
	int i;

	n = read(fd, &a_out, sizeof(a_out));
	if(n <= 0)
		error("can't read boot file");
	open("#c/cons", 0);
	open("#c/cons", 1);
	open("#c/cons", 1);

	print("\n%d", a_out.text);
	if(readseg(fd, bfd, 20*4, a_out.textva, a_out.text)<0)
		error("can't read boot file");
	print("+%d", a_out.data);
	if(readseg(fd, bfd, 20*4 + a_out.text, a_out.textva + a_out.text, a_out.data)<0)
		error("can't read boot file");
	print("+%d\n", a_out.bss);
	argv++;
	argc--;	
	while(argc > 0){
		if(argv[0][0] == '-'){
			argc--;
			argv++;
		} else
			break;
	}

	close(bfd);
	bfd = open("#b/boot", OWRITE);
	if(bfd < 0)
		error("can't open #b/boot");
	
	print("entry: %ux\n", a_out.entryva);
	sleep(1000);
	if(write(bfd, &a_out.entryva, sizeof a_out.entryva) != sizeof a_out.entryva)
		error("can't start kernel");
	sys = DEFSYS;
	bootfile = DEFFILE;
	switch(argc){
	case 1:
		bootfile = argv[0];
		break;
	case 2:
		bootfile = argv[0];
		sys = argv[1];
		break;
	}

	return 0;
	boot(0);
	for(;;){
		if(fd > 0)
			close(fd);
		if(cfd > 0)
			close(cfd);
		if(efd > 0)
			close(efd);
		fd = cfd = efd = 0;
		boot(1);
	}
}

Fcall	hdr;
char	srv[100];

main(int argc, char *argv[])
void
boot(int ask)
{
	int cfd, fd, n, fu, f;
	char buf[NAMELEN];
	char bootfile[256];
	char *scmd;
	int n;

	open("#c/cons", 0);
	open("#c/cons", 1);
	open("#c/cons", 1);
	if(ask){
		outin("bootfile", bootfile, bbuf, sizeof(bbuf));
		bootfile = bbuf;
	}

	/*
	 *  get server
	 */
	do{
		do{
			print("server[%s]: ", addr[0].name);
			n = read(0, srv, sizeof srv);
		}while(n==0);
		if(n < 0)
			error("can't read #c/cons; please reboot");
		if(n == 1)
			strcpy(srv, addr[0].name);
		else
			srv[n-1] = 0;
		scmd = lookup(srv);
	}while(scmd == 0);
	if(!ask)
		scmd = lookup(sys);
	else {
		outin("server", sys, sbuf, sizeof(sbuf));
		sys = sbuf;
		scmd = lookup(sys);
	}
	if(scmd == 0){
		fprint(2, "boot: %s unknown\n", sys);
		return;
	}

	print("Booting %s from server %s\n", bootfile, sys);

	/*
	 *  get file.  if the user typed cr to the server question, skip
	 *  the file question and just use the default.
	 *  for the bit, we skip all the ether goo
	 */
	if(n != 1){
		do{
			print("bootfile[%s]: ", DEFFILE);
			n = read(0, buf, sizeof buf);
		}while(n==0);
		if(n < 0)
			error("can't read #c/cons; please reboot");
		if(n == 1)
			strcpy(buf, DEFFILE);
		else
			buf[n-1] = 0;
		strcpy(bootfile, buf);
	}else
		strcpy(bootfile, DEFFILE);

	if(strcmp(scmd, "bitconnect") == 0){
		fd = open("#3/bit3", ORDWR);
		if(fd < 0)
			error("opening #3/bit3");
		if(fd < 0){
			prerror("opening #3/bit3");
			return;
		}
		goto Mesg;
	}



@@ 194,75 159,123 @@ main(int argc, char *argv[])
	 *  and push the nonet ethernet multiplexor onto it.
	 */
	cfd = open("#l/1/ctl", 2);
	if(cfd < 0)
		error("opening #l/1/ctl");
	if(write(cfd, "connect 0x900", sizeof("connect 0x900")-1)<0)
		error("connect 0x900");
	if(write(cfd, "push noether", sizeof("push noether")-1)<0)
		error("push noether");
	if(cfd < 0){
		prerror("opening #l/1/ctl");
		return;
	}
	if(write(cfd, "connect 0x900", sizeof("connect 0x900")-1)<0){
		prerror("connect 0x900");
		return;
	}
	if(write(cfd, "push noether", sizeof("push noether")-1)<0){
		prerror("push noether");
		return;
	}

	/*
	 *  grab a nonet channel and call up the ross file server
	 */
	fd = open("#n/1/data", 2);
	if(fd < 0)
		error("opening #n/1/data");
	if(fd < 0) {
		prerror("opening #n/1/data");
		return;
	}
	cfd = open("#n/1/ctl", 2);
	if(cfd < 0)
		error("opening #n/1/ctl");
	if(write(cfd, scmd, strlen(scmd))<0)
		error(scmd);
	if(cfd < 0){
		prerror("opening #n/1/ctl");
		return;
	}
	if(write(cfd, scmd, strlen(scmd))<0){
		prerror(scmd);
		return;
	}

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

	print("session...");
	hdr.type = Tsession;
	hdr.lang = 'v';
	n = convS2M(&hdr, buf);
	if(write(fd, buf, n) != n)
		error("write session");
	if(write(fd, buf, n) != n){
		prerror("write session");
		return;
	}
	n = read(fd, buf, sizeof buf);
	if(n <= 0)
		error("read session");
	if(convM2S(buf, &hdr, n) == 0)
		error("format session");
	if(hdr.type != Rsession)
		error("not Rsession");
	if(n <= 0){
		prerror("read session");
		return;
	}
	if(convM2S(buf, &hdr, n) == 0){
		prerror("format session");
		return;
	}
	if(hdr.type != Rsession){
		prerror("not Rsession");
		return;
	}
	if(hdr.err){
		print("error %d;", hdr.err);
		error("remote error");
		prerror("remote error");
		return;
	}

	print("mount...");
	if(bind("/", "/", MREPL) < 0)
		error("bind");
	if(mount(fd, "/", MAFTER|MCREATE, "") < 0)
		error("mount");
	if(bind("/", "/", MREPL) < 0){
		prerror("bind");
		return;
	}
	if(mount(fd, "/", MAFTER|MCREATE, "") < 0){
		prerror("mount");
		return;
	}
	close(fd);

	print("open file...");
	fd = open(bootfile, OREAD);
	if(fd < 0)
		error("opening bootfile");
	while((fd = open(bootfile, OREAD)) < 0){
		outin("bootfile", DEFFILE, bbuf, sizeof(bbuf));
		bootfile = bbuf;
	}
	readkernel(fd);
	error("couldn't read kernel");
	prerror("couldn't read kernel");
}

/*
 *  print error
 */
void
prerror(char *s)
{
	char buf[64];

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

/*
 *  print error and exit
 */
void
error(char *s)
{


@@ 272,3 285,132 @@ error(char *s)
	fprint(2, "boot: %s: %s\n", s, buf);
	exits(0);
}

/*
 *  lookup the address for a system
 */
char *
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->cmd;
	}
	return 0;
}

/*
 *  read a segment into memory
 */
int
readseg(int in, int out, long inoff, long outoff, int len)
{
	long	n, i;
	ulong sum = 0;

	if(seek(in, inoff, 0) < 0){
		prerror("seeking bootfile");
		return -1;
	}
	if(seek(out, outoff, 0) != outoff){
		prerror("seeking #b/mem");
		return -1;
	}
	for(; len > 0; len -= n){
		if((n = read(in, buf, sizeof buf)) <= 0){
			prerror("reading bootfile");
			return -1;
		}
		for(i = 0; i < n; i++)
			sum += buf[i];
		if(sum & 0xf0000000)
			sum = (sum & 0xfffffff) + ((sum & 0xf0000000) >> 28);
		if(write(out, buf, n) != n){
			prerror("writing #b/mem");
			return -1;
		}
	}
	print("[%ux]", sum);
	return 0;
}

/*
 *  read the kernel into memory and jump to it
 */
int
readkernel(int fd)
{
	int n;
	int bfd;

	bfd = open("#b/mem", OWRITE);
	if(bfd < 0){
		prerror("can't open #b/mem");
		return;
	}

	n = read(fd, &a_out, sizeof(a_out));
	if(n <= 0){
		prerror("can't read boot file");
		close(bfd);
		return;
	}

	print("\n%d", a_out.text);
	if(readseg(fd, bfd, 20*4, a_out.textva, a_out.text)<0){
		prerror("can't read boot file");
		close(bfd);
		return;
	}
	print("+%d", a_out.data);
	if(readseg(fd, bfd, 20*4 + a_out.text, a_out.textva + a_out.text, a_out.data)<0){
		prerror("can't read boot file");
		close(bfd);
		return;
	}
	print("+%d\n", a_out.bss);

	close(bfd);
	bfd = open("#b/boot", OWRITE);
	if(bfd < 0){
		prerror("can't open #b/boot");
		return;
	}
	
	print("entry: %ux\n", a_out.entryva);
	sleep(1000);
	if(write(bfd, &a_out.entryva, sizeof a_out.entryva) != sizeof a_out.entryva){
		prerror("can't start kernel");
		close(bfd);
	}

	return;
}

/*
 *  prompt and get input
 */
int
outin(char *prompt, char *def, char *buf, int len)
{
	int n;

	do{
		print("%s[%s]: ", prompt, def);
		n = read(0, buf, len);
	}while(n==0);
	if(n < 0)
		error("can't read #c/cons; please reboot");
	if(n == 1)
		strcpy(buf, def);
	else
		buf[n-1] = 0;
	return n;
}

M power/boot.c => power/boot.c +205 -96
@@ 3,11 3,21 @@

#include <fcall.h>

#define DEFSYS "bitbootes"
#define DEFFILE "/mips/9"

Fcall	hdr;
char	buf[100];
char	srv[100];
char	*sys;
char	*scmd;
char	*bootfile;

char	sbuf[2*NAMELEN];
char	buf[4*1024];

int fd;
int cfd;
int efd;

void	error(char *);

typedef
struct address {


@@ 25,82 35,97 @@ Address addr[] = {
	{ 0 }
};

#define DEFUSER "bootes"
/*
 *  predeclared
 */
char	*lookup(char *);
int	outin(char *, char *, char *, int);
void	prerror(char *);
void	error(char *);
void	boot(int);

char *
lookup(char *arg)
/*
 *  usage: 9b [-a] [server] [file]
 *
 *  default server is `bitbootes', default file is `/sys/src/9/mips/9'
 */
main(int argc, char *argv[])
{
	Address *a;
	int i;
	int manual=0;

	if(strcmp(arg, "?")==0 || strcmp(arg, "help")==0){
		for(a = addr; a->name; a++)
			print("%s\n", a->name);
		return 0;
	open("#c/cons", 0);
	open("#c/cons", 1);
	open("#c/cons", 1);

	print("boot.c staring\n");

	argv++;
	argc--;	

	while(argc > 0){
		if(argv[0][0] == '-'){
			if(argv[0][1] == 'm')
				manual = 1;
			argc--;
			argv++;
		} else
			break;
	}
	for(a = addr; a->name; a++){
		if(strcmp(a->name, arg) == 0)
			return a->cmd;

	sys = DEFSYS;
	bootfile = DEFFILE;
	switch(argc){
	case 1:
		bootfile = argv[0];
		break;
	case 2:
		bootfile = argv[0];
		sys = argv[1];
		break;
	}

	boot(manual);
	for(;;){
		if(fd > 0)
			close(fd);
		if(cfd > 0)
			close(cfd);
		if(efd > 0)
			close(efd);
		fd = cfd = efd = 0;
		boot(1);
	}
	return 0;
}

main(int argc, char *argv[])
void
boot(int ask)
{
	int cfd, fd, n, fu, f;
	char buf[NAMELEN];
	char *scmd;
	int n, f;

	open("#c/cons", 0);
	open("#c/cons", 1);
	open("#c/cons", 1);
	if(!ask)
		scmd = lookup(sys);
	else {
		outin("server", sys, sbuf, sizeof(sbuf));
		sys = sbuf;
		scmd = lookup(sys);
	}
	if(scmd == 0){
		fprint(2, "boot: %s unknown\n", sys);
		return;
	}

	/*
	 *  get server
	 */
	do{
		do{
			print("server[%s]: ", addr[0].name);
			n = read(0, srv, sizeof srv);
		}while(n==0);
		if(n < 0)
			error("can't read #c/cons; please reboot");
		if(n == 1)
			strcpy(srv, addr[0].name);
		else
			srv[n-1] = 0;
		scmd = lookup(srv);
	}while(scmd == 0);
	print("Connecting to server %s\n", sys);

	/*
	 *  get user.  if the user typed cr to the server question, skip
	 *  the user question and just use the default.
	 *  for the bit, we skip all the ether goo
	 */
	if(n != 1){
		do{
			print("user[%s]: ", DEFUSER);
			n = read(0, buf, sizeof buf);
		}while(n==0);
		if(n < 0)
			error("can't read #c/cons; please reboot");
		if(n == 1)
			strcpy(buf, DEFUSER);
		else
			buf[n-1] = 0;
	}else
		strcpy(buf, DEFUSER);

	fu = create("#c/user", 1, 0600);
	if(fu < 0)
		error("#c/user");
	n = strlen(buf);
	if(write(fu, buf, n) != n)
		error("user write");
	close(fu);

	if(strcmp(scmd, "bitconnect") == 0){
		fd = open("#3/bit3", ORDWR);
		if(fd < 0)
			error("opening #3/bit3");
		if(fd < 0){
			prerror("opening #3/bit3");
			return;
		}
		goto Mesg;
	}



@@ 108,63 133,92 @@ main(int argc, char *argv[])
	 *  grab a lance channel, make it recognize ether type 0x900,
	 *  and push the nonet ethernet multiplexor onto it.
	 */
	cfd = open("#l/1/ctl", 2);
	if(cfd < 0)
		error("opening #l/1/ctl");
	if(write(cfd, "connect 0x900", sizeof("connect 0x900")-1)<0)
		error("connect 0x900");
	if(write(cfd, "push noether", sizeof("push noether")-1)<0)
		error("push noether");
	efd = open("#l/1/ctl", 2);
	if(efd < 0){
		prerror("opening #l/1/ctl");
		return;
	}
	if(write(efd, "connect 0x900", sizeof("connect 0x900")-1)<0){
		prerror("connect 0x900");
		return;
	}
	if(write(efd, "push noether", sizeof("push noether")-1)<0){
		prerror("push noether");
		return;
	}

	/*
	 *  grab a nonet channel and call up the ross file server
	 */
	fd = open("#n/1/data", 2);
	if(fd < 0)
		error("opening #n/1/data");
	if(fd < 0) {
		prerror("opening #n/1/data");
		return;
	}
	cfd = open("#n/1/ctl", 2);
	if(cfd < 0)
		error("opening #n/1/ctl");
	if(write(cfd, scmd, strlen(scmd))<0)
		error(scmd);
	if(cfd < 0){
		prerror("opening #n/1/ctl");
		return;
	}
	if(write(cfd, scmd, strlen(scmd))<0){
		prerror(scmd);
		return;
	}

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

	print("session...");
	hdr.type = Tsession;
	hdr.lang = 'v';
	n = convS2M(&hdr, buf);
	if(write(fd, buf, n) != n)
		error("write session");
	if(write(fd, buf, n) != n){
		prerror("write session");
		return;
	}
	n = read(fd, buf, sizeof buf);
	if(n <= 0)
		error("read session");
	if(convM2S(buf, &hdr, n) == 0)
		error("format session");
	if(hdr.type != Rsession)
		error("not Rsession");
	if(n <= 0){
		prerror("read session");
		return;
	}
	if(convM2S(buf, &hdr, n) == 0){
		prerror("format session");
		return;
	}
	if(hdr.type != Rsession){
		prerror("not Rsession");
		return;
	}
	if(hdr.err){
		print("error %d;", hdr.err);
		error("remote error");
		prerror("remote error");
		return;
	}

	print("post...");
	sprint(buf, "#s/%s", srv);
	sprint(buf, "#s/%s", sys);
	f = create(buf, 1, 0666);
	if(f < 0)
		error("create");


@@ 172,7 226,6 @@ main(int argc, char *argv[])
	if(write(f, buf, strlen(buf)) != strlen(buf))
		error("write");
	close(f);
	sprint(buf, "#s/%s", srv);
	f = create("#s/boot", 1, 0666);
	if(f < 0)
		error("create");


@@ 180,7 233,7 @@ main(int argc, char *argv[])
	if(write(f, buf, strlen(buf)) != strlen(buf))
		error("write");
	close(f);
	

	print("mount...");
	if(bind("/", "/", MREPL) < 0)
		error("bind");


@@ 191,6 244,21 @@ main(int argc, char *argv[])
	error("/mips/init");
}

/*
 *  print error
 */
void
prerror(char *s)
{
	char buf[64];

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

/*
 *  print error and exit
 */
void
error(char *s)
{


@@ 200,3 268,44 @@ error(char *s)
	fprint(2, "boot: %s: %s\n", s, buf);
	exits(0);
}

/*
 *  lookup the address for a system
 */
char *
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->cmd;
	}
	return 0;
}

/*
 *  prompt and get input
 */
int
outin(char *prompt, char *def, char *buf, int len)
{
	int n;

	do{
		print("%s[%s]: ", prompt, def);
		n = read(0, buf, len);
	}while(n==0);
	if(n < 0)
		error("can't read #c/cons; please reboot");
	if(n == 1)
		strcpy(buf, def);
	else
		buf[n-1] = 0;
	return n;
}

M power/boot.h => power/boot.h +902 -758
@@ 1,8 1,8 @@
ulong bootcode[]={
	0x00000407,
	0x00003f00,
	0x000004f0,
	0x00000198,
	0x000040f0,
	0x00000548,
	0x000010d0,
	0x00000000,
	0x00001020,
	0x00000000,


@@ 10,633 10,758 @@ ulong bootcode[]={
	0x23bdffec,
	0xafbf0000,
	0x3c1e0000,
	0x37decffe,
	0x37dedffe,
	0x8fa10014,
	0x23a20018,
	0xafa10004,
	0x0c000458,
	0x0c000415,
	0xafa20008,
	0x0c0006a5,
	0x0c000722,
	0xafa10004,
	0x08000411,
	0x00000027,
	0x23bdfff0,
	0x23bdffec,
	0xafbf0000,
	0x8fa20014,
	0x23c381e2,
	0xafa0000c,
	0x23c18232,
	0xafa10004,
	0x0c000e54,
	0xafa00008,
	0x23c2823a,
	0xafa20004,
	0x0c000733,
	0xafa30008,
	0x10200025,
	0x00000027,
	0x8fa20014,
	0x23c381e4,
	0x20010001,
	0x0c000e54,
	0xafa10008,
	0x23c28242,
	0xafa20004,
	0x0c000733,
	0xafa30008,
	0x1020001e,
	0x20010001,
	0x0c000e54,
	0xafa10008,
	0x23c2824a,
	0x0c00074d,
	0xafa20004,
	0x8fa5000c,
	0x2007006d,
	0x8fa1001c,
	0x20060001,
	0x8fa20018,
	0x24230004,
	0x2444ffff,
	0x18800017,
	0x2008002d,
	0x8c620000,
	0x00000027,
	0x23c4803e,
	0x8c820000,
	0x80420000,
	0x00000027,
	0x10400015,
	0x14480011,
	0x00000027,
	0xafa4000c,
	0x8c820000,
	0x8c620000,
	0x00000027,
	0xafa20004,
	0x8fa30014,
	0x0c000733,
	0xafa30008,
	0x8fa4000c,
	0x14200006,
	0x00000027,
	0x8c810004,
	0x8fa20000,
	0x80420001,
	0x00000027,
	0x00400008,
	0x23bd0010,
	0x24840008,
	0x8c820000,
	0x14470002,
	0x00000027,
	0x1440ffed,
	0x00062825,
	0x2484ffff,
	0x18800007,
	0x24630004,
	0x8c620000,
	0x00000027,
	0x8fa20000,
	0x23bd0010,
	0x00400008,
	0x00000825,
	0x23c4803e,
	0x8c810000,
	0x80420000,
	0x00000027,
	0x1020000e,
	0x1048fff1,
	0x00000027,
	0x23c281e9,
	0xafa20004,
	0xafa4000c,
	0x8c810000,
	0x0c0006d0,
	0xafa10008,
	0x8fa2000c,
	0x23c1825a,
	0xafc18002,
	0x23c28264,
	0x38810001,
	0x10200029,
	0xafc28006,
	0x38810002,
	0x10200020,
	0x00000027,
	0x24440008,
	0x8c810000,
	0x0c000479,
	0xafa50004,
	0x8fc38052,
	0x00000027,
	0x1420fff4,
	0x18600003,
	0x00000027,
	0x8fa20000,
	0x23bd0010,
	0x00400008,
	0x00000825,
	0x23bdffb0,
	0xafbf0000,
	0x23c281ed,
	0xafa20004,
	0x0c000dd7,
	0xafa00008,
	0x23c181f5,
	0xafa10004,
	0x20020001,
	0x0c000dd7,
	0xafa20008,
	0x23c181fd,
	0xafa10004,
	0x20020001,
	0x0c000dd7,
	0xafa20008,
	0x23c18205,
	0xafa10004,
	0x8fc2803e,
	0x0c0006d0,
	0xafa20008,
	0xafa00004,
	0x23c28622,
	0xafa20008,
	0x20030064,
	0x0c000ddc,
	0xafa3000c,
	0x00012025,
	0x14800003,
	0x0c000e3b,
	0xafa30004,
	0x8fc18016,
	0x00000027,
	0x08000468,
	0x18200004,
	0x00000027,
	0x04810006,
	0xafa40044,
	0x23c18212,
	0x0c000664,
	0xafa10004,
	0x8fa40044,
	0x8fc28016,
	0x0c000e3b,
	0xafa20004,
	0x8fc1801a,
	0x00000027,
	0x20010001,
	0x148101df,
	0x18200004,
	0x00000027,
	0x23c28622,
	0x8fc2801a,
	0x0c000e3b,
	0xafa20004,
	0x8fc1803e,
	0x0c000749,
	0xafa10008,
	0x23c18622,
	0x0c000415,
	0xafa10004,
	0x00012025,
	0x14800003,
	0xafa4001c,
	0x08000468,
	0x00000027,
	0x8fa10044,
	0xafc0801a,
	0xafc08016,
	0xafc08052,
	0x20020001,
	0x102201c7,
	0x00000027,
	0x23c28234,
	0x0c000479,
	0xafa20004,
	0x23c1823f,
	0x0c0006d0,
	0xafa10008,
	0xafa00004,
	0x23a10020,
	0xafa10008,
	0x2003001c,
	0x0c000ddc,
	0xafa3000c,
	0x00012025,
	0x14800003,
	0x8fc38052,
	0x08000455,
	0x00000027,
	0x08000493,
	0x8c620000,
	0x00000027,
	0x04810006,
	0xafa40044,
	0x23c28246,
	0x0c000664,
	0xafa20004,
	0x8fa40044,
	0xafc28006,
	0x8c610004,
	0x08000451,
	0xafc18002,
	0x8c610000,
	0x08000451,
	0xafc18006,
	0x23bdffdc,
	0xafbf0000,
	0x8fc48002,
	0x8fa10028,
	0x00000027,
	0x20020001,
	0x148201a9,
	0x142001cc,
	0x00000027,
	0x23a10020,
	0xafa10004,
	0x23c28268,
	0x0c000749,
	0xafa20008,
	0x23c28276,
	0x0c000681,
	0xafa40004,
	0x00012025,
	0x1480000c,
	0xafc4802e,
	0x20020002,
	0xafa20004,
	0x20030001,
	0xafa30008,
	0x20020180,
	0x0c000dc3,
	0x23c18273,
	0xafa10008,
	0x8fc28002,
	0x0c000773,
	0xafa2000c,
	0x04210004,
	0xafa10040,
	0x23c1827e,
	0x0c000664,
	0xafa10004,
	0x23a10020,
	0x0c000756,
	0xafa10004,
	0x8fa20040,
	0x23a30020,
	0xafa20004,
	0xafa30008,
	0xafa10044,
	0x0c000de1,
	0xafa1000c,
	0x8fa30044,
	0x00000027,
	0x10230004,
	0x8fa20000,
	0x00000027,
	0x23c18286,
	0x0c000664,
	0x00400008,
	0x23bd0024,
	0x23c18285,
	0xafa10004,
	0x8fa20040,
	0x0c000dbe,
	0xafa20004,
	0x8fa2001c,
	0x23c38291,
	0x8fc28002,
	0x0c00074d,
	0xafa20008,
	0x8fc2802e,
	0x23c3829e,
	0xafa20004,
	0x0c000733,
	0x0c0007b0,
	0xafa30008,
	0x14200132,
	0x14200152,
	0x20040002,
	0x23c2829c,
	0x23c282a9,
	0xafa20004,
	0x0c000dd7,
	0x0c000e54,
	0xafa40008,
	0x04210004,
	0xafa10048,
	0x23c182a4,
	0x0c000664,
	0x04210008,
	0xafc18052,
	0x23c182b1,
	0x0c000659,
	0xafa10004,
	0x23c2833a,
	0x0c0006d0,
	0x8fa20000,
	0x00000027,
	0x00400008,
	0x23bd0024,
	0x23c28347,
	0x0c00074d,
	0xafa20004,
	0xa3c085da,
	0x23c285da,
	0xa3c095ce,
	0x23c295ce,
	0xafa20004,
	0x23a30020,
	0x0c000771,
	0x23c385ce,
	0x0c0007ee,
	0xafa30008,
	0x00012025,
	0x8fa10048,
	0x23a30020,
	0x8fc18052,
	0x23c385ce,
	0xafa10004,
	0xafa30008,
	0xafa40044,
	0x0c000de1,
	0xafa40020,
	0x0c000e5e,
	0xafa4000c,
	0x8fa30044,
	0x8fa40020,
	0x00000027,
	0x10230004,
	0x1024000c,
	0x00000027,
	0x23c18341,
	0x0c000664,
	0x23c1834e,
	0xafa10004,
	0x0c00074d,
	0xafa40008,
	0x23c18356,
	0x0c000659,
	0xafa10004,
	0x8fa10048,
	0x23a30020,
	0x8fa20000,
	0x00000027,
	0x00400008,
	0x23bd0024,
	0x8fc18052,
	0x23c385ce,
	0xafa10004,
	0xafa30008,
	0x2001001c,
	0x0c000ddc,
	0x20011000,
	0x0c000e59,
	0xafa1000c,
	0xafa10044,
	0x1c200006,
	0x00012025,
	0x23c2834b,
	0x0c000664,
	0x1c200008,
	0x00000027,
	0x23c28360,
	0x0c000659,
	0xafa20004,
	0x8fa40044,
	0x8fa20000,
	0x00000027,
	0x23a20020,
	0x00400008,
	0x23bd0024,
	0x23c285ce,
	0xafa20004,
	0x23c385da,
	0x23c395ce,
	0xafa30008,
	0x0c000b0e,
	0xafa4000c,
	0x14200015,
	0xafa10020,
	0x0c000b8b,
	0xafa1000c,
	0x14200019,
	0x00000027,
	0x23c18354,
	0x23c18369,
	0xafa10004,
	0x8fa20044,
	0x8fa20020,
	0x00000027,
	0xafa20008,
	0x83a10020,
	0x83c185ce,
	0x00000027,
	0xafa1000c,
	0x83a20021,
	0x83c285cf,
	0x00000027,
	0xafa20010,
	0x83a10022,
	0x83c185d0,
	0x00000027,
	0xafa10014,
	0x83a20023,
	0x0c0006d0,
	0x83c285d1,
	0x0c00074d,
	0xafa20018,
	0x23c18377,
	0x0c000664,
	0x23c1838c,
	0x0c000659,
	0xafa10004,
	0x83c285da,
	0x8fa20000,
	0x00000027,
	0x00400008,
	0x23bd0024,
	0x83c295ce,
	0x20010001,
	0x10410004,
	0x10410008,
	0x00000027,
	0x23c28382,
	0x0c000664,
	0x23c28397,
	0x0c000659,
	0xafa20004,
	0x23c1838b,
	0x0c0006d0,
	0x8fa20000,
	0x00000027,
	0x00400008,
	0x23bd0024,
	0x23c183a0,
	0x0c00074d,
	0xafa10004,
	0x20020002,
	0xa3c285da,
	0xa3c295ce,
	0x20010076,
	0xa3c185e6,
	0x23c185da,
	0xa3c195da,
	0x23c195ce,
	0xafa10004,
	0x23a30020,
	0x0c000771,
	0x23c385ce,
	0x0c0007ee,
	0xafa30008,
	0x8fa20048,
	0x23a30020,
	0x8fc28052,
	0x23c385ce,
	0xafa20004,
	0xafa30008,
	0xafa10044,
	0x0c000de1,
	0xafa10020,
	0x0c000e5e,
	0xafa1000c,
	0x8fa30044,
	0x8fa30020,
	0x00000027,
	0x10230004,
	0x10230008,
	0x00000027,
	0x23c18396,
	0x0c000664,
	0x23c183ab,
	0x0c000659,
	0xafa10004,
	0x8fa10048,
	0x23a30020,
	0x8fa20000,
	0x00000027,
	0x00400008,
	0x23bd0024,
	0x8fc18052,
	0x23c385ce,
	0xafa10004,
	0xafa30008,
	0x2001001c,
	0x0c000ddc,
	0x20011000,
	0x0c000e59,
	0xafa1000c,
	0xafa10044,
	0x1c200006,
	0x00012025,
	0x23c283a4,
	0x0c000664,
	0x1c200008,
	0x00000027,
	0x23c283b9,
	0x0c000659,
	0xafa20004,
	0x8fa40044,
	0x8fa20000,
	0x00000027,
	0x23a20020,
	0x00400008,
	0x23bd0024,
	0x23c285ce,
	0xafa20004,
	0x23c385da,
	0x23c395ce,
	0xafa30008,
	0x0c000b0e,
	0xafa4000c,
	0x14200004,
	0x0c000b8b,
	0xafa1000c,
	0x14200008,
	0x00000027,
	0x23c183b1,
	0x0c000664,
	0x23c183c6,
	0x0c000659,
	0xafa10004,
	0x83c285da,
	0x8fa20000,
	0x00000027,
	0x00400008,
	0x23bd0024,
	0x83c295ce,
	0x20010003,
	0x10410004,
	0x10410008,
	0x00000027,
	0x23c283c0,
	0x0c000664,
	0x23c283d5,
	0x0c000659,
	0xafa20004,
	0x87c185de,
	0x8fa20000,
	0x00000027,
	0x10200009,
	0x00400008,
	0x23bd0024,
	0x87c195d2,
	0x00000027,
	0x23c283cd,
	0x1020000d,
	0x00000027,
	0x23c283e2,
	0xafa20004,
	0x87c185de,
	0x0c0006d0,
	0x87c195d2,
	0x0c00074d,
	0xafa10008,
	0x23c283d7,
	0x0c000664,
	0x23c283ec,
	0x0c000659,
	0xafa20004,
	0x23c183e4,
	0x0c0006d0,
	0x8fa20000,
	0x00000027,
	0x00400008,
	0x23bd0024,
	0x23c183f9,
	0x0c00074d,
	0xafa10004,
	0x23a20020,
	0x23c285ce,
	0xafa20004,
	0x23c183ec,
	0x23c18401,
	0xafa10008,
	0x23c28622,
	0x0c00071b,
	0x8fc28002,
	0x0c000798,
	0xafa2000c,
	0x23a20020,
	0x23c285ce,
	0xafa20004,
	0x20030001,
	0xafa30008,
	0x200201b6,
	0x0c000dc3,
	0x0c000e40,
	0xafa2000c,
	0x04210004,
	0xafa1003c,
	0x23c183f2,
	0x0c000664,
	0xafa1001c,
	0x23c18407,
	0x0c00066c,
	0xafa10004,
	0x23a20020,
	0x23c285ce,
	0xafa20004,
	0x23c183f9,
	0x23c1840e,
	0xafa10008,
	0x8fa20048,
	0x0c00071b,
	0x8fc28052,
	0x0c000798,
	0xafa2000c,
	0x23a30020,
	0x0c000756,
	0x23c385ce,
	0x0c0007d3,
	0xafa30004,
	0xafa10018,
	0x23a30020,
	0x0c000756,
	0x23c385ce,
	0x0c0007d3,
	0xafa30004,
	0xafa10014,
	0x8fa3003c,
	0x23a10020,
	0x8fa3001c,
	0x23c185ce,
	0xafa30004,
	0xafa10008,
	0x8fa30014,
	0x0c000de1,
	0x0c000e5e,
	0xafa3000c,
	0x00011025,
	0x8fa10018,
	0x00000027,
	0x10410004,
	0x00000027,
	0x23c283fc,
	0x0c000664,
	0x23c28411,
	0x0c00066c,
	0xafa20004,
	0x8fa1003c,
	0x0c000dbe,
	0x8fa1001c,
	0x0c000e3b,
	0xafa10004,
	0x23c18417,
	0xafa10004,
	0x23a20020,
	0xafa20004,
	0x23c18402,
	0xafa10008,
	0x23c28622,
	0x0c00071b,
	0xafa2000c,
	0x23c28408,
	0xafa20004,
	0x20030001,
	0xafa30008,
	0x200201b6,
	0x0c000dc3,
	0xafa2000c,
	0x200101b6,
	0x0c000e40,
	0xafa1000c,
	0x04210004,
	0xafa1003c,
	0x23c18410,
	0x0c000664,
	0xafa1001c,
	0x23c2841f,
	0x0c00066c,
	0xafa20004,
	0x23c185ce,
	0xafa10004,
	0x23a20020,
	0x23c28426,
	0xafa20008,
	0x8fc18052,
	0x0c000798,
	0xafa1000c,
	0x23c285ce,
	0x0c0007d3,
	0xafa20004,
	0x23c18417,
	0xafa10008,
	0x8fa20048,
	0x0c00071b,
	0xafa2000c,
	0x23a30020,
	0x0c000756,
	0xafa30004,
	0xafa10018,
	0x23a30020,
	0x0c000756,
	0x23c385ce,
	0x0c0007d3,
	0xafa30004,
	0xafa10014,
	0x8fa3003c,
	0x23a10020,
	0x8fa3001c,
	0x23c185ce,
	0xafa30004,
	0xafa10008,
	0x8fa30014,
	0x0c000de1,
	0x0c000e5e,
	0xafa3000c,
	0x00011025,
	0x8fa10018,
	0x00000027,
	0x10410004,
	0x00000027,
	0x23c2841a,
	0x0c000664,
	0x23c28429,
	0x0c00066c,
	0xafa20004,
	0x8fa1003c,
	0x0c000dbe,
	0x8fa1001c,
	0x0c000e3b,
	0xafa10004,
	0x23c28420,
	0x0c0006d0,
	0x23c2842f,
	0x0c00074d,
	0xafa20004,
	0x23c28429,
	0x23c28438,
	0xafa20004,
	0x23c3842b,
	0x23c3843a,
	0xafa30008,
	0x0c000db9,
	0x0c000e36,
	0xafa0000c,
	0x04210004,
	0x00000027,
	0x23c1842d,
	0x0c000664,
	0x23c1843c,
	0x0c00066c,
	0xafa10004,
	0x8fa10048,
	0x23c38432,
	0x8fc18052,
	0x23c38441,
	0xafa10004,
	0xafa30008,
	0x20010006,
	0xafa1000c,
	0x23c38434,
	0x0c000dd2,
	0x23c38443,
	0x0c000e4f,
	0xafa30010,
	0x04210004,
	0x00000027,
	0x23c18435,
	0x0c000664,
	0x23c18444,
	0x0c00066c,
	0xafa10004,
	0x23c2843b,
	0x0c0006d0,
	0x23c2844a,
	0x0c00074d,
	0xafa20004,
	0x23c18444,
	0x23c18453,
	0xafa10004,
	0x23c2844f,
	0x23c2845e,
	0xafa20008,
	0x0c000765,
	0x0c0007e2,
	0xafa0000c,
	0x23c18454,
	0x0c000664,
	0x23c18463,
	0x0c00066c,
	0xafa10004,
	0x8fa20000,
	0x00000027,
	0x00400008,
	0x23bd0050,
	0x23c182b4,
	0x23bd0024,
	0x23c182c1,
	0xafa10004,
	0x0c000dd7,
	0x0c000e54,
	0xafa40008,
	0xafa1004c,
	0x04210006,
	0x00012025,
	0x23c282bd,
	0x0c000664,
	0x04210008,
	0xafc1801a,
	0x23c282ca,
	0x0c000659,
	0xafa20004,
	0x8fa4004c,
	0x8fa20000,
	0x00000027,
	0xafa40004,
	0x23c382ce,
	0x00400008,
	0x23bd0024,
	0xafa10004,
	0x23c382db,
	0xafa30008,
	0x2002000d,
	0x0c000de1,
	0x0c000e5e,
	0xafa2000c,
	0x04210004,
	0x04210008,
	0x00000027,
	0x23c182dc,
	0x0c000664,
	0x23c182e9,
	0x0c000659,
	0xafa10004,
	0x8fa1004c,
	0x23c382ea,
	0x8fa20000,
	0x00000027,
	0x00400008,
	0x23bd0024,
	0x8fc1801a,
	0x23c382f7,
	0xafa10004,
	0xafa30008,
	0x2001000c,
	0x0c000de1,
	0x0c000e5e,
	0xafa1000c,
	0x04210004,
	0x04210008,
	0x00000027,
	0x23c282f7,
	0x0c000664,
	0xafa20004,
	0x23c28304,
	0x0c000659,
	0xafa20004,
	0x8fa20000,
	0x00000027,
	0x00400008,
	0x23bd0024,
	0x23c28311,
	0xafa20004,
	0x20030002,
	0x0c000dd7,
	0x0c000e54,
	0xafa30008,
	0x04210004,
	0xafa10048,
	0x23c1830e,
	0x0c000664,
	0x04210008,
	0xafc18052,
	0x23c1831b,
	0x0c000659,
	0xafa10004,
	0x23c18320,
	0x8fa20000,
	0x00000027,
	0x00400008,
	0x23bd0024,
	0x23c1832d,
	0xafa10004,
	0x20030002,
	0x0c000dd7,
	0x0c000e54,
	0xafa30008,
	0x04210004,
	0xafa1004c,
	0x23c28329,
	0x0c000664,
	0x04210008,
	0xafc18016,
	0x23c28336,
	0x0c000659,
	0xafa20004,
	0x8fa3001c,
	0x0c000756,
	0x8fa20000,
	0x00000027,
	0x00400008,
	0x23bd0024,
	0x8fc3802e,
	0x0c0007d3,
	0xafa30004,
	0xafa10018,
	0x8fa3004c,
	0x8fc38016,
	0x00000027,
	0xafa30004,
	0x8fa2001c,
	0x8fc2802e,
	0x00000027,
	0xafa20008,
	0x8fa30018,
	0x0c000de1,
	0x0c000e5e,
	0xafa3000c,
	0x0421fe93,
	0x0421fe66,
	0x00000027,
	0x8fa1001c,
	0x0c000664,
	0x8fc1802e,
	0x0c000659,
	0xafa10004,
	0x080004e2,
	0x8fa20000,
	0x00000027,
	0x23a10020,
	0x00810821,
	0x080004b2,
	0xa020ffff,
	0x23a10020,
	0x00400008,
	0x23bd0024,
	0x23c1826c,
	0xafa10004,
	0x23c2826f,
	0x0c000749,
	0xafa20008,
	0x080004b2,
	0x00000027,
	0x23c28622,
	0x00821021,
	0x08000487,
	0xa040ffff,
	0xafa40008,
	0x23c1808e,
	0xafa1000c,
	0x20020038,
	0x0c0006c4,
	0xafa20010,
	0x23c4808e,
	0xafc48002,
	0x0c000681,
	0xafa40004,
	0x08000483,
	0x00012025,
	0x23bdffac,
	0xafbf0000,
	0xafa00004,
	0x23a20014,
	0x0c000dc8,
	0x0c000e45,
	0xafa20008,
	0x20010002,
	0xafa10004,
	0x23c2845f,
	0x23c2846e,
	0xafa20008,
	0x8fa10058,
	0x23a20014,
	0xafa1000c,
	0x0c0006f6,
	0x0c000773,
	0xafa20010,
	0x0c0006b4,
	0x8fa20000,
	0x00000027,
	0x00400008,
	0x23bd0054,
	0x23bdffac,
	0xafbf0000,
	0xafa00004,
	0x23a10014,
	0x0c000e45,
	0xafa10008,
	0x20020002,
	0xafa20004,
	0x23c1847c,
	0xafa10008,
	0x8fa20058,
	0x23a10014,
	0xafa2000c,
	0x0c000773,
	0xafa10010,
	0x0c000731,
	0xafa00004,
	0x8fa20000,
	0x00000027,
	0x00400008,
	0x23bd0054,
	0x23bdfff0,
	0xafbf0000,
	0x8fa10014,
	0x23c3848a,
	0xafa10004,
	0x0c0007b0,
	0xafa30008,
	0x10200025,
	0x00000027,
	0x8fa20014,
	0x23c3848c,
	0xafa20004,
	0x0c0007b0,
	0xafa30008,
	0x1020001e,
	0x00000027,
	0x23c48056,
	0x8c820000,
	0x00000027,
	0x10400015,
	0x00000027,
	0xafa4000c,
	0x8c820000,
	0x00000027,
	0xafa20004,
	0x8fa30014,
	0x0c0007b0,
	0xafa30008,
	0x8fa4000c,
	0x14200006,
	0x00000027,
	0x8c810004,
	0x8fa20000,
	0x00000027,
	0x00400008,
	0x23bd0010,
	0x24840008,
	0x8c820000,
	0x00000027,
	0x1440ffed,
	0x00000027,
	0x8fa20000,
	0x23bd0010,
	0x00400008,
	0x00000825,
	0x23c48056,
	0x8c810000,
	0x00000027,
	0x1020000e,
	0x00000027,
	0x23c28491,
	0xafa20004,
	0xafa4000c,
	0x8c810000,
	0x0c00074d,
	0xafa10008,
	0x8fa2000c,
	0x00000027,
	0x24440008,
	0x8c810000,
	0x00000027,
	0x1420fff4,
	0x00000027,
	0x8fa20000,
	0x23bd0010,
	0x00400008,
	0x00000825,
	0x23bdffec,
	0xafbf0000,
	0x23c18495,
	0xafa10004,
	0x8fa20018,
	0x00000027,
	0xafa20008,
	0x8fa1001c,
	0x0c00074d,
	0xafa1000c,
	0xafa00004,
	0x8fa10020,
	0x00000027,
	0xafa10008,
	0x8fa30024,
	0x0c000e59,
	0xafa3000c,
	0x14200003,
	0x00012025,
	0x080006c6,
	0x00000027,
	0x04210006,
	0xafa10010,
	0x23c2849e,
	0x0c00066c,
	0xafa20004,
	0x8fa40010,
	0x00000027,
	0x20020001,
	0x1482000c,
	0x00000027,
	0x8fa10020,
	0x00000027,
	0xafa10004,
	0x8fa2001c,
	0x0c0007c6,
	0xafa20008,
	0x8fa40010,
	0x8fa20000,
	0x23bd0014,
	0x00400008,
	0x00040825,
	0x8fa20020,
	0x00000027,
	0x00820821,
	0xa020ffff,
	0x8fa20000,
	0x23bd0014,
	0x00400008,
	0x00040825,
	0x23bdfff8,
	0x00002025,
	0x28810021,
	0x10200011,
	0x23c584f2,
	0x23c5854a,
	0x00040880,
	0x00250821,
	0x8c210000,


@@ 661,7 786,7 @@ ulong bootcode[]={
	0x00001825,
	0x28610021,
	0x1020000d,
	0x23c484f2,
	0x23c4854a,
	0x00030880,
	0x00240821,
	0x8c210000,


@@ 682,10 807,10 @@ ulong bootcode[]={
	0x00000027,
	0x14200003,
	0x00000027,
	0x0c0006b4,
	0x0c000731,
	0xafa00004,
	0x23c28026,
	0x0c0006b4,
	0x23c2803a,
	0x0c000731,
	0xafa20004,
	0x8fa20000,
	0x00000027,


@@ 693,7 818,7 @@ ulong bootcode[]={
	0x23bd0008,
	0x23bdfff0,
	0xafbf0000,
	0x23c584f2,
	0x23c5854a,
	0x20030020,
	0x04600010,
	0x00000027,


@@ 709,11 834,11 @@ ulong bootcode[]={
	0x0080f809,
	0xac200000,
	0x8fa3000c,
	0x23c584f2,
	0x080006b8,
	0x23c5854a,
	0x08000735,
	0x2463ffff,
	0x8fa20014,
	0x0c000db4,
	0x0c000e31,
	0xafa20004,
	0x8fa20000,
	0x00000027,


@@ 729,7 854,7 @@ ulong bootcode[]={
	0x23a31020,
	0xafa2000c,
	0x24630004,
	0x0c000e1e,
	0x0c000e9b,
	0xafa30010,
	0x23a5001c,
	0x00012025,


@@ 737,19 862,19 @@ ulong bootcode[]={
	0xafa10004,
	0xafa50008,
	0x00850823,
	0x0c000de1,
	0x0c000e5e,
	0xafa1000c,
	0xafa10014,
	0x0421000c,
	0x00012025,
	0x8fc28002,
	0x8fc2800a,
	0x00000027,
	0x24420001,
	0x2841000a,
	0x14200006,
	0xafc28002,
	0xafc2800a,
	0x20010001,
	0x0c0006a5,
	0x0c000722,
	0xafa10004,
	0x8fa40014,
	0x00000027,


@@ 767,26 892,26 @@ ulong bootcode[]={
	0x23a31024,
	0xafa1000c,
	0x24630004,
	0x0c000e1e,
	0x0c000e9b,
	0xafa30010,
	0x8fa21020,
	0x23a5001c,
	0xafa20004,
	0xafa50008,
	0x00251023,
	0x0c000de1,
	0x0c000e5e,
	0xafa2000c,
	0xafa10014,
	0x0421000c,
	0x00012025,
	0x8fc18002,
	0x8fc1800a,
	0x00000027,
	0x24210001,
	0x2822000a,
	0x14400006,
	0xafc18002,
	0xafc1800a,
	0x20020001,
	0x0c0006a5,
	0x0c000722,
	0xafa20004,
	0x8fa40014,
	0x00000027,


@@ 797,7 922,7 @@ ulong bootcode[]={
	0x23bdffe4,
	0xafbf0000,
	0x8fa40020,
	0x8fc28006,
	0x8fc2800e,
	0x24831000,
	0xafa20014,
	0xafa40004,


@@ 806,11 931,11 @@ ulong bootcode[]={
	0x23a30024,
	0xafa2000c,
	0x24630004,
	0x0c000e1e,
	0x0c000e9b,
	0xafa30010,
	0x8fa20014,
	0x00000027,
	0xafc28006,
	0xafc2800e,
	0x8fa20020,
	0x00000027,
	0x00220823,


@@ 874,7 999,7 @@ ulong bootcode[]={
	0x23a30010,
	0xafa20004,
	0x24630004,
	0x0c000dcd,
	0x0c000e4a,
	0xafa30008,
	0x8fa20000,
	0x00000027,


@@ 917,10 1042,10 @@ ulong bootcode[]={
	0x38220003,
	0x1040000a,
	0x00000027,
	0x23c1807a,
	0x23c180ca,
	0xafa10004,
	0x80820000,
	0x0c0006d0,
	0x0c00074d,
	0xafa20008,
	0x8fa20000,
	0x23bd0014,


@@ 963,7 1088,7 @@ ulong bootcode[]={
	0xafa10004,
	0x24810008,
	0xafa10008,
	0x0c0012f6,
	0x0c001373,
	0xafa6000c,
	0x8fa10010,
	0x2002001c,


@@ 974,7 1099,7 @@ ulong bootcode[]={
	0x00000027,
	0x24210024,
	0xafa10008,
	0x0c0012f6,
	0x0c001373,
	0xafa2000c,
	0x8fa10010,
	0x8fa2001c,


@@ 993,7 1118,7 @@ ulong bootcode[]={
	0x3822000d,
	0x10400003,
	0x00000027,
	0x08000796,
	0x08000813,
	0x00000027,
	0x84810002,
	0x00000027,


@@ 1084,7 1209,7 @@ ulong bootcode[]={
	0xafa20004,
	0x2482000c,
	0xafa20008,
	0x0c0012f6,
	0x0c001373,
	0xafa6000c,
	0x8fa20010,
	0x00000027,


@@ 1113,7 1238,7 @@ ulong bootcode[]={
	0x38220012,
	0x10400003,
	0x00000027,
	0x08000796,
	0x08000813,
	0x00000027,
	0x84820002,
	0x24a10002,


@@ 1126,7 1251,7 @@ ulong bootcode[]={
	0xafa10004,
	0x2481000c,
	0xafa10008,
	0x0c0012f6,
	0x0c001373,
	0xafa6000c,
	0x8fa60018,
	0x8fa10010,


@@ 1185,7 1310,7 @@ ulong bootcode[]={
	0x38220016,
	0x10400003,
	0x00000027,
	0x08000796,
	0x08000813,
	0x00000027,
	0x84810002,
	0x00000027,


@@ 1226,7 1351,7 @@ ulong bootcode[]={
	0x00000027,
	0xafa20008,
	0x8c81000c,
	0x0c0012f6,
	0x0c001373,
	0xafa1000c,
	0x8fa20018,
	0x8fa10010,


@@ 1267,7 1392,7 @@ ulong bootcode[]={
	0x00000027,
	0xafa10008,
	0x8c82000c,
	0x0c0012f6,
	0x0c001373,
	0xafa2000c,
	0x8fa10018,
	0x8fa20010,


@@ 1371,7 1496,7 @@ ulong bootcode[]={
	0x3822001b,
	0x1040fe89,
	0x00000027,
	0x08000796,
	0x08000813,
	0x00000027,
	0x84820002,
	0x00000027,


@@ 1396,7 1521,7 @@ ulong bootcode[]={
	0x3822001f,
	0x1040fe70,
	0x00000027,
	0x08000796,
	0x08000813,
	0x00000027,
	0x84810002,
	0x24a20002,


@@ 1409,7 1534,7 @@ ulong bootcode[]={
	0xafa20004,
	0x24820008,
	0xafa20008,
	0x0c0012f6,
	0x0c001373,
	0xafa7000c,
	0x8fa20010,
	0x00000027,


@@ 1439,7 1564,7 @@ ulong bootcode[]={
	0xafa20004,
	0x24820008,
	0xafa20008,
	0x0c0012f6,
	0x0c001373,
	0xafa7000c,
	0x8fa20010,
	0x00000027,


@@ 1486,7 1611,7 @@ ulong bootcode[]={
	0x38220023,
	0x10400003,
	0x00000027,
	0x08000796,
	0x08000813,
	0x00000027,
	0x84820002,
	0x00000027,


@@ 1506,7 1631,7 @@ ulong bootcode[]={
	0xafa20004,
	0x24820008,
	0xafa20008,
	0x0c0012f6,
	0x0c001373,
	0xafa6000c,
	0x8fa20010,
	0x00000027,


@@ 1557,7 1682,7 @@ ulong bootcode[]={
	0xafa20004,
	0x24820008,
	0xafa20008,
	0x0c0012f6,
	0x0c001373,
	0xafa7000c,
	0x8fa20010,
	0x00000027,


@@ 1578,7 1703,7 @@ ulong bootcode[]={
	0x38220027,
	0x1040ff00,
	0x00000027,
	0x08000796,
	0x08000813,
	0x00000027,
	0x84820002,
	0x00000027,


@@ 1620,7 1745,7 @@ ulong bootcode[]={
	0x00000027,
	0xafa20008,
	0x8c81000c,
	0x0c0012f6,
	0x0c001373,
	0xafa1000c,
	0x8fa20018,
	0x8fa10010,


@@ 1662,7 1787,7 @@ ulong bootcode[]={
	0x00000027,
	0xafa10008,
	0x8c82000c,
	0x0c0012f6,
	0x0c001373,
	0xafa2000c,
	0x8fa10018,
	0x8fa20010,


@@ 1685,7 1810,7 @@ ulong bootcode[]={
	0x8fa10018,
	0x00000027,
	0xafa10008,
	0x0c0012f6,
	0x0c001373,
	0xafa2000c,
	0x8fa30018,
	0x8fa10010,


@@ 1844,10 1969,10 @@ ulong bootcode[]={
	0x38410003,
	0x1020000a,
	0x00000027,
	0x23c28088,
	0x23c280d8,
	0xafa20004,
	0x80a10000,
	0x0c0006d0,
	0x0c00074d,
	0xafa10008,
	0x8fa20000,
	0x23bd0014,


@@ 1878,7 2003,7 @@ ulong bootcode[]={
	0x80210000,
	0x00000027,
	0xa0a1000c,
	0x08000b44,
	0x08000bc1,
	0x24840001,
	0x90820000,
	0x90810001,


@@ 1890,7 2015,7 @@ ulong bootcode[]={
	0xafa20004,
	0xafa40010,
	0xafa40008,
	0x0c0012f6,
	0x0c001373,
	0xafa6000c,
	0x8fa10010,
	0x8fa2001c,


@@ 1900,10 2025,10 @@ ulong bootcode[]={
	0xafa40010,
	0xafa40008,
	0x2002001c,
	0x0c0012f6,
	0x0c001373,
	0xafa2000c,
	0x8fa10010,
	0x08000b44,
	0x08000bc1,
	0x2424001c,
	0x3841000b,
	0x10200023,


@@ 1914,7 2039,7 @@ ulong bootcode[]={
	0x3841000d,
	0x10200003,
	0x00000027,
	0x08000b35,
	0x08000bb2,
	0x00000027,
	0x90810000,
	0x90820001,


@@ 1927,7 2052,7 @@ ulong bootcode[]={
	0x24840002,
	0x00021200,
	0x00220825,
	0x08000b44,
	0x08000bc1,
	0xa4a10004,
	0x90820000,
	0x90810001,


@@ 1940,7 2065,7 @@ ulong bootcode[]={
	0x24840002,
	0x00010a00,
	0x00411025,
	0x08000b44,
	0x08000bc1,
	0xa4a2000a,
	0x90810000,
	0x90820001,


@@ 1965,7 2090,7 @@ ulong bootcode[]={
	0x00021600,
	0x00220825,
	0x24840004,
	0x08000b44,
	0x08000bc1,
	0xaca10010,
	0x90820000,
	0x90810001,


@@ 1977,10 2102,10 @@ ulong bootcode[]={
	0xafa20004,
	0xafa40010,
	0xafa40008,
	0x0c0012f6,
	0x0c001373,
	0xafa6000c,
	0x8fa10010,
	0x08000b44,
	0x08000bc1,
	0x2424001c,
	0x2441ffed,
	0x1c20003c,


@@ 1999,7 2124,7 @@ ulong bootcode[]={
	0x38410012,
	0x10200003,
	0x00000027,
	0x08000b35,
	0x08000bb2,
	0x00000027,
	0x90820000,
	0x90810001,


@@ 2011,7 2136,7 @@ ulong bootcode[]={
	0xafa20004,
	0xafa40010,
	0xafa40008,
	0x0c0012f6,
	0x0c001373,
	0xafa6000c,
	0x8fa5001c,
	0x8fa10010,


@@ 2031,7 2156,7 @@ ulong bootcode[]={
	0x24810004,
	0x24240001,
	0x80210000,
	0x08000b44,
	0x08000bc1,
	0xa0a10028,
	0x90820000,
	0x90810001,


@@ 2042,7 2167,7 @@ ulong bootcode[]={
	0x24810002,
	0x24240001,
	0x80210000,
	0x08000b44,
	0x08000bc1,
	0xa0a10028,
	0x38410014,
	0x1020003b,


@@ 2053,7 2178,7 @@ ulong bootcode[]={
	0x38410016,
	0x10200003,
	0x00000027,
	0x08000b35,
	0x08000bb2,
	0x00000027,
	0x90820000,
	0x90810001,


@@ 2081,7 2206,7 @@ ulong bootcode[]={
	0xaca2000c,
	0xaca40010,
	0x8ca2000c,
	0x08000b44,
	0x08000bc1,
	0x00822021,
	0x90810000,
	0x90820001,


@@ 2103,7 2228,7 @@ ulong bootcode[]={
	0xaca1000c,
	0xaca40010,
	0x8ca1000c,
	0x08000b44,
	0x08000bc1,
	0x00812021,
	0x90820000,
	0x90810001,


@@ 2128,7 2253,7 @@ ulong bootcode[]={
	0x24840002,
	0x00010a00,
	0x00411025,
	0x08000b44,
	0x08000bc1,
	0xaca2000c,
	0x90820000,
	0x90810001,


@@ 2147,7 2272,7 @@ ulong bootcode[]={
	0x24840002,
	0x00010a00,
	0x00411025,
	0x08000b44,
	0x08000bc1,
	0xaca2000c,
	0x2441ffe0,
	0x1c200059,


@@ 2171,14 2296,14 @@ ulong bootcode[]={
	0x3841001b,
	0x1020ff02,
	0x00000027,
	0x08000b35,
	0x08000bb2,
	0x00000027,
	0x90810000,
	0x90820001,
	0x24840002,
	0x00021200,
	0x00220825,
	0x08000b44,
	0x08000bc1,
	0xa4a10002,
	0x3841001d,
	0x10200018,


@@ 2189,7 2314,7 @@ ulong bootcode[]={
	0x3841001f,
	0x1020fef0,
	0x00000027,
	0x08000b35,
	0x08000bb2,
	0x00000027,
	0x90810000,
	0x90820001,


@@ 2201,10 2326,10 @@ ulong bootcode[]={
	0xafa10004,
	0xafa40010,
	0xafa40008,
	0x0c0012f6,
	0x0c001373,
	0xafa7000c,
	0x8fa20010,
	0x08000b44,
	0x08000bc1,
	0x24440040,
	0x90820000,
	0x90810001,


@@ 2222,10 2347,10 @@ ulong bootcode[]={
	0xafa20004,
	0xafa40010,
	0xafa40008,
	0x0c0012f6,
	0x0c001373,
	0xafa7000c,
	0x8fa10010,
	0x08000b44,
	0x08000bc1,
	0x24240040,
	0x90810000,
	0x90820001,


@@ 2238,7 2363,7 @@ ulong bootcode[]={
	0x24840002,
	0x00021200,
	0x00220825,
	0x08000b44,
	0x08000bc1,
	0xa4a10004,
	0x2441ffdc,
	0x1c200045,


@@ 2254,7 2379,7 @@ ulong bootcode[]={
	0x38410023,
	0x10200003,
	0x00000027,
	0x08000b35,
	0x08000bb2,
	0x00000027,
	0x90820000,
	0x90810001,


@@ 2272,10 2397,10 @@ ulong bootcode[]={
	0xafa20004,
	0xafa40010,
	0xafa40008,
	0x0c0012f6,
	0x0c001373,
	0xafa6000c,
	0x8fa10010,
	0x08000b44,
	0x08000bc1,
	0x2424001c,
	0x90810000,
	0x90820001,


@@ 2288,7 2413,7 @@ ulong bootcode[]={
	0x24840002,
	0x00021200,
	0x00220825,
	0x08000b44,
	0x08000bc1,
	0xa4a10008,
	0x90820000,
	0x90810001,


@@ 2306,10 2431,10 @@ ulong bootcode[]={
	0xafa20004,
	0xafa40010,
	0xafa40008,
	0x0c0012f6,
	0x0c001373,
	0xafa7000c,
	0x8fa10010,
	0x08000b44,
	0x08000bc1,
	0x24240040,
	0x38410025,
	0x10200027,


@@ 2320,7 2445,7 @@ ulong bootcode[]={
	0x38410027,
	0x1020ff43,
	0x00000027,
	0x08000b35,
	0x08000bb2,
	0x00000027,
	0x90810000,
	0x90820001,


@@ 2350,7 2475,7 @@ ulong bootcode[]={
	0x24440001,
	0xaca40010,
	0x8ca2000c,
	0x08000b44,
	0x08000bc1,
	0x00822021,
	0x90820000,
	0x90810001,


@@ 2374,7 2499,7 @@ ulong bootcode[]={
	0x24240001,
	0xaca40010,
	0x8ca1000c,
	0x08000b44,
	0x08000bc1,
	0x00812021,
	0x23bdffec,
	0xafbf0000,


@@ 2385,7 2510,7 @@ ulong bootcode[]={
	0xafa40010,
	0xafa40008,
	0x2001001c,
	0x0c0012f6,
	0x0c001373,
	0xafa1000c,
	0x8fa4001c,
	0x8fa20010,


@@ 2534,8 2659,8 @@ ulong bootcode[]={
	0x03e00008,
	0x23bd0004,
	0x23bdfffc,
	0x8fc68076,
	0x23c4846e,
	0x8fc680c6,
	0x23c484c6,
	0x83a1000b,
	0x00000027,
	0x3021007f,


@@ 2558,13 2683,13 @@ ulong bootcode[]={
	0x00021603,
	0x00441021,
	0x24c10001,
	0xafc18076,
	0xafc180c6,
	0xa0460000,
	0x00050e00,
	0x00010e03,
	0x00240821,
	0x80210000,
	0x23c280ce,
	0x23c2811e,
	0x00010880,
	0x8fa3000c,
	0x00220821,


@@ 2583,7 2708,7 @@ ulong bootcode[]={
	0x00000027,
	0xafa2000c,
	0x8fa30020,
	0x0c000e1e,
	0x0c000e9b,
	0xafa30010,
	0x8fa20000,
	0x00000027,


@@ 2595,19 2720,19 @@ ulong bootcode[]={
	0x200b000a,
	0x8fa50040,
	0x00003825,
	0x8fc180c2,
	0x8fc18112,
	0x00000027,
	0xafa10018,
	0x8fc2800a,
	0x8fc28012,
	0x00000027,
	0xafa20014,
	0x8faa0034,
	0x00000027,
	0xafca80c2,
	0xafca8112,
	0x8fa20038,
	0x00000027,
	0x2442ffff,
	0xafc2800a,
	0xafc28012,
	0x00062025,
	0x80840000,
	0x20010025,


@@ 2618,40 2743,40 @@ ulong bootcode[]={
	0xa1400000,
	0x8fa10018,
	0x00000027,
	0xafc180c2,
	0xafc18112,
	0x8fa20014,
	0x00000027,
	0xafc2800a,
	0xafc28012,
	0x8fa20000,
	0x23bd0030,
	0x00400008,
	0x000a0825,
	0x8fc1800a,
	0x8fc18012,
	0x00000027,
	0x0141182b,
	0x10600005,
	0x00000027,
	0x000a1025,
	0x254a0001,
	0xafca80c2,
	0xafca8112,
	0xa0440000,
	0x8fc18006,
	0x8fc1800e,
	0x00000027,
	0x24210001,
	0x148b0003,
	0xafc18006,
	0x08000e31,
	0xafc78006,
	0xafc1800e,
	0x08000eae,
	0xafc7800e,
	0x20010009,
	0x1481ffdc,
	0x00000027,
	0x8fc28006,
	0x8fc2800e,
	0x00000027,
	0x24420007,
	0x201cfff8,
	0x005c1024,
	0x08000e31,
	0xafc28006,
	0x08000eae,
	0xafc2800e,
	0x00075025,
	0x00062025,
	0x24c60001,


@@ 2683,18 2808,18 @@ ulong bootcode[]={
	0xafa8000c,
	0xafaa0024,
	0xafaa0010,
	0x23c1846e,
	0x23c184c6,
	0x3082007f,
	0x00220821,
	0x80210000,
	0x23c280ce,
	0x23c2811e,
	0x00010880,
	0x00220821,
	0x8c210000,
	0x00000027,
	0x0020f809,
	0x00000027,
	0x8fca80c2,
	0x8fca8112,
	0x8fa9002c,
	0x8fa80028,
	0x00003825,


@@ 2709,9 2834,9 @@ ulong bootcode[]={
	0x24c60001,
	0xafa6003c,
	0x80840000,
	0x08000e70,
	0x08000eed,
	0x00615025,
	0x08000e31,
	0x08000eae,
	0x00a42821,
	0x00062025,
	0x24c60001,


@@ 2725,7 2850,7 @@ ulong bootcode[]={
	0x24c60001,
	0xafa6003c,
	0x80840000,
	0x08000e70,
	0x08000eed,
	0x24a50004,
	0x28820030,
	0x1440ffc6,


@@ 2734,7 2859,7 @@ ulong bootcode[]={
	0x0024182a,
	0x10600003,
	0x00000027,
	0x08000e70,
	0x08000eed,
	0x00000027,
	0x05010002,
	0x00000027,


@@ 2746,7 2871,7 @@ ulong bootcode[]={
	0x24c60001,
	0xafa6003c,
	0x80840000,
	0x08000ea8,
	0x08000f25,
	0x2428ffd0,
	0x2001002d,
	0x14810006,


@@ 2765,7 2890,7 @@ ulong bootcode[]={
	0x00000027,
	0x1180ffa0,
	0x00000027,
	0x08000e6d,
	0x08000eea,
	0x00e94823,
	0x012b0018,
	0x00000812,


@@ 2774,7 2899,7 @@ ulong bootcode[]={
	0x24c60001,
	0xafa6003c,
	0x80840000,
	0x08000ec5,
	0x08000f42,
	0x2429ffd0,
	0x23bdffb4,
	0xafbf0000,


@@ 2835,7 2960,7 @@ ulong bootcode[]={
	0x8fa20054,
	0x2001ffff,
	0xafa20008,
	0x0c000f6e,
	0x0c000feb,
	0xafa1000c,
	0x8fa1001c,
	0x8fa20000,


@@ 2851,15 2976,15 @@ ulong bootcode[]={
	0x00000027,
	0x1ca00003,
	0x00000027,
	0x08000f09,
	0x08000f86,
	0x00000027,
	0x08000efe,
	0x08000f7b,
	0x2484ffff,
	0x000d6025,
	0x08000efc,
	0x08000f79,
	0x00c52823,
	0x8ca50000,
	0x08000ef7,
	0x08000f74,
	0xafa4001c,
	0x8ca20000,
	0xafa4001c,


@@ 2867,13 2992,13 @@ ulong bootcode[]={
	0x00052c03,
	0x00050c00,
	0x00010c03,
	0x08000ef7,
	0x08000f74,
	0x00012825,
	0x8ca50000,
	0x08000ef7,
	0x08000f74,
	0xafa4001c,
	0x8ca50000,
	0x08000ef7,
	0x08000f74,
	0xafa4001c,
	0x38410006,
	0x10200029,


@@ 2881,7 3006,7 @@ ulong bootcode[]={
	0x38410009,
	0x10200003,
	0x00000027,
	0x08000ef5,
	0x08000f72,
	0x00000027,
	0x8ca50000,
	0x00000027,


@@ 2903,7 3028,7 @@ ulong bootcode[]={
	0x28820002,
	0x10400003,
	0x00000027,
	0x08000f09,
	0x08000f86,
	0x00000027,
	0x00a8001a,
	0x04e00005,


@@ 2914,26 3039,26 @@ ulong bootcode[]={
	0x00000027,
	0x1ca00003,
	0x00000027,
	0x08000f09,
	0x08000f86,
	0x00000027,
	0x08000f4c,
	0x08000fc9,
	0x2484ffff,
	0x8ca10000,
	0xafa4001c,
	0x00012c00,
	0x00052c03,
	0x30a2ffff,
	0x08000ef7,
	0x08000f74,
	0x00022825,
	0x23bdfff0,
	0x8faa0014,
	0x00006825,
	0x8fac0018,
	0x200b0020,
	0x8fc9800a,
	0x8fc98012,
	0x8fa8001c,
	0x8fc78006,
	0x8fc580c2,
	0x8fc7800e,
	0x8fc58112,
	0x00002025,
	0x000a3025,
	0x00060825,


@@ 2956,13 3081,13 @@ ulong bootcode[]={
	0x00000027,
	0x00051025,
	0x24a50001,
	0xafc580c2,
	0xafc58112,
	0xa04b0000,
	0x24e70001,
	0x24840001,
	0x008c182a,
	0x1460fff5,
	0xafc78006,
	0xafc7800e,
	0x000a3025,
	0x80c60000,
	0x00000027,


@@ 2975,13 3100,13 @@ ulong bootcode[]={
	0x00000027,
	0x00051025,
	0x24a50001,
	0xafc580c2,
	0xafc58112,
	0xa0460000,
	0x24e70001,
	0x14ce001c,
	0xafc78006,
	0xafc7800e,
	0x000d3825,
	0xafcd8006,
	0xafcd800e,
	0x000a3025,
	0x80c60000,
	0x254a0001,


@@ 2998,13 3123,13 @@ ulong bootcode[]={
	0x00000027,
	0x00051025,
	0x24a50001,
	0xafc580c2,
	0xafc58112,
	0xa04b0000,
	0x24e70001,
	0x24840001,
	0x0086182a,
	0x1460fff5,
	0xafc78006,
	0xafc7800e,
	0x03e00008,
	0x23bd0010,
	0x20010009,


@@ 3013,15 3138,15 @@ ulong bootcode[]={
	0x24e20007,
	0x201cfff8,
	0x005c3824,
	0x08000fa7,
	0xafc78006,
	0x08001024,
	0xafc7800e,
	0x23bdfff0,
	0xafbf0000,
	0x23c18016,
	0x23c18026,
	0xafa10004,
	0xafa00008,
	0x2002ffff,
	0x0c000f6e,
	0x0c000feb,
	0xafa2000c,
	0x8fa20000,
	0x23bd0010,


@@ 3039,7 3164,7 @@ ulong bootcode[]={
	0x8fa1001c,
	0x2002ffff,
	0xafa10008,
	0x0c000f6e,
	0x0c000feb,
	0xafa2000c,
	0x8fa20000,
	0x23bd0014,


@@ 3059,7 3184,7 @@ ulong bootcode[]={
	0x8fa20028,
	0x2003000a,
	0xafa20010,
	0x0c000ed9,
	0x0c000f56,
	0xafa30014,
	0x8fa20000,
	0x00000027,


@@ 3095,7 3220,7 @@ ulong bootcode[]={
	0x8fa30028,
	0x20020008,
	0xafa30010,
	0x0c000ed9,
	0x0c000f56,
	0xafa20014,
	0x8fa20000,
	0x00000027,


@@ 3112,7 3237,7 @@ ulong bootcode[]={
	0x00000027,
	0xafa20008,
	0x8fa1001c,
	0x0c000f6e,
	0x0c000feb,
	0xafa1000c,
	0x8fa20000,
	0x23bd0010,


@@ 3136,21 3261,21 @@ ulong bootcode[]={
	0x8fa30028,
	0x20020010,
	0xafa30010,
	0x0c000ed9,
	0x0c000f56,
	0xafa20014,
	0x8fa20000,
	0x00000027,
	0x00400008,
	0x23bd0018,
	0x23bdfffc,
	0x8fc480c2,
	0x8fc2800a,
	0x8fc48112,
	0x8fc28012,
	0x00000027,
	0x0082182b,
	0x10600005,
	0x00000027,
	0x24820001,
	0xafc280c2,
	0xafc28112,
	0x20030025,
	0xa0830000,
	0x23bd0004,


@@ 3192,10 3317,10 @@ ulong bootcode[]={
	0x23a1002c,
	0xe7a10004,
	0xe7a00008,
	0x0c00125a,
	0x0c0012d7,
	0xafa1000c,
	0xc7c1801e,
	0xc7c08022,
	0xc7c18032,
	0xc7c08036,
	0xc7a2002c,
	0x00000027,
	0x468010a1,


@@ 3207,7 3332,7 @@ ulong bootcode[]={
	0x00012843,
	0xafa50028,
	0x00050823,
	0x0c001230,
	0x0c0012ad,
	0xafa10004,
	0xc7a30094,
	0xc7a20098,


@@ 3219,7 3344,7 @@ ulong bootcode[]={
	0x8fa2002c,
	0x00000027,
	0x00220823,
	0x0c001230,
	0x0c0012ad,
	0xafa10004,
	0x8fad00a8,
	0x00007025,


@@ 3242,7 3367,7 @@ ulong bootcode[]={
	0x8fa2002c,
	0x00000027,
	0x00220823,
	0x0c001230,
	0x0c0012ad,
	0xafa10004,
	0x8fad00a8,
	0x8faa00a0,


@@ 3251,10 3376,10 @@ ulong bootcode[]={
	0xc7a20034,
	0x23a80040,
	0x46201102,
	0x0800109f,
	0x0800111c,
	0x00007025,
	0xc7c1800e,
	0xc7c08012,
	0xc7c1801e,
	0xc7c08022,
	0x00000027,
	0x4624003e,
	0x00000027,


@@ 3268,7 3393,7 @@ ulong bootcode[]={
	0x8fa2002c,
	0x00000027,
	0x00220823,
	0x0c001230,
	0x0c0012ad,
	0xafa10004,
	0x8fad00a8,
	0x8faa00a0,


@@ 3277,7 3402,7 @@ ulong bootcode[]={
	0xc7a20034,
	0x23a80040,
	0x46201102,
	0x080010b6,
	0x08001133,
	0x00007025,
	0x05410002,
	0x00000027,


@@ 3312,7 3437,7 @@ ulong bootcode[]={
	0x200affff,
	0xafaa00a0,
	0x200d0065,
	0x0800106c,
	0x080010e9,
	0xafad00a8,
	0x000e3825,
	0x00e5182a,


@@ 3335,8 3460,8 @@ ulong bootcode[]={
	0x46202101,
	0x24c30030,
	0xa0230001,
	0xc7c1800e,
	0xc7c08012,
	0xc7c1801e,
	0xc7c08022,
	0x24e70001,
	0x00e5182a,
	0x1460ffea,


@@ 3361,7 3486,7 @@ ulong bootcode[]={
	0x24c60001,
	0x2463fff6,
	0xa0230001,
	0x08001110,
	0x0800118d,
	0x24a5ffff,
	0x10c00007,
	0x200b0001,


@@ 3429,7 3554,7 @@ ulong bootcode[]={
	0x20020030,
	0xa0220000,
	0x24c6ffff,
	0x08001157,
	0x080011d4,
	0x24a50001,
	0x18e00013,
	0x00000027,


@@ 3449,7 3574,7 @@ ulong bootcode[]={
	0x256b0001,
	0xa0220000,
	0x24e7ffff,
	0x08001168,
	0x080011e5,
	0x24a50001,
	0x20010067,
	0x11a10046,


@@ 3469,7 3594,7 @@ ulong bootcode[]={
	0x8fa1009c,
	0x2002ffff,
	0xafa10008,
	0x0c000f6e,
	0x0c000feb,
	0xafa2000c,
	0x8fa20000,
	0x23bd0090,


@@ 3521,7 3646,7 @@ ulong bootcode[]={
	0x00000810,
	0x24210030,
	0xa0410000,
	0x08001188,
	0x08001205,
	0x24a50001,
	0x24a6ffff,
	0x04c00006,


@@ 3541,11 3666,11 @@ ulong bootcode[]={
	0x00000027,
	0x10e6ffad,
	0x00062825,
	0x08001182,
	0x080011ff,
	0x24a50001,
	0x080011cd,
	0x0800124a,
	0x24e7ffff,
	0x080011c5,
	0x08001242,
	0x24c6ffff,
	0x8fa1002c,
	0x2002ffff,


@@ 3555,9 3680,9 @@ ulong bootcode[]={
	0x000e3025,
	0x8fa1002c,
	0x200d0068,
	0x08001144,
	0x080011c1,
	0x01416023,
	0x080010d8,
	0x08001155,
	0x254affff,
	0x23bdffe4,
	0xafbf0000,


@@ 3577,7 3702,7 @@ ulong bootcode[]={
	0x8fa2002c,
	0x20030065,
	0xafa20014,
	0x0c001055,
	0x0c0010d2,
	0xafa30018,
	0x8fa20000,
	0x00000027,


@@ 3601,7 3726,7 @@ ulong bootcode[]={
	0x8fa2002c,
	0x20030066,
	0xafa20014,
	0x0c001055,
	0x0c0010d2,
	0xafa30018,
	0x8fa20000,
	0x00000027,


@@ 3625,7 3750,7 @@ ulong bootcode[]={
	0x8fa2002c,
	0x20030067,
	0xafa20014,
	0x0c001055,
	0x0c0010d2,
	0xafa30018,
	0x8fa20000,
	0x00000027,


@@ 3638,7 3763,7 @@ ulong bootcode[]={
	0x04610008,
	0x00000027,
	0x00030823,
	0x0c001230,
	0x0c0012ad,
	0xafa10004,
	0x8fa20000,
	0x23bd0014,


@@ 3648,7 3773,7 @@ ulong bootcode[]={
	0x1040000b,
	0x00000027,
	0x00031080,
	0x23c1809a,
	0x23c180ea,
	0x00411021,
	0x8c420000,
	0x00000027,


@@ 3660,12 3785,12 @@ ulong bootcode[]={
	0x00032043,
	0xafa40010,
	0x00641023,
	0x0c001230,
	0x0c0012ad,
	0xafa20004,
	0xe7a10008,
	0xe7a0000c,
	0x8fa10010,
	0x0c001230,
	0x0c0012ad,
	0xafa10004,
	0xc7a30008,
	0xc7a2000c,


@@ 3743,14 3868,14 @@ ulong bootcode[]={
	0x45010008,
	0x00000027,
	0x2001ffff,
	0x0c00138d,
	0x0c00140a,
	0xafa10004,
	0x8fa20000,
	0x00000027,
	0x00400008,
	0x23bd0010,
	0x20020001,
	0x0c00138d,
	0x0c00140a,
	0xafa20004,
	0x8fa20000,
	0x00000027,


@@ 3797,7 3922,7 @@ ulong bootcode[]={
	0x0024182a,
	0x14600013,
	0x00000027,
	0x8fc280c6,
	0x8fc28116,
	0x8fa30008,
	0x00821007,
	0x201cffff,


@@ 3819,7 3944,7 @@ ulong bootcode[]={
	0x0044182a,
	0x1460fff3,
	0x00000027,
	0x8fc280ca,
	0x8fc2811a,
	0x2481ffea,
	0x00220807,
	0x201cffff,


@@ 3827,7 3952,7 @@ ulong bootcode[]={
	0x8fa3000c,
	0x00000027,
	0x00610824,
	0x080012de,
	0x0800135b,
	0xafa1000c,
	0x23bdfffc,
	0x8fa30010,


@@ 3939,7 4064,7 @@ ulong bootcode[]={
	0x00000027,
	0xa0c8ffff,
	0x24c6ffff,
	0x0800135d,
	0x080013da,
	0x24e7ffff,
	0x23bdfff4,
	0x3c017ff0,


@@ 3968,7 4093,7 @@ ulong bootcode[]={
	0x00000825,
	0xe7a50004,
	0xe7a40008,
	0x0c00139e,
	0x0c00141b,
	0xafa0000c,
	0x14200005,
	0x00000027,


@@ 4042,10 4167,14 @@ ulong bootcode[]={
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x40240000,
	0x00000000,
	0x2a2a2a00,
	0x00000000,
	0x00000000,
	0x3fd34413,
	0x55475a32,
	0x6e6f6e2d,


@@ 4054,18 4183,33 @@ ulong bootcode[]={
	0x74207374,
	0x61747573,
	0x00000000,
	0x00005144,
	0x0000514e,
	0x00005159,
	0x0000515e,
	0x00005173,
	0x0000517a,
	0x0000518f,
	0x00005195,
	0x000051aa,
	0x000051b2,
	0x000051c7,
	0x000051cb,
	0x00000000,
	0x00006194,
	0x0000619e,
	0x000061a9,
	0x000061ae,
	0x000061c3,
	0x000061ca,
	0x000061df,
	0x000061e5,
	0x000061fa,
	0x00006202,
	0x00006217,
	0x0000621b,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x0000000d,


@@ 4090,19 4234,19 @@ ulong bootcode[]={
	0x00000000,
	0x001fffff,
	0x7fffffff,
	0x00003f20,
	0x00003f50,
	0x00003f98,
	0x00003fe8,
	0x00003ff8,
	0x00004028,
	0x00004078,
	0x000040bc,
	0x000040cc,
	0x0000411c,
	0x000047a0,
	0x00004800,
	0x00004860,
	0x00004114,
	0x00004144,
	0x0000418c,
	0x000041dc,
	0x000041ec,
	0x0000421c,
	0x0000426c,
	0x000042b0,
	0x000042c0,
	0x00004310,
	0x00004994,
	0x000049f4,
	0x00004a54,
	0x00000000,
	0x00000000,
	0x00000000,


@@ 4159,169 4303,171 @@ ulong bootcode[]={
	0x38303032,
	0x62303432,
	0x36356400,
	0x3f006865,
	0x6c700025,
	0x730a0023,
	0x632f636f,
	0x6e730023,
	0x632f636f,
	0x6e730023,
	0x632f636f,
	0x6e730073,
	0x65727665,
	0x725b2573,
	0x5d3a2000,
	0x63616e27,
	0x74207265,
	0x61642023,
	0x632f636f,
	0x6e733b20,
	0x706c6561,
	0x73652072,
	0x65626f6f,
	0x74007573,
	0x65725b25,
	0x735d3a20,
	0x00626f6f,
	0x74657300,
	0x63616e27,
	0x74207265,
	0x61642023,
	0x632f636f,
	0x6e733b20,
	0x706c6561,
	0x73652072,
	0x65626f6f,
	0x7400626f,
	0x6f746573,
	0x23632f63,
	0x6f6e7300,
	0x23632f63,
	0x6f6e7300,
	0x23632f63,
	0x6f6e7300,
	0x626f6f74,
	0x2e632073,
	0x74617269,
	0x6e670a00,
	0x62697462,
	0x6f6f7465,
	0x73002f6d,
	0x6970732f,
	0x39007365,
	0x72766572,
	0x00626f6f,
	0x74657300,
	0x23632f75,
	0x73657200,
	0x23632f75,
	0x73657200,
	0x75736572,
	0x20777269,
	0x74650062,
	0x6974636f,
	0x6e6e6563,
	0x74002333,
	0x2f626974,
	0x33006f70,
	0x656e696e,
	0x67202333,
	0x2f626974,
	0x3300236c,
	0x2f312f63,
	0x746c006f,
	0x743a2025,
	0x7320756e,
	0x6b6e6f77,
	0x6e0a0043,
	0x6f6e6e65,
	0x6374696e,
	0x6720746f,
	0x20736572,
	0x76657220,
	0x25730a00,
	0x62697463,
	0x6f6e6e65,
	0x63740023,
	0x332f6269,
	0x7433006f,
	0x70656e69,
	0x6e672023,
	0x332f6269,
	0x74330023,
	0x6c2f312f,
	0x63746c00,
	0x636f6e6e,
	0x65637420,
	0x30783930,
	0x3000636f,
	0x6e6e6563,
	0x74203078,
	0x39303000,
	0x70757368,
	0x206e6f65,
	0x74686572,
	0x6f70656e,
	0x696e6720,
	0x236c2f31,
	0x2f63746c,
	0x00636f6e,
	0x6e656374,
	0x20307839,
	0x30300063,
	0x6f6e6e65,
	0x63742030,
	0x78393030,
	0x00707573,
	0x68206e6f,
	0x65746865,
	0x7200236e,
	0x2f312f64,
	0x61746100,
	0x72007075,
	0x7368206e,
	0x6f657468,
	0x65720023,
	0x6e2f312f,
	0x64617461,
	0x006f7065,
	0x6e696e67,
	0x20236e2f,
	0x312f6461,
	0x74610023,
	0x6e2f312f,
	0x63746c00,
	0x6f70656e,
	0x696e6720,
	0x236e2f31,
	0x2f646174,
	0x6100236e,
	0x2f312f63,
	0x746c006f,
	0x70656e69,
	0x6e672023,
	0x6e2f312f,
	0x63746c00,
	0x6e6f702e,
	0x2e2e0077,
	0x72697465,
	0x206e6f70,
	0x00726561,
	0x64206e6f,
	0x70006e20,
	0x3d202564,
	0x3b206275,
	0x66203d20,
	0x252e3278,
	0x2f63746c,
	0x006e6f70,
	0x2e2e2e00,
	0x6e203d20,
	0x25640a00,
	0x77726974,
	0x65206e6f,
	0x70007265,
	0x6164206e,
	0x6f70006e,
	0x203d2025,
	0x643b2062,
	0x7566203d,
	0x20252e32,
	0x7820252e,
	0x32782025,
	0x2e32780a,
	0x00666f72,
	0x6d617420,
	0x6e6f7000,
	0x6e6f7420,
	0x526e6f70,
	0x00736573,
	0x73696f6e,
	0x2e2e2e00,
	0x77726974,
	0x65207365,
	0x2e327820,
	0x252e3278,
	0x0a00666f,
	0x726d6174,
	0x206e6f70,
	0x006e6f74,
	0x20526e6f,
	0x70007365,
	0x7373696f,
	0x6e007265,
	0x61642073,
	0x6e2e2e2e,
	0x00777269,
	0x74652073,
	0x65737369,
	0x6f6e0066,
	0x6f726d61,
	0x74207365,
	0x7373696f,
	0x6e006e6f,
	0x74205273,
	0x6f6e0072,
	0x65616420,
	0x73657373,
	0x696f6e00,
	0x666f726d,
	0x61742073,
	0x65737369,
	0x6f6e0065,
	0x72726f72,
	0x2025643b,
	0x0072656d,
	0x6f746520,
	0x6f6e006e,
	0x6f742052,
	0x73657373,
	0x696f6e00,
	0x6572726f,
	0x7200706f,
	0x73742e2e,
	0x2e002373,
	0x2f257300,
	0x63726561,
	0x74650025,
	0x64007772,
	0x69746500,
	0x23732f25,
	0x73002373,
	0x2f626f6f,
	0x74006372,
	0x65617465,
	0x00256400,
	0x77726974,
	0x65006d6f,
	0x756e742e,
	0x2e2e002f,
	0x002f0062,
	0x696e6400,
	0x2f00006d,
	0x6f756e74,
	0x00737563,
	0x63657373,
	0x0a002f6d,
	0x6970732f,
	0x696e6974,
	0x00696e69,
	0x74002f6d,
	0x6970732f,
	0x72202564,
	0x3b007265,
	0x6d6f7465,
	0x20657272,
	0x6f720070,
	0x6f73742e,
	0x2e2e0023,
	0x732f2573,
	0x00637265,
	0x61746500,
	0x25640077,
	0x72697465,
	0x0023732f,
	0x626f6f74,
	0x00637265,
	0x61746500,
	0x25640077,
	0x72697465,
	0x006d6f75,
	0x6e742e2e,
	0x2e002f00,
	0x2f006269,
	0x6e64002f,
	0x00006d6f,
	0x756e7400,
	0x73756363,
	0x6573730a,
	0x002f6d69,
	0x70732f69,
	0x6e697400,
	0x696e6974,
	0x00626f6f,
	0x743a2025,
	0x733a2025,
	0x730a0000,
	0x002f6d69,
	0x70732f69,
	0x6e697400,
	0x626f6f74,
	0x3a202573,
	0x3a202573,
	0x0a00626f,
	0x6f743a20,
	0x25733a20,
	0x25730a00,
	0x3f006865,
	0x6c700025,
	0x730a0025,
	0x735b2573,
	0x5d3a2000,
	0x63616e27,
	0x74207265,
	0x61642023,
	0x632f636f,
	0x6e733b20,
	0x706c6561,
	0x73652072,
	0x65626f6f,
	0x74000000,
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,


@@ 4355,8 4501,6 @@ ulong bootcode[]={
	0x08000000,
	0x00000000,
	0x00000000,
	0x0004410,
	0x,
	0x0004410,
	0x0004658,
	0x,
};

M power/fns.h => power/fns.h +1 -1
@@ 162,7 162,7 @@ int	streamparse(char*, Block*);
long	stringread(Chan*, void*, long, char*);
long	syscall(Ureg*);
void	tlbinit(void);
void	touser(void);
void	touser(void *);
void	tsleep(Rendez*, int (*)(void*), void*, int);
void	twakeme(Alarm*);
void	unlock(Lock*);

M power/l.s => power/l.s +5 -1
@@ 61,11 61,12 @@ clrbss:
 */

TEXT	touser(SB), $-4

	MOVW	M(STATUS), R1
	OR	$(KUP|IEP), R1
	MOVW	R1, M(STATUS)
	NOOP
	MOVW	$(USTKTOP-20), SP
	MOVW	0(FP), SP
	MOVW	$(UTZERO+32), R26	/* header appears in text */
	RFE	(R26)



@@ 146,7 147,10 @@ TEXT	gotolabel(SB), $0

TEXT	gotopc(SB), $0

	MOVW	$0, R0
	MOVW	0(FP), R2
	MOVW	_argc(SB), R4
	MOVW	_argv(SB), R5
	JAL	(R2)
	RET			/* shouldn't get here */


M power/main.c => power/main.c +51 -10
@@ 12,8 12,8 @@
 */
int _argc; char **_argv; char **_env;

char *argv[5];
char argx[4][64];
char argbuf[512];
int argsize;

void
main(void)


@@ 43,18 43,47 @@ main(void)
	schedinit();
}

/*
 *  copy arguments into a temporary buffer.  we do this because the arguments
 *  are in memory that may be allocated to processes or kernel buffers.
 */
void
arginit(void)
{
	int i;
	int i, n;
	int nbytes;
	int ssize;
	char *p;
	char **argv;
	char *charp;

	if(_argc > 5)
		_argc = 5;
	/*
	 *  trim arguments to make them fit in the buffer
	 */
	for(nbytes = i = 0; i < _argc; i++){
		n = strlen(_argv[i]) + 1;
		ssize = BY2WD*(i+2) + ((nbytes+n+(BY2WD-1)) & ~(BY2WD-1));
		if(ssize > sizeof(argbuf))
			break;
		nbytes += n;
	}
	_argc = i;
	ssize = BY2WD*(i+1) + ((nbytes+(BY2WD-1)) & ~(BY2WD-1));

	for(i = 1; i < _argc; i++){
		strcpy(argx[i-1], _argv[i]);
		argv[i-1] = &(argx[i-1][0]);
	/*
	 *  copy arguments into the buffer
	 */
	argv = (char**)(argbuf + sizeof(argbuf) - ssize);
	charp = (char*)(argbuf + sizeof(argbuf) - nbytes);
	for(i=0; i<_argc; i++){
		argv[i] = charp;
		n = strlen(_argv[i]) + 1;
		memcpy(charp, _argv[i], n);
		charp += n;
	}
	_argv = argv;

	argsize = ssize;
}

void


@@ 168,17 197,21 @@ void
init0(void)
{
	int i;
	ulong *sp;

	m->proc = u->p;
	u->p->state = Running;
	u->p->mach = m;
	spllo();

	chandevinit();

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

	touser();
	sp = (ulong*)(USTKTOP - argsize);

	touser(sp);
}

FPsave	initfp;


@@ 189,6 222,8 @@ userinit(void)
	Proc *p;
	Seg *s;
	User *up;
	int i;
	char **av;

	p = newproc();
	p->pgrp = newpgrp();


@@ 211,11 246,17 @@ userinit(void)
	up->p = p;

	/*
	 * User Stack
	 * User Stack, pass input arguments to boot process
	 */
	s = &p->seg[SSEG];
	s->proc = p;
	s->o = neworig(USTKTOP-BY2PG, 1, OWRPERM, 0);
	s->o->pte[0].page = newpage(0, 0, USTKTOP-BY2PG);
	memcpy((ulong*)(s->o->pte[0].page->pa|KZERO|(BY2PG-argsize)), 
		argbuf + sizeof(argbuf) - argsize, argsize);
	av = (char **)(s->o->pte[0].page->pa|KZERO|(BY2PG-argsize));
	for(i = 0; i < _argc; i++)
		av[i] += (char *)USTKTOP - (argbuf + sizeof(argbuf));
	s->minva = USTKTOP-BY2PG;
	s->maxva = USTKTOP;


M power/trap.c => power/trap.c +1 -1
@@ 149,7 149,7 @@ trap(Ureg *ur)
			if(ecode == FPEXC)
				sprint(buf, "fp: %s FCR31 %lux", fpexcname(x), x);
			else
				sprint(buf, "trap: %s", excname[ecode]);
				sprint(buf, "trap: %s[%d]", excname[ecode], m->machno);
			postnote(u->p, 1, buf, NDebug);
		}else{
			print("%s %s pc=%lux\n", user? "user": "kernel", excname[ecode], ur->pc);