From 28c97040b6ae54e1a8b1631ccb195ab59a706acb Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Fri, 27 Apr 1990 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1990-04-27 --- port/devboot.c | 1 + port/devlance.c | 7 + power/bboot.c | 464 ++++++++----- power/boot.c | 301 ++++++--- power/boot.h | 1660 +++++++++++++++++++++++++---------------------- power/fns.h | 2 +- power/l.s | 6 +- power/main.c | 61 +- power/trap.c | 2 +- 9 files changed, 1476 insertions(+), 1028 deletions(-) diff --git a/port/devboot.c b/port/devboot.c index 5b9809d73b559ca595f87542fb1058b83412ca04..be028122f5b05e33b68097c4a0ab0fa270e393ea 100644 --- a/port/devboot.c +++ b/port/devboot.c @@ -104,6 +104,7 @@ bootwrite(Chan *c, void *buf, long n) case Qboot: pc = *(ulong*)buf; splhi(); + flushmmu(); gotopc(pc); } error(0, Ebadarg); diff --git a/port/devlance.c b/port/devlance.c index 9b379528e103053a60372595911679eb2a9d1fcd..287ecc6ddef2c84787c0212eb2bd4b538be30d27 100644 --- a/port/devlance.c +++ b/port/devlance.c @@ -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); + } + } /**/ } /* diff --git a/power/bboot.c b/power/bboot.c index 2863440ab132a75951d0bcbb4415e34ed01d66db..b20894897a40d17f11bb735c43842ce77b85212a 100644 --- a/power/bboot.c +++ b/power/bboot.c @@ -3,9 +3,23 @@ #include -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; +} diff --git a/power/boot.c b/power/boot.c index 3aea5613c8c87a8b144f1227858f10dd42526b20..363f31054b07086465a46df722bbaebccfc2b0b9 100644 --- a/power/boot.c +++ b/power/boot.c @@ -3,11 +3,21 @@ #include +#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; +} diff --git a/power/boot.h b/power/boot.h index 2cfa8772e98718dd89258649b20a4dad065e6027..9938be1b9b81ff0c40225ee95c0f1cb2ad166254 100644 --- a/power/boot.h +++ b/power/boot.h @@ -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, }; diff --git a/power/fns.h b/power/fns.h index cd4f9c3ad348999346605baaa2c54d825a495766..b853bcc57f04848627dd014148d9107e6ab150d8 100644 --- a/power/fns.h +++ b/power/fns.h @@ -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*); diff --git a/power/l.s b/power/l.s index 324bb3d3eadabcac0c4d98f431186ab54bba6169..09ed2b16b1d27043109a54ace5cb4a18f032a9fe 100644 --- a/power/l.s +++ b/power/l.s @@ -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 */ diff --git a/power/main.c b/power/main.c index 46a40b55ae05e7502d6b7500bd2910bc24a157a2..9b26556402acb1835d827c868e20af809342efb0 100644 --- a/power/main.c +++ b/power/main.c @@ -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; diff --git a/power/trap.c b/power/trap.c index 5eb654e7af8e68da59cdfc36c349f7281294d57d..3d3c94208414dd80237a94531e792e1eba4dec5e 100644 --- a/power/trap.c +++ b/power/trap.c @@ -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);