From 8f03e84a706272bf37086b931a998c298cca0421 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Fri, 4 May 1990 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1990-05-04 --- gnot/clock.c | 1 + gnot/devmnt.c | 1 - gnot/fns.h | 1 + gnot/l.s | 14 +- gnot/sysproc.c | 8 +- port/devbit.c | 178 ++++- port/devcons.c | 2 + power/bboot.c | 76 +- power/boot.c | 18 +- power/boot.h | 1834 ++++++++++++++++++++++++++++-------------------- power/conf.h | 41 +- power/dat.h | 34 +- power/fns.h | 5 + power/l.s | 94 +-- power/main.c | 299 ++++++-- 15 files changed, 1666 insertions(+), 940 deletions(-) diff --git a/gnot/clock.c b/gnot/clock.c index c7906d101c12aa75b875cc105b35ebd7fbaadba5..117840db98727a1394b4299b6d8eecd8ccdf8477 100644 --- a/gnot/clock.c +++ b/gnot/clock.c @@ -118,6 +118,7 @@ clock(Ureg *ur) unlock(&m->alarmlock); } kbdclock(); + mouseclock(); if((ur->sr&SPL(7)) == 0){ spllo(); if(p && p->state==Running) diff --git a/gnot/devmnt.c b/gnot/devmnt.c index 85cde24aca587ffeaf77c34257751262dfd0f036..c12610398e67cd682e35c8f6d2ad04e56ba22e59 100644 --- a/gnot/devmnt.c +++ b/gnot/devmnt.c @@ -382,7 +382,6 @@ mntclose(Chan *c) if(c == m->mntpt) m->mntpt = 0; if(decref(m) == 0){ /* BUG: need to hang up all pending i/o */ -print("close mount table %d\n", m->mntid); qlock(m); close(m->msg); m->msg = 0; diff --git a/gnot/fns.h b/gnot/fns.h index 5f4e6061bf7802dac6bc9fb011b12c5b8b4f3e37..2ff09852a3c62022f2a1a92071b12bb8341bbaf1 100644 --- a/gnot/fns.h +++ b/gnot/fns.h @@ -73,6 +73,7 @@ void mapstack(Proc*); void mmuinit(void); int mount(Chan*, Chan*, int); void mousebuttons(int); +void mouseclock(void); Chan *namec(char*, int, int, ulong); void nexterror(void); Alarm *newalarm(void); diff --git a/gnot/l.s b/gnot/l.s index bbed84bb26c26a36eb280d8b62980310c15cad63..58e5d05c7f42993cb21b251a616a938931f5c6a6 100644 --- a/gnot/l.s +++ b/gnot/l.s @@ -178,20 +178,18 @@ TEXT dkintr(SB), $0 /* level 2 */ TEXT mouseintr(SB), $0 /* level 4 */ - MOVEM $0x8082, -(A7) /* D0, A0, A6 */ + MOVEM $0x80C2, -(A7) /* D0, A0, A1, A6 */ MOVL $a6base(SB), A6 MOVL $15, R0 /* mask off hex switch */ ANDB MOUSE,R0 /* clears quadrature interrupt */ LEA mousetab(SB)(R0.W*8), A0 -#ifdef asdf + LEA mouse(SB), A1 MOVL (A0)+, R0 - ADDL R0, mousedx(SB) + ADDL R0, (A1)+ /* dx */ MOVL (A0), R0 - ADDL R0, mousedy(SB) - ADDL $1, mousechanged(SB) - ADDL $1, dotrack(SB) -#endif - MOVEM (A7)+, $0x4101 + ADDL R0, (A1)+ /* dy */ + ADDL $1, (A1) /* track */ + MOVEM (A7)+, $0x4301 RTE TEXT uartintr(SB), $0 /* level 5 */ diff --git a/gnot/sysproc.c b/gnot/sysproc.c index 01804902e183c1c0d81bc016de8c6a30d6698f36..3a8e504e8cd0be7ab8c614b516ba8ea8f409ccbc 100644 --- a/gnot/sysproc.c +++ b/gnot/sysproc.c @@ -175,18 +175,14 @@ sysexec(ulong *arg) if(!indir) strcpy(elem, u->elem); n = (*devtab[tc->type].read)(tc, &exec, sizeof(Exec)); - if(n < 2){ - print("short read\n"); + if(n < 2) Err: error(0, Ebadexec); - } if(n==sizeof(Exec) && exec.magic==A_MAGIC){ if((exec.text&KZERO) || (ulong)exec.entry < UTZERO+sizeof(Exec) - || (ulong)exec.entry >= UTZERO+sizeof(Exec)+exec.text){ - print("bad header sizes\n"); + || (ulong)exec.entry >= UTZERO+sizeof(Exec)+exec.text) goto Err; - } goto Binary; } diff --git a/port/devbit.c b/port/devbit.c index 2d81e6a8c09d783e34a6f4b0b9e7bc86b873fda9..cee45197e94c50f6e4dd0a06067c557402c21804 100644 --- a/port/devbit.c +++ b/port/devbit.c @@ -40,7 +40,72 @@ struct{ void bitcompact(void); void bitfree(Bitmap*); extern Bitmap screen; -Mouse mouse; + +struct{ + /* + * First three fields are known in l.s + */ + int dx; /* interrupt-time delta */ + int dy; + int track; /* update cursor on screen */ + Mouse; + int changed; /* mouse structure changed since last read */ + Rendez r; +}mouse; + +struct{ + Cursor; + Lock; + int visible; /* on screen */ + Rectangle r; /* location */ +}cursor = +{ + {{0, 0}, + {0xFFE0, 0xFFE0, 0xFFC0, 0xFF00, + 0xFF00, 0xFF80, 0xFFC0, 0xFFE0, + 0xE7F0, 0xE3F8, 0xC1FC, 0x00FE, + 0x007F, 0x003E, 0x001C, 0x0008, + }, + {0x0000, 0x7FC0, 0x7F00, 0x7C00, + 0x7E00, 0x7F00, 0x6F80, 0x67C0, + 0x43E0, 0x41F0, 0x00F8, 0x007C, + 0x003E, 0x001C, 0x0008, 0x0000, + }}, +}; + +ulong setbits[16]; +Bitmap set = +{ + setbits, + 0, + 1, + 0, + {0, 0, 16, 16} +}; + +ulong clrbits[16]; +Bitmap clr = +{ + clrbits, + 0, + 1, + 0, + {0, 0, 16, 16} +}; + +ulong cursorbackbits[16]; +Bitmap cursorback = +{ + cursorbackbits, + 0, + 1, + 0, + {0, 0, 16, 16} +}; + +void cursortobitmap(void); +void cursoron(int); +void cursoroff(int); enum{ Qdir, @@ -74,6 +139,7 @@ bitreset(void) bit.words = ialloc(conf.nbitbyte, 0); bit.nwords = conf.nbitbyte/sizeof(ulong); bit.wfree = bit.words; + cursortobitmap(); } void @@ -82,6 +148,7 @@ bitinit(void) lock(&bit); bit.bltuse = 0; unlock(&bit); + cursoron(1); } Chan* @@ -241,6 +308,7 @@ bitwrite(Chan *c, void *va, long n) uchar *p, *q; long m, v, miny, maxy, t, x, y; ulong l, nw, ws; + int off; Point pt; Rectangle rect; Bitmap *bp, *src, *dst; @@ -330,18 +398,27 @@ bitwrite(Chan *c, void *va, long n) dst = &bit.map[v]; if(v<0 || v>=conf.nbitmap || dst->ldepth < 0) error(0, Ebadbitmap); + off = 0; + if(v == 0) + off = 1; pt.x = GLONG(p+3); pt.y = GLONG(p+7); v = GSHORT(p+11); src = &bit.map[v]; if(v<0 || v>=conf.nbitmap || src->ldepth < 0) error(0, Ebadbitmap); + if(v == 0) + off = 1; rect.min.x = GLONG(p+13); rect.min.y = GLONG(p+17); rect.max.x = GLONG(p+21); rect.max.y = GLONG(p+25); v = GSHORT(p+29); + if(off) + cursoroff(1); bitblt(dst, pt, src, rect, v); + if(off) + cursoron(1); m -= 31; p += 31; break; @@ -379,6 +456,9 @@ bitwrite(Chan *c, void *va, long n) dst = &bit.map[v]; if(v>=conf.nbitmap || dst->ldepth<0) error(0, Ebadbitmap); + off = 0; + if(v == 0) + off = 1; pt.x = GLONG(p+3); pt.y = GLONG(p+7); v = GSHORT(p+11); @@ -390,7 +470,11 @@ bitwrite(Chan *c, void *va, long n) q = memchr(p, 0, m); if(q == 0) error(0, Ebadblt); + if(off) + cursoroff(1); string(dst, pt, &defont0/*BUG*/, (char*)p, v); + if(off) + cursoron(1); q++; m -= q-p; p = q; @@ -411,6 +495,9 @@ bitwrite(Chan *c, void *va, long n) dst = &bit.map[v]; if(v>=conf.nbitmap || dst->ldepth<0) error(0, Ebadbitmap); + off = 0; + if(v == 0) + off = 1; rect.min.x = GLONG(p+3); rect.min.y = GLONG(p+7); rect.max.x = GLONG(p+11); @@ -428,7 +515,11 @@ bitwrite(Chan *c, void *va, long n) for(i=0; i<16; i++) t.bits[i] = src->base[i]>>16; + if(off) + cursoroff(1); texture(dst, rect, &t, v); + if(off) + cursoron(1); } m -= 23; p += 23; @@ -449,6 +540,9 @@ bitwrite(Chan *c, void *va, long n) dst = &bit.map[v]; if(v>=conf.nbitmap || dst->ldepth<0) error(0, Ebadbitmap); + off = 0; + if(v == 0) + off = 1; miny = GLONG(p+3); maxy = GLONG(p+7); if(miny>maxy || minyr.min.y || maxy>dst->r.max.y) @@ -466,6 +560,8 @@ bitwrite(Chan *c, void *va, long n) m -= 11; if(m < l*(maxy-miny)) error(0, Ebadblt); + if(off) + cursoroff(1); for(y=miny; yr.min.x, y)); q += (dst->r.min.x&((sizeof(ulong))*ws-1))/8; @@ -473,6 +569,8 @@ bitwrite(Chan *c, void *va, long n) *q++ = U2K(*p++); m -= l; } + if(off) + cursoron(1); break; } @@ -524,10 +622,80 @@ print("bitcompact done\n"); } void -mousebuttons(int b) +cursortobitmap(void) +{ + int i; + + lock(&cursor); + for(i=0; i<16; i++){ + setbits[i] = cursor.set[i]<<16; + clrbits[i] = cursor.clr[i]<<16; + } + unlock(&cursor); +} + +void +cursoron(int dolock) +{ + if(dolock) + lock(&cursor); + if(cursor.visible++ == 0){ + cursor.r.min = mouse.xy; + cursor.r.max = add(mouse.xy, Pt(16, 16)); + cursor.r = raddp(cursor.r, cursor.offset); + bitblt(&cursorback, Pt(0, 0), &screen, cursor.r, S); + bitblt(&screen, add(mouse.xy, cursor.offset), + &clr, Rect(0, 0, 16, 16), D&~S); + bitblt(&screen, add(mouse.xy, cursor.offset), + &set, Rect(0, 0, 16, 16), S|D); + } + if(dolock) + unlock(&cursor); +} + +void +cursoroff(int dolock) +{ + if(dolock) + lock(&cursor); + if(--cursor.visible == 0) + bitblt(&screen, cursor.r.min, &cursorback, Rect(0, 0, 16, 16), S); + if(dolock) + unlock(&cursor); +} + +void +mousebuttons(int b) /* called splhi */ +{ + mouse.buttons = b; + mouse.changed = 1; + wakeup(&mouse.r); +} + +void +mouseclock(void) /* called splhi */ { - if(mouse.buttons != b){ - print("buttons %x\n", b); - mouse.buttons = b; + int x, y; + + if(mouse.track && canlock(&cursor)){ + x = mouse.xy.x + mouse.dx; + if(x < screen.r.min.x) + x = screen.r.min.x; + if(x >= screen.r.max.x) + x = screen.r.max.x; + y = mouse.xy.y + mouse.dy; + if(y < screen.r.min.y) + y = screen.r.min.y; + if(y >= screen.r.max.y) + y = screen.r.max.y; + cursoroff(0); + mouse.xy = Pt(x, y); + cursoron(0); + mouse.dx = 0; + mouse.dy = 0; + mouse.track = 0; + mouse.changed = 1; + unlock(&cursor); + wakeup(&mouse.r); } } diff --git a/port/devcons.c b/port/devcons.c index a7cd7b8ed19205ab352e93698f3c374bd3fd845b..9651d96fb4a71da77240a676d424fdafaa43d249 100644 --- a/port/devcons.c +++ b/port/devcons.c @@ -239,6 +239,8 @@ echo(int c) DEBUG(); if(c == 0x15) putstrn("^U\n", 3); + if(c == 0x16) + dumpqueues(); else{ ch = c; putstrn(&ch, 1); diff --git a/power/bboot.c b/power/bboot.c index 08bb0bd468c74888bde1644eb14b35c8a2d5da9d..c893398589341ef749f8ecd507ad083cfccca7bf 100644 --- a/power/bboot.c +++ b/power/bboot.c @@ -19,7 +19,6 @@ int fd; int cfd; int efd; - typedef struct address { char *name; @@ -65,10 +64,11 @@ struct a_out_h { char *lookup(char *); int readseg(int, int, long, long, int); int readkernel(int); +int readconf(int); int outin(char *, char *, char *, int); void prerror(char *); void error(char *); -void boot(int); +void boot(int, char *); /* * usage: 9b [-a] [server] [file] @@ -78,11 +78,14 @@ void boot(int); main(int argc, char *argv[]) { int i; + char *sysname; open("#c/cons", 0); open("#c/cons", 1); open("#c/cons", 1); + sysname = argv[0]; + argv++; argc--; while(argc > 0){ @@ -105,7 +108,7 @@ main(int argc, char *argv[]) break; } - boot(0); + boot(0, sysname); for(;;){ if(fd > 0) close(fd); @@ -114,14 +117,15 @@ main(int argc, char *argv[]) if(efd > 0) close(efd); fd = cfd = efd = 0; - boot(1); + boot(1, sysname); } } void -boot(int ask) +boot(int ask, char *addr) { int n; + char conffile[128]; if(ask){ outin("bootfile", bootfile, bbuf, sizeof(bbuf)); @@ -140,7 +144,6 @@ boot(int ask) return; } - print("Booting %s from server %s\n", bootfile, sys); /* * for the bit, we skip all the ether goo @@ -252,9 +255,18 @@ boot(int ask) } close(fd); - print("open file..."); + sprint(conffile, "/mips/conf/%s", addr); + print("%s...", conffile); + while((fd = open(conffile, OREAD)) < 0){ + outin("conffile", conffile, conffile, sizeof(conffile)); + } + if(readconf(fd) < 0) + prerror("readconf"); + close(fd); + + print("%s...", bootfile); while((fd = open(bootfile, OREAD)) < 0){ - outin("bootfile", DEFFILE, bbuf, sizeof(bbuf)); + outin("bootfile", bootfile, bbuf, sizeof(bbuf)); bootfile = bbuf; } readkernel(fd); @@ -335,6 +347,50 @@ readseg(int in, int out, long inoff, long outoff, int len) return 0; } +/* + * set a configuration value + */ + + +/* + * read the configuration + */ +int +readconf(int fd) +{ + int bfd; + int n; + long x; + + /* + * read the config file + */ + n = read(fd, buf, sizeof(buf)-1); + if(n <= 0) + return -1; + buf[n] = 0; + + /* + * write into 4 meg - 4k + */ + bfd = open("#b/mem", OWRITE); + if(bfd < 0){ + prerror("can't open #b/mem"); + return; + } + x = 0x80000000 | 4*1024*1024 - 4*1024; + if(seek(bfd, x, 0) != x){ + close(bfd); + return -1; + } + if(write(bfd, buf, n+1) != n+1){ + close(bfd); + return -1; + } + + close(bfd); + return 0; +} /* * read the kernel into memory and jump to it */ @@ -369,7 +425,7 @@ readkernel(int fd) close(bfd); return; } - print("+%d\n", a_out.bss); + print("+%d", a_out.bss); close(bfd); bfd = open("#b/boot", OWRITE); @@ -378,7 +434,7 @@ readkernel(int fd) return; } - print("entry: %ux\n", a_out.entryva); + print(" entry: 0x%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"); diff --git a/power/boot.c b/power/boot.c index 2de54c17490e7c6de59e646b83afed806252cff1..81f6c9306be7f7ff19eda128c295c102cbe67e6b 100644 --- a/power/boot.c +++ b/power/boot.c @@ -18,7 +18,6 @@ int fd; int cfd; int efd; - typedef struct address { char *name; @@ -47,7 +46,7 @@ void boot(int); /* * usage: 9b [-a] [server] [file] * - * default server is `bitbootes', default file is `/sys/src/9/mips/9' + * default server is `bitbootes', default file is `/mips/9' */ main(int argc, char *argv[]) { @@ -58,6 +57,12 @@ main(int argc, char *argv[]) open("#c/cons", 1); open("#c/cons", 1); + i = create("#e/sysname", 1, 0666); + if(i < 0) + error("sysname"); + if(write(i, argv[0], strlen(argv[0])) <= 0) + error("sysname"); + close(i); argv++; argc--; @@ -114,8 +119,6 @@ boot(int ask) return; } - print("Connecting to server %s\n", sys); - /* * for the bit, we skip all the ether goo */ @@ -239,7 +242,12 @@ boot(int ask) if(mount(fd, "/", MAFTER|MCREATE, "") < 0) error("mount"); print("success\n"); - execl("/mips/init", "init", 0); + close(fd); + + if(ask) + execl("/mips/init", "init", 0); + else + execl("/mips/init", "init", "-m", 0); error("/mips/init"); } diff --git a/power/boot.h b/power/boot.h index 89a0b5a062730c9996c39362d2c94a988bd17ce5..17945eb08a5545a2dc3204b5e43206382ed21ab0 100644 --- a/power/boot.h +++ b/power/boot.h @@ -1,8 +1,8 @@ ulong bootcode[]={ 0x00000407, - 0x000040e8, - 0x00000538, - 0x000010d0, + 0x00004510, + 0x00000610, + 0x000011a8, 0x00000000, 0x00001020, 0x00000000, @@ -16,740 +16,1018 @@ ulong bootcode[]={ 0xafa10004, 0x0c000415, 0xafa20008, - 0x0c00071f, + 0x0c000835, 0xafa10004, 0x08000411, 0x00000027, 0x23bdffec, 0xafbf0000, - 0xafa0000c, - 0x23c18232, + 0x23c181c2, 0xafa10004, - 0x0c000e51, + 0x0c000f51, 0xafa00008, - 0x23c2823a, + 0x23c281ca, 0xafa20004, 0x20010001, - 0x0c000e51, + 0x0c000f51, 0xafa10008, - 0x23c28242, + 0x23c281d2, 0xafa20004, 0x20010001, - 0x0c000e51, + 0x0c000f51, 0xafa10008, - 0x8fa5000c, - 0x2007006d, - 0x8fa2001c, - 0x20060001, - 0x8fa10018, - 0x24430004, - 0x2424ffff, - 0x18800017, - 0x2008002d, - 0x8c610000, - 0x00000027, - 0x80210000, - 0x00000027, - 0x14280011, - 0x00000027, - 0x8c610000, + 0x8fa3001c, + 0x8fa20018, + 0x8c660000, + 0x24630004, + 0x2444ffff, + 0x18800010, + 0x2005002d, + 0x8c620000, 0x00000027, - 0x80210001, + 0x80420000, 0x00000027, - 0x14270002, + 0x1445000a, 0x00000027, - 0x00062825, 0x2484ffff, 0x18800007, 0x24630004, - 0x8c610000, + 0x8c620000, 0x00000027, - 0x80210000, + 0x80420000, 0x00000027, - 0x1028fff1, + 0x1045fff8, 0x00000027, - 0x23c2824a, + 0x23c281da, 0xafc28002, - 0x23c18254, + 0x23c181e4, 0x38820001, - 0x10400029, - 0xafc18006, + 0x1040002d, + 0xafc18012, 0x38820002, - 0x10400020, + 0x10400024, 0x00000027, - 0x0c000476, - 0xafa50004, - 0x8fc38052, + 0xafa00004, + 0xafa6000c, + 0x0c000470, + 0xafa60008, + 0x8fc38076, 0x00000027, 0x18600003, 0x00000027, - 0x0c000e38, + 0x0c000f42, 0xafa30004, - 0x8fc28016, + 0x8fc2803e, 0x00000027, 0x18400004, 0x00000027, - 0x8fc18016, - 0x0c000e38, + 0x8fc1803e, + 0x0c000f42, 0xafa10004, - 0x8fc2801a, + 0x8fc28042, 0x00000027, 0x18400004, 0x00000027, - 0x8fc1801a, - 0x0c000e38, + 0x8fc18042, + 0x0c000f42, 0xafa10004, - 0xafc0801a, - 0xafc08016, - 0xafc08052, + 0xafc08042, + 0xafc0803e, + 0xafc08076, 0x20010001, - 0x0c000476, 0xafa10004, - 0x8fc38052, - 0x08000452, + 0x8fa2000c, + 0x0c000470, + 0xafa20008, + 0x8fc38076, + 0x0800044a, 0x00000027, 0x8c610000, 0x00000027, - 0xafc18006, + 0xafc18012, 0x8c620004, - 0x0800044e, + 0x08000444, 0xafc28002, 0x8c620000, - 0x0800044e, - 0xafc28006, - 0x23bdffdc, + 0x08000444, + 0xafc28012, + 0x23bdff60, 0xafbf0000, - 0x8fc48002, - 0x8fa20028, + 0x8fa100a4, 0x00000027, - 0x144001cc, + 0x1020000c, 0x00000027, - 0x0c00067e, - 0xafa40004, + 0x23c281ec, + 0xafa20004, + 0x8fc18012, + 0x23c2972e, + 0xafa10008, + 0xafa2000c, + 0x2001008c, + 0x0c0007d7, + 0xafa10010, + 0x23c2972e, + 0xafc28012, + 0x8fa100a4, + 0x00000027, + 0x142001a1, + 0x00000027, + 0x8fc18002, + 0x0c00065c, + 0xafa10004, 0x00012025, 0x1480000c, - 0xafc4802e, - 0x20010002, - 0xafa10004, - 0x23c28263, - 0xafa20008, - 0x8fc18002, - 0x0c000770, - 0xafa1000c, + 0xafc48052, + 0x20020002, + 0xafa20004, + 0x23c181fc, + 0xafa10008, + 0x8fc28002, + 0x0c000886, + 0xafa2000c, 0x8fa20000, 0x00000027, 0x00400008, - 0x23bd0024, - 0x23c28275, - 0xafa20004, - 0x8fc18002, - 0x0c00074a, - 0xafa10008, - 0x8fc1802e, - 0x23c3828e, - 0xafa10004, - 0x0c0007ad, + 0x23bd00a0, + 0xafa40004, + 0x23c3820e, + 0x0c0008c3, 0xafa30008, - 0x14200152, + 0x1420012c, 0x20040002, - 0x23c28299, + 0x23c28219, 0xafa20004, - 0x0c000e51, + 0x0c000f51, 0xafa40008, 0x04210008, - 0xafc18052, - 0x23c182a1, - 0x0c000656, + 0xafc18076, + 0x23c18221, + 0x0c000634, 0xafa10004, 0x8fa20000, 0x00000027, 0x00400008, - 0x23bd0024, - 0x23c28337, - 0x0c00074a, + 0x23bd00a0, + 0x23c282b7, + 0x0c000860, 0xafa20004, - 0xa3c095be, - 0x23c295be, + 0xa3c096e6, + 0x23c296e6, 0xafa20004, - 0x23c385be, - 0x0c0007eb, + 0x23c386e6, + 0x0c0008f5, 0xafa30008, 0x00012025, - 0x8fc18052, - 0x23c385be, + 0x8fc18076, + 0x23c386e6, 0xafa10004, 0xafa30008, - 0xafa40020, - 0x0c000e5b, + 0xafa4009c, + 0x0c000f65, 0xafa4000c, - 0x8fa40020, + 0x8fa3009c, 0x00000027, - 0x1024000c, + 0x10230008, 0x00000027, - 0x23c1833e, - 0xafa10004, - 0x0c00074a, - 0xafa40008, - 0x23c18346, - 0x0c000656, + 0x23c182be, + 0x0c000634, 0xafa10004, 0x8fa20000, 0x00000027, 0x00400008, - 0x23bd0024, - 0x8fc18052, - 0x23c385be, + 0x23bd00a0, + 0x8fc18076, + 0x23c386e6, 0xafa10004, 0xafa30008, 0x20011000, - 0x0c000e56, + 0x0c000f56, 0xafa1000c, 0x1c200008, 0x00000027, - 0x23c28350, - 0x0c000656, + 0x23c282c8, + 0x0c000634, 0xafa20004, 0x8fa20000, 0x00000027, 0x00400008, - 0x23bd0024, - 0x23c285be, + 0x23bd00a0, + 0x23c286e6, 0xafa20004, - 0x23c395be, + 0x23c396e6, 0xafa30008, - 0xafa10020, - 0x0c000b88, + 0xafa1009c, + 0x0c000c92, 0xafa1000c, 0x14200019, 0x00000027, - 0x23c18359, + 0x23c182d1, 0xafa10004, - 0x8fa20020, + 0x8fa2009c, 0x00000027, 0xafa20008, - 0x83c185be, + 0x83c186e6, 0x00000027, 0xafa1000c, - 0x83c285bf, + 0x83c286e7, 0x00000027, 0xafa20010, - 0x83c185c0, + 0x83c186e8, 0x00000027, 0xafa10014, - 0x83c285c1, - 0x0c00074a, + 0x83c286e9, + 0x0c000860, 0xafa20018, - 0x23c1837c, - 0x0c000656, + 0x23c182f4, + 0x0c000634, 0xafa10004, 0x8fa20000, 0x00000027, 0x00400008, - 0x23bd0024, - 0x83c295be, + 0x23bd00a0, + 0x83c296e6, 0x20010001, 0x10410008, 0x00000027, - 0x23c28387, - 0x0c000656, + 0x23c282ff, + 0x0c000634, 0xafa20004, 0x8fa20000, 0x00000027, 0x00400008, - 0x23bd0024, - 0x23c18390, - 0x0c00074a, + 0x23bd00a0, + 0x23c18308, + 0x0c000860, 0xafa10004, 0x20020002, - 0xa3c295be, + 0xa3c296e6, 0x20010076, - 0xa3c195ca, - 0x23c195be, + 0xa3c196f2, + 0x23c196e6, 0xafa10004, - 0x23c385be, - 0x0c0007eb, + 0x23c386e6, + 0x0c0008f5, 0xafa30008, - 0x8fc28052, - 0x23c385be, + 0x8fc28076, + 0x23c386e6, 0xafa20004, 0xafa30008, - 0xafa10020, - 0x0c000e5b, + 0xafa1009c, + 0x0c000f65, 0xafa1000c, - 0x8fa30020, + 0x8fa3009c, 0x00000027, 0x10230008, 0x00000027, - 0x23c1839b, - 0x0c000656, + 0x23c18313, + 0x0c000634, 0xafa10004, 0x8fa20000, 0x00000027, 0x00400008, - 0x23bd0024, - 0x8fc18052, - 0x23c385be, + 0x23bd00a0, + 0x8fc18076, + 0x23c386e6, 0xafa10004, 0xafa30008, 0x20011000, - 0x0c000e56, + 0x0c000f56, 0xafa1000c, 0x1c200008, 0x00000027, - 0x23c283a9, - 0x0c000656, + 0x23c28321, + 0x0c000634, 0xafa20004, 0x8fa20000, 0x00000027, 0x00400008, - 0x23bd0024, - 0x23c285be, + 0x23bd00a0, + 0x23c286e6, 0xafa20004, - 0x23c395be, + 0x23c396e6, 0xafa30008, - 0x0c000b88, + 0x0c000c92, 0xafa1000c, 0x14200008, 0x00000027, - 0x23c183b6, - 0x0c000656, + 0x23c1832e, + 0x0c000634, 0xafa10004, 0x8fa20000, 0x00000027, 0x00400008, - 0x23bd0024, - 0x83c295be, + 0x23bd00a0, + 0x83c296e6, 0x20010003, 0x10410008, 0x00000027, - 0x23c283c5, - 0x0c000656, + 0x23c2833d, + 0x0c000634, 0xafa20004, 0x8fa20000, 0x00000027, 0x00400008, - 0x23bd0024, - 0x87c195c2, + 0x23bd00a0, + 0x87c196ea, 0x00000027, 0x1020000d, 0x00000027, - 0x23c283d2, + 0x23c2834a, 0xafa20004, - 0x87c195c2, - 0x0c00074a, + 0x87c196ea, + 0x0c000860, 0xafa10008, - 0x23c283dc, - 0x0c000656, + 0x23c28354, + 0x0c000634, 0xafa20004, 0x8fa20000, 0x00000027, 0x00400008, - 0x23bd0024, - 0x23c183e9, - 0x0c00074a, + 0x23bd00a0, + 0x23c18361, + 0x0c000860, 0xafa10004, - 0x23c285be, - 0xafa20004, - 0x23c183f1, - 0xafa10008, - 0x8fc28002, - 0x0c000795, - 0xafa2000c, - 0x23c285be, - 0xafa20004, - 0x20030001, - 0xafa30008, - 0x200201b6, - 0x0c000e3d, - 0xafa2000c, - 0x04210004, - 0xafa1001c, - 0x23c183f7, - 0x0c000669, + 0x23c1836a, 0xafa10004, - 0x23c285be, - 0xafa20004, - 0x23c183fe, - 0xafa10008, - 0x8fc28052, - 0x0c000795, - 0xafa2000c, - 0x23c385be, - 0x0c0007d0, - 0xafa30004, - 0xafa10018, - 0x23c385be, - 0x0c0007d0, - 0xafa30004, - 0xafa10014, - 0x8fa3001c, - 0x23c185be, - 0xafa30004, - 0xafa10008, - 0x8fa30014, - 0x0c000e5b, - 0xafa3000c, - 0x00011025, - 0x8fa10018, - 0x00000027, - 0x10410004, + 0x23c3836c, + 0xafa30008, + 0x0c000f3d, + 0xafa0000c, + 0x04210008, 0x00000027, - 0x23c28401, - 0x0c000669, - 0xafa20004, - 0x8fa1001c, - 0x0c000e38, + 0x23c1836e, + 0x0c000634, 0xafa10004, - 0x23c18407, + 0x8fa20000, + 0x00000027, + 0x00400008, + 0x23bd00a0, + 0x8fc18076, + 0x23c38373, 0xafa10004, - 0x20030001, 0xafa30008, - 0x200101b6, - 0x0c000e3d, + 0x20010006, 0xafa1000c, - 0x04210004, - 0xafa1001c, - 0x23c2840f, - 0x0c000669, + 0x23c38375, + 0x0c000f4c, + 0xafa30010, + 0x04210008, + 0x00000027, + 0x23c18376, + 0x0c000634, + 0xafa10004, + 0x8fa20000, + 0x00000027, + 0x00400008, + 0x23bd00a0, + 0x8fc28076, + 0x0c000f42, 0xafa20004, - 0x23c185be, + 0x23a1001c, 0xafa10004, - 0x23c28416, + 0x23c2837c, 0xafa20008, - 0x8fc18052, - 0x0c000795, + 0x8fa100a8, + 0x0c0008ab, 0xafa1000c, - 0x23c285be, - 0x0c0007d0, + 0x23c2838a, 0xafa20004, - 0xafa10018, - 0x23c385be, - 0x0c0007d0, - 0xafa30004, - 0xafa10014, - 0x8fa3001c, - 0x23c185be, - 0xafa30004, + 0x23a1001c, + 0x0c000860, 0xafa10008, - 0x8fa30014, - 0x0c000e5b, - 0xafa3000c, - 0x00011025, - 0x8fa10018, - 0x00000027, - 0x10410004, - 0x00000027, - 0x23c28419, - 0x0c000669, - 0xafa20004, - 0x8fa1001c, - 0x0c000e38, + 0x23a1001c, 0xafa10004, - 0x23c2841f, - 0x0c00074a, - 0xafa20004, - 0x23c28428, - 0xafa20004, - 0x23c3842a, - 0xafa30008, - 0x0c000e33, - 0xafa0000c, - 0x04210004, - 0x00000027, - 0x23c1842c, - 0x0c000669, + 0x0c000f51, + 0xafa00008, + 0xafc18076, + 0x0421000a, + 0x23a4001c, + 0x23c18390, 0xafa10004, - 0x8fc18052, - 0x23c38431, + 0xafa40008, + 0xafa4000c, + 0x20020080, + 0x0c0007d7, + 0xafa20010, + 0x0800058c, + 0x00000027, + 0x0c0006f2, 0xafa10004, - 0xafa30008, - 0x20010006, - 0xafa1000c, - 0x23c38433, - 0x0c000e4c, - 0xafa30010, 0x04210004, 0x00000027, - 0x23c18434, - 0x0c000669, + 0x23c18399, + 0x0c000634, 0xafa10004, - 0x23c2843a, - 0x0c00074a, + 0x8fc28076, + 0x0c000f42, 0xafa20004, - 0x23c18443, + 0x23c183a2, 0xafa10004, - 0x23c2844e, + 0x8fc28012, + 0x0c000860, 0xafa20008, - 0x0c0007df, - 0xafa0000c, - 0x23c18453, - 0x0c000669, + 0x8fc48012, + 0x00000027, + 0xafc48012, + 0xafa40004, + 0x0c000f51, + 0xafa00008, + 0x0421000c, + 0xafc18076, + 0x23c283a8, + 0xafa20004, + 0x8fc18012, + 0x23c2972e, + 0xafa10008, + 0xafa2000c, + 0x2001008c, + 0x0c0007d7, + 0xafa10010, + 0x080005ad, + 0x23c4972e, + 0x0c000740, 0xafa10004, + 0x23c283b1, + 0x0c000634, + 0xafa20004, 0x8fa20000, 0x00000027, 0x00400008, - 0x23bd0024, - 0x23c182b1, + 0x23bd00a0, + 0x23c18231, 0xafa10004, - 0x0c000e51, + 0x0c000f51, 0xafa40008, 0x04210008, - 0xafc1801a, - 0x23c282ba, - 0x0c000656, + 0xafc1803e, + 0x23c2823a, + 0x0c000634, 0xafa20004, 0x8fa20000, 0x00000027, 0x00400008, - 0x23bd0024, + 0x23bd00a0, 0xafa10004, - 0x23c382cb, + 0x23c3824b, 0xafa30008, 0x2002000d, - 0x0c000e5b, + 0x0c000f65, 0xafa2000c, 0x04210008, 0x00000027, - 0x23c182d9, - 0x0c000656, + 0x23c18259, + 0x0c000634, 0xafa10004, 0x8fa20000, 0x00000027, 0x00400008, - 0x23bd0024, - 0x8fc1801a, - 0x23c382e7, + 0x23bd00a0, + 0x8fc1803e, + 0x23c38267, 0xafa10004, 0xafa30008, 0x2001000c, - 0x0c000e5b, + 0x0c000f65, 0xafa1000c, 0x04210008, 0x00000027, - 0x23c282f4, - 0x0c000656, + 0x23c28274, + 0x0c000634, 0xafa20004, 0x8fa20000, 0x00000027, 0x00400008, - 0x23bd0024, - 0x23c28301, + 0x23bd00a0, + 0x23c28281, 0xafa20004, 0x20030002, - 0x0c000e51, + 0x0c000f51, 0xafa30008, 0x04210008, - 0xafc18052, - 0x23c1830b, - 0x0c000656, + 0xafc18076, + 0x23c1828b, + 0x0c000634, 0xafa10004, 0x8fa20000, 0x00000027, 0x00400008, - 0x23bd0024, - 0x23c1831d, + 0x23bd00a0, + 0x23c1829d, 0xafa10004, 0x20030002, - 0x0c000e51, + 0x0c000f51, 0xafa30008, 0x04210008, - 0xafc18016, - 0x23c28326, - 0x0c000656, + 0xafc1803e, + 0x23c282a6, + 0x0c000634, + 0xafa20004, + 0x8fa20000, + 0x00000027, + 0x00400008, + 0x23bd00a0, + 0x8fc38052, + 0x0c0008e6, + 0xafa30004, + 0xafa10018, + 0x8fc3803e, + 0x00000027, + 0xafa30004, + 0x8fc28052, + 0x00000027, + 0xafa20008, + 0x8fa30018, + 0x0c000f65, + 0xafa3000c, + 0x0421fe8c, + 0x00000027, + 0x8fc18052, + 0x0c000634, + 0xafa10004, + 0x8fa20000, + 0x00000027, + 0x00400008, + 0x23bd00a0, + 0x23c181f5, + 0xafa10004, + 0x8fc28002, + 0x23c180b2, + 0xafa20008, + 0xafa1000c, + 0x20020038, + 0x0c0007d7, + 0xafa20010, + 0x23c480b2, + 0xafc48002, + 0x0c00065c, + 0xafa40004, + 0x08000489, + 0x00012025, + 0x23bdffac, + 0xafbf0000, + 0xafa00004, + 0x23a10014, + 0x0c000f47, + 0xafa10008, + 0x20020002, + 0xafa20004, + 0x23c183c6, + 0xafa10008, + 0x8fa20058, + 0x23a10014, + 0xafa2000c, + 0x0c000886, + 0xafa10010, + 0x8fa20000, + 0x00000027, + 0x00400008, + 0x23bd0054, + 0x23bdffac, + 0xafbf0000, + 0xafa00004, + 0x23a20014, + 0x0c000f47, + 0xafa20008, + 0x20010002, + 0xafa10004, + 0x23c283d4, + 0xafa20008, + 0x8fa10058, + 0x23a20014, + 0xafa1000c, + 0x0c000886, + 0xafa20010, + 0x0c000844, + 0xafa00004, + 0x8fa20000, + 0x00000027, + 0x00400008, + 0x23bd0054, + 0x23bdfff0, + 0xafbf0000, + 0x8fa20014, + 0x23c383e2, + 0xafa20004, + 0x0c0008c3, + 0xafa30008, + 0x10200025, + 0x00000027, + 0x8fa20014, + 0x23c383e4, + 0xafa20004, + 0x0c0008c3, + 0xafa30008, + 0x1020001e, + 0x00000027, + 0x23c4807a, + 0x8c820000, + 0x00000027, + 0x10400015, + 0x00000027, + 0xafa4000c, + 0x8c820000, + 0x00000027, + 0xafa20004, + 0x8fa30014, + 0x0c0008c3, + 0xafa30008, + 0x8fa4000c, + 0x14200006, + 0x00000027, + 0x8c810004, + 0x8fa20000, + 0x00000027, + 0x00400008, + 0x23bd0010, + 0x24840008, + 0x8c820000, + 0x00000027, + 0x1440ffed, + 0x00000027, + 0x8fa20000, + 0x23bd0010, + 0x00400008, + 0x00000825, + 0x23c4807a, + 0x8c810000, + 0x00000027, + 0x1020000e, + 0x00000027, + 0x23c283e9, + 0xafa20004, + 0xafa4000c, + 0x8c810000, + 0x0c000860, + 0xafa10008, + 0x8fa2000c, + 0x00000027, + 0x24440008, + 0x8c810000, + 0x00000027, + 0x1420fff4, + 0x00000027, + 0x8fa20000, + 0x23bd0010, + 0x00400008, + 0x00000825, + 0x23bdffe8, + 0xafbf0000, + 0x8fa1001c, + 0x00000027, + 0xafa10004, + 0x8fa30024, + 0x00000027, + 0xafa30008, + 0x0c000f5b, + 0xafa0000c, + 0x04210008, + 0x00000027, + 0x23c183ed, + 0x0c000634, + 0xafa10004, + 0x8fa20000, + 0x23bd0018, + 0x00400008, + 0x2001ffff, + 0x8fa10020, + 0x00000027, + 0xafa10004, + 0x8fa30028, + 0x00000027, + 0xafa30008, + 0x0c000f5b, + 0xafa0000c, + 0x8fa4002c, + 0x00011025, + 0x8fa10028, + 0x00000027, + 0x10410008, + 0x00000027, + 0x23c283fe, + 0x0c000634, + 0xafa20004, + 0x8fa20000, + 0x23bd0018, + 0x00400008, + 0x2001ffff, + 0x18800026, + 0xafa4002c, + 0x8fa2001c, + 0x23c386e6, + 0xafa20004, + 0xafa30008, + 0x20021000, + 0x0c000f56, + 0xafa2000c, + 0x1c200008, + 0x00000027, + 0x23c2840d, + 0x0c000634, + 0xafa20004, + 0x8fa20000, + 0x23bd0018, + 0x00400008, + 0x2001ffff, + 0x8fa20020, + 0x23c386e6, + 0xafa20004, + 0xafa30008, + 0xafa10014, + 0x0c000f65, + 0xafa1000c, + 0x8fa40014, + 0x00000027, + 0x10240008, + 0x00000027, + 0x23c1841e, + 0x0c000634, + 0xafa10004, + 0x8fa20000, + 0x23bd0018, + 0x00400008, + 0x2001ffff, + 0x8fa2002c, + 0x080006c7, + 0x00442023, + 0x8fa20000, + 0x23bd0018, + 0x00400008, + 0x00000825, + 0x23bdffe4, + 0xafbf0000, + 0x8fa10020, + 0x23c386e6, + 0xafa10004, + 0xafa30008, + 0x20010fff, + 0x0c000f56, + 0xafa1000c, + 0x1c200005, + 0x00000027, + 0x8fa20000, + 0x23bd001c, + 0x00400008, + 0x2001ffff, + 0x23c286e6, + 0xafa10014, + 0x00411021, + 0xa0400000, + 0x23c1842d, + 0xafa10004, + 0x20030001, + 0x0c000f51, + 0xafa30008, + 0x04210008, + 0x00000027, + 0x23c28434, + 0x0c000634, + 0xafa20004, + 0x8fa20000, + 0x00000027, + 0x00400008, + 0x23bd001c, + 0x8fc58116, + 0xafa10018, + 0xafa10004, + 0xafa50010, + 0xafa50008, + 0x0c000f5b, + 0xafa0000c, + 0x8fa40018, + 0x00011025, + 0x8fa10010, + 0x00000027, + 0x10410007, + 0x00000027, + 0x0c000f42, + 0xafa40004, + 0x8fa20000, + 0x23bd001c, + 0x00400008, + 0x2001ffff, + 0xafa40004, + 0x23c386e6, + 0xafa30008, + 0x8fa20014, + 0x00000027, + 0x24420001, + 0x0c000f65, + 0xafa2000c, + 0x8fa40018, + 0x8fa30014, + 0x00000027, + 0x24630001, + 0x10230007, + 0x00000027, + 0x0c000f42, + 0xafa40004, + 0x8fa20000, + 0x23bd001c, + 0x00400008, + 0x2001ffff, + 0x0c000f42, + 0xafa40004, + 0x8fa20000, + 0x23bd001c, + 0x00400008, + 0x00000825, + 0x23bdffe0, + 0xafbf0000, + 0x23c28446, + 0xafa20004, + 0x20030001, + 0x0c000f51, + 0xafa30008, + 0x04210008, + 0xafa10018, + 0x23c1844d, + 0x0c000634, + 0xafa10004, + 0x8fa20000, + 0x00000027, + 0x00400008, + 0x23bd0020, + 0x8fa10024, + 0x23c38696, + 0xafa10004, + 0xafa30008, + 0x20010050, + 0x0c000f56, + 0xafa1000c, + 0x1c20000b, + 0x00000027, + 0x23c2845f, + 0x0c000634, 0xafa20004, + 0x8fa10018, + 0x0c000f42, + 0xafa10004, 0x8fa20000, 0x00000027, 0x00400008, - 0x23bd0024, - 0x8fc3802e, - 0x0c0007d0, - 0xafa30004, - 0xafa10018, - 0x8fc38016, - 0x00000027, - 0xafa30004, - 0x8fc2802e, + 0x23bd0020, + 0x23c28474, + 0xafa20004, + 0x8fc186ae, + 0x0c000860, + 0xafa10008, + 0x8fa10024, 0x00000027, - 0xafa20008, + 0xafa10004, 0x8fa30018, - 0x0c000e5b, - 0xafa3000c, - 0x0421fe66, + 0x20010050, + 0xafa30008, + 0xafa1000c, + 0x8fc386be, 0x00000027, - 0x8fc1802e, - 0x0c000656, - 0xafa10004, - 0x8fa20000, + 0xafa30010, + 0x8fc186ae, + 0x0c00069f, + 0xafa10014, + 0x0421000b, 0x00000027, - 0x00400008, - 0x23bd0024, - 0x23c2825c, + 0x23c28478, + 0x0c000634, 0xafa20004, - 0xafa40008, - 0x23c2808e, - 0xafa2000c, - 0x20010038, - 0x0c0006c1, - 0xafa10010, - 0x23c4808e, - 0xafc48002, - 0x0c00067e, - 0xafa40004, - 0x08000480, - 0x00012025, - 0x23bdffac, - 0xafbf0000, - 0xafa00004, - 0x23a20014, - 0x0c000e42, - 0xafa20008, - 0x20010002, + 0x8fa10018, + 0x0c000f42, 0xafa10004, - 0x23c2845e, - 0xafa20008, - 0x8fa10058, - 0x23a20014, - 0xafa1000c, - 0x0c000770, - 0xafa20010, 0x8fa20000, 0x00000027, 0x00400008, - 0x23bd0054, - 0x23bdffac, - 0xafbf0000, - 0xafa00004, - 0x23a10014, - 0x0c000e42, - 0xafa10008, - 0x20020002, + 0x23bd0020, + 0x23c2848d, 0xafa20004, - 0x23c1846c, + 0x8fc186b2, + 0x0c000860, 0xafa10008, - 0x8fa20058, - 0x23a10014, - 0xafa2000c, - 0x0c000770, - 0xafa10010, - 0x0c00072e, - 0xafa00004, - 0x8fa20000, + 0x8fa10024, 0x00000027, - 0x00400008, - 0x23bd0054, - 0x23bdfff0, - 0xafbf0000, - 0x8fa10014, - 0x23c3847a, 0xafa10004, - 0x0c0007ad, - 0xafa30008, - 0x10200025, + 0x8fa30018, 0x00000027, - 0x8fa20014, - 0x23c3847c, - 0xafa20004, - 0x0c0007ad, 0xafa30008, - 0x1020001e, + 0x8fc186ae, 0x00000027, - 0x23c48056, - 0x8c820000, - 0x00000027, - 0x10400015, + 0x24210050, + 0xafa1000c, + 0x8fc386be, + 0x8fc186ae, 0x00000027, - 0xafa4000c, - 0x8c820000, + 0x00611821, + 0xafa30010, + 0x8fc186b2, + 0x0c00069f, + 0xafa10014, + 0x0421000b, 0x00000027, + 0x23c28491, + 0x0c000634, 0xafa20004, - 0x8fa30014, - 0x0c0007ad, - 0xafa30008, - 0x8fa4000c, - 0x14200006, - 0x00000027, - 0x8c810004, + 0x8fa10018, + 0x0c000f42, + 0xafa10004, 0x8fa20000, 0x00000027, 0x00400008, - 0x23bd0010, - 0x24840008, - 0x8c820000, - 0x00000027, - 0x1440ffed, - 0x00000027, + 0x23bd0020, + 0x23c284a6, + 0xafa20004, + 0x8fc186b6, + 0x0c000860, + 0xafa10008, + 0x8fa20018, + 0x0c000f42, + 0xafa20004, + 0x23c284aa, + 0xafa20004, + 0x20030001, + 0x0c000f51, + 0xafa30008, + 0x04210008, + 0xafa10018, + 0x23c184b2, + 0x0c000634, + 0xafa10004, 0x8fa20000, - 0x23bd0010, - 0x00400008, - 0x00000825, - 0x23c48056, - 0x8c810000, 0x00000027, - 0x1020000e, - 0x00000027, - 0x23c28481, + 0x00400008, + 0x23bd0020, + 0x23c284c5, 0xafa20004, - 0xafa4000c, - 0x8c810000, - 0x0c00074a, + 0x8fc186ba, + 0x0c000860, 0xafa10008, - 0x8fa2000c, - 0x00000027, - 0x24440008, - 0x8c810000, - 0x00000027, - 0x1420fff4, + 0x200203e8, + 0x0c000f60, + 0xafa20004, + 0x8fa20018, + 0x23c38696, + 0xafa20004, + 0x24630024, + 0xafa30008, + 0x20020004, + 0x0c000f65, + 0xafa2000c, + 0x20030004, + 0x10230007, 0x00000027, + 0x23c184d4, + 0x0c000634, + 0xafa10004, + 0x8fa20018, + 0x0c000f42, + 0xafa20004, 0x8fa20000, - 0x23bd0010, + 0x00000027, 0x00400008, - 0x00000825, + 0x23bd0020, 0x23bdffec, 0xafbf0000, - 0x23c18485, - 0xafa10004, - 0x8fa20018, + 0x23c284e7, + 0xafa20004, + 0x8fa10018, 0x00000027, - 0xafa20008, - 0x8fa1001c, - 0x0c00074a, - 0xafa1000c, + 0xafa10008, + 0x8fa2001c, + 0x0c000860, + 0xafa2000c, 0xafa00004, - 0x8fa10020, + 0x8fa20020, 0x00000027, - 0xafa10008, + 0xafa20008, 0x8fa30024, - 0x0c000e56, + 0x0c000f56, 0xafa3000c, 0x14200003, 0x00012025, - 0x080006c3, + 0x080007d9, 0x00000027, 0x04210006, 0xafa10010, - 0x23c2848e, - 0x0c000669, - 0xafa20004, + 0x23c184f0, + 0x0c000647, + 0xafa10004, 0x8fa40010, 0x00000027, - 0x20020001, - 0x1482000c, + 0x20010001, + 0x1481000c, 0x00000027, - 0x8fa10020, + 0x8fa20020, 0x00000027, - 0xafa10004, - 0x8fa2001c, - 0x0c0007c3, - 0xafa20008, + 0xafa20004, + 0x8fa1001c, + 0x0c0008d9, + 0xafa10008, 0x8fa40010, 0x8fa20000, 0x23bd0014, 0x00400008, 0x00040825, - 0x8fa20020, + 0x8fa10020, 0x00000027, - 0x00820821, - 0xa020ffff, + 0x00811021, + 0xa040ffff, 0x8fa20000, 0x23bd0014, 0x00400008, @@ -758,7 +1036,7 @@ ulong bootcode[]={ 0x00002025, 0x28810021, 0x10200011, - 0x23c5853a, + 0x23c58612, 0x00040880, 0x00250821, 0x8c210000, @@ -783,7 +1061,7 @@ ulong bootcode[]={ 0x00001825, 0x28610021, 0x1020000d, - 0x23c4853a, + 0x23c48612, 0x00030880, 0x00240821, 0x8c210000, @@ -804,10 +1082,10 @@ ulong bootcode[]={ 0x00000027, 0x14200003, 0x00000027, - 0x0c00072e, + 0x0c000844, 0xafa00004, - 0x23c2803a, - 0x0c00072e, + 0x23c2805e, + 0x0c000844, 0xafa20004, 0x8fa20000, 0x00000027, @@ -815,7 +1093,7 @@ ulong bootcode[]={ 0x23bd0008, 0x23bdfff0, 0xafbf0000, - 0x23c5853a, + 0x23c58612, 0x20030020, 0x04600010, 0x00000027, @@ -831,11 +1109,11 @@ ulong bootcode[]={ 0x0080f809, 0xac200000, 0x8fa3000c, - 0x23c5853a, - 0x08000732, + 0x23c58612, + 0x08000848, 0x2463ffff, 0x8fa20014, - 0x0c000e2e, + 0x0c000f38, 0xafa20004, 0x8fa20000, 0x00000027, @@ -851,7 +1129,7 @@ ulong bootcode[]={ 0x23a31020, 0xafa2000c, 0x24630004, - 0x0c000e98, + 0x0c000fa2, 0xafa30010, 0x23a5001c, 0x00012025, @@ -859,19 +1137,19 @@ ulong bootcode[]={ 0xafa10004, 0xafa50008, 0x00850823, - 0x0c000e5b, + 0x0c000f65, 0xafa1000c, 0xafa10014, 0x0421000c, 0x00012025, - 0x8fc2800a, + 0x8fc28016, 0x00000027, 0x24420001, 0x2841000a, 0x14200006, - 0xafc2800a, + 0xafc28016, 0x20010001, - 0x0c00071f, + 0x0c000835, 0xafa10004, 0x8fa40014, 0x00000027, @@ -889,26 +1167,26 @@ ulong bootcode[]={ 0x23a31024, 0xafa1000c, 0x24630004, - 0x0c000e98, + 0x0c000fa2, 0xafa30010, 0x8fa21020, 0x23a5001c, 0xafa20004, 0xafa50008, 0x00251023, - 0x0c000e5b, + 0x0c000f65, 0xafa2000c, 0xafa10014, 0x0421000c, 0x00012025, - 0x8fc1800a, + 0x8fc18016, 0x00000027, 0x24210001, 0x2822000a, 0x14400006, - 0xafc1800a, + 0xafc18016, 0x20020001, - 0x0c00071f, + 0x0c000835, 0xafa20004, 0x8fa40014, 0x00000027, @@ -919,7 +1197,7 @@ ulong bootcode[]={ 0x23bdffe4, 0xafbf0000, 0x8fa40020, - 0x8fc2800e, + 0x8fc2801a, 0x24831000, 0xafa20014, 0xafa40004, @@ -928,11 +1206,11 @@ ulong bootcode[]={ 0x23a30024, 0xafa2000c, 0x24630004, - 0x0c000e98, + 0x0c000fa2, 0xafa30010, 0x8fa20014, 0x00000027, - 0xafc2800e, + 0xafc2801a, 0x8fa20020, 0x00000027, 0x00220823, @@ -990,18 +1268,6 @@ ulong bootcode[]={ 0x00220823, 0x03e00008, 0x23bd0004, - 0x23bdfff4, - 0xafbf0000, - 0x8fa20010, - 0x23a30010, - 0xafa20004, - 0x24630004, - 0x0c000e47, - 0xafa30008, - 0x8fa20000, - 0x00000027, - 0x00400008, - 0x23bd000c, 0x23bdffec, 0xafbf0000, 0x8fa40018, @@ -1039,10 +1305,10 @@ ulong bootcode[]={ 0x38220003, 0x1040000a, 0x00000027, - 0x23c180ca, + 0x23c1801e, 0xafa10004, 0x80820000, - 0x0c00074a, + 0x0c000860, 0xafa20008, 0x8fa20000, 0x23bd0014, @@ -1085,7 +1351,7 @@ ulong bootcode[]={ 0xafa10004, 0x24810008, 0xafa10008, - 0x0c001370, + 0x0c00147a, 0xafa6000c, 0x8fa10010, 0x2002001c, @@ -1096,7 +1362,7 @@ ulong bootcode[]={ 0x00000027, 0x24210024, 0xafa10008, - 0x0c001370, + 0x0c00147a, 0xafa2000c, 0x8fa10010, 0x8fa2001c, @@ -1115,7 +1381,7 @@ ulong bootcode[]={ 0x3822000d, 0x10400003, 0x00000027, - 0x08000810, + 0x0800091a, 0x00000027, 0x84810002, 0x00000027, @@ -1206,7 +1472,7 @@ ulong bootcode[]={ 0xafa20004, 0x2482000c, 0xafa20008, - 0x0c001370, + 0x0c00147a, 0xafa6000c, 0x8fa20010, 0x00000027, @@ -1235,7 +1501,7 @@ ulong bootcode[]={ 0x38220012, 0x10400003, 0x00000027, - 0x08000810, + 0x0800091a, 0x00000027, 0x84820002, 0x24a10002, @@ -1248,7 +1514,7 @@ ulong bootcode[]={ 0xafa10004, 0x2481000c, 0xafa10008, - 0x0c001370, + 0x0c00147a, 0xafa6000c, 0x8fa60018, 0x8fa10010, @@ -1307,7 +1573,7 @@ ulong bootcode[]={ 0x38220016, 0x10400003, 0x00000027, - 0x08000810, + 0x0800091a, 0x00000027, 0x84810002, 0x00000027, @@ -1348,7 +1614,7 @@ ulong bootcode[]={ 0x00000027, 0xafa20008, 0x8c81000c, - 0x0c001370, + 0x0c00147a, 0xafa1000c, 0x8fa20018, 0x8fa10010, @@ -1389,7 +1655,7 @@ ulong bootcode[]={ 0x00000027, 0xafa10008, 0x8c82000c, - 0x0c001370, + 0x0c00147a, 0xafa2000c, 0x8fa10018, 0x8fa20010, @@ -1493,7 +1759,7 @@ ulong bootcode[]={ 0x3822001b, 0x1040fe89, 0x00000027, - 0x08000810, + 0x0800091a, 0x00000027, 0x84820002, 0x00000027, @@ -1518,7 +1784,7 @@ ulong bootcode[]={ 0x3822001f, 0x1040fe70, 0x00000027, - 0x08000810, + 0x0800091a, 0x00000027, 0x84810002, 0x24a20002, @@ -1531,7 +1797,7 @@ ulong bootcode[]={ 0xafa20004, 0x24820008, 0xafa20008, - 0x0c001370, + 0x0c00147a, 0xafa7000c, 0x8fa20010, 0x00000027, @@ -1561,7 +1827,7 @@ ulong bootcode[]={ 0xafa20004, 0x24820008, 0xafa20008, - 0x0c001370, + 0x0c00147a, 0xafa7000c, 0x8fa20010, 0x00000027, @@ -1608,7 +1874,7 @@ ulong bootcode[]={ 0x38220023, 0x10400003, 0x00000027, - 0x08000810, + 0x0800091a, 0x00000027, 0x84820002, 0x00000027, @@ -1628,7 +1894,7 @@ ulong bootcode[]={ 0xafa20004, 0x24820008, 0xafa20008, - 0x0c001370, + 0x0c00147a, 0xafa6000c, 0x8fa20010, 0x00000027, @@ -1679,7 +1945,7 @@ ulong bootcode[]={ 0xafa20004, 0x24820008, 0xafa20008, - 0x0c001370, + 0x0c00147a, 0xafa7000c, 0x8fa20010, 0x00000027, @@ -1700,7 +1966,7 @@ ulong bootcode[]={ 0x38220027, 0x1040ff00, 0x00000027, - 0x08000810, + 0x0800091a, 0x00000027, 0x84820002, 0x00000027, @@ -1742,7 +2008,7 @@ ulong bootcode[]={ 0x00000027, 0xafa20008, 0x8c81000c, - 0x0c001370, + 0x0c00147a, 0xafa1000c, 0x8fa20018, 0x8fa10010, @@ -1784,7 +2050,7 @@ ulong bootcode[]={ 0x00000027, 0xafa10008, 0x8c82000c, - 0x0c001370, + 0x0c00147a, 0xafa2000c, 0x8fa10018, 0x8fa20010, @@ -1807,7 +2073,7 @@ ulong bootcode[]={ 0x8fa10018, 0x00000027, 0xafa10008, - 0x0c001370, + 0x0c00147a, 0xafa2000c, 0x8fa30018, 0x8fa10010, @@ -1966,10 +2232,10 @@ ulong bootcode[]={ 0x38410003, 0x1020000a, 0x00000027, - 0x23c280d8, + 0x23c2802c, 0xafa20004, 0x80a10000, - 0x0c00074a, + 0x0c000860, 0xafa10008, 0x8fa20000, 0x23bd0014, @@ -2000,7 +2266,7 @@ ulong bootcode[]={ 0x80210000, 0x00000027, 0xa0a1000c, - 0x08000bbe, + 0x08000cc8, 0x24840001, 0x90820000, 0x90810001, @@ -2012,7 +2278,7 @@ ulong bootcode[]={ 0xafa20004, 0xafa40010, 0xafa40008, - 0x0c001370, + 0x0c00147a, 0xafa6000c, 0x8fa10010, 0x8fa2001c, @@ -2022,10 +2288,10 @@ ulong bootcode[]={ 0xafa40010, 0xafa40008, 0x2002001c, - 0x0c001370, + 0x0c00147a, 0xafa2000c, 0x8fa10010, - 0x08000bbe, + 0x08000cc8, 0x2424001c, 0x3841000b, 0x10200023, @@ -2036,7 +2302,7 @@ ulong bootcode[]={ 0x3841000d, 0x10200003, 0x00000027, - 0x08000baf, + 0x08000cb9, 0x00000027, 0x90810000, 0x90820001, @@ -2049,7 +2315,7 @@ ulong bootcode[]={ 0x24840002, 0x00021200, 0x00220825, - 0x08000bbe, + 0x08000cc8, 0xa4a10004, 0x90820000, 0x90810001, @@ -2062,7 +2328,7 @@ ulong bootcode[]={ 0x24840002, 0x00010a00, 0x00411025, - 0x08000bbe, + 0x08000cc8, 0xa4a2000a, 0x90810000, 0x90820001, @@ -2087,7 +2353,7 @@ ulong bootcode[]={ 0x00021600, 0x00220825, 0x24840004, - 0x08000bbe, + 0x08000cc8, 0xaca10010, 0x90820000, 0x90810001, @@ -2099,10 +2365,10 @@ ulong bootcode[]={ 0xafa20004, 0xafa40010, 0xafa40008, - 0x0c001370, + 0x0c00147a, 0xafa6000c, 0x8fa10010, - 0x08000bbe, + 0x08000cc8, 0x2424001c, 0x2441ffed, 0x1c20003c, @@ -2121,7 +2387,7 @@ ulong bootcode[]={ 0x38410012, 0x10200003, 0x00000027, - 0x08000baf, + 0x08000cb9, 0x00000027, 0x90820000, 0x90810001, @@ -2133,7 +2399,7 @@ ulong bootcode[]={ 0xafa20004, 0xafa40010, 0xafa40008, - 0x0c001370, + 0x0c00147a, 0xafa6000c, 0x8fa5001c, 0x8fa10010, @@ -2153,7 +2419,7 @@ ulong bootcode[]={ 0x24810004, 0x24240001, 0x80210000, - 0x08000bbe, + 0x08000cc8, 0xa0a10028, 0x90820000, 0x90810001, @@ -2164,7 +2430,7 @@ ulong bootcode[]={ 0x24810002, 0x24240001, 0x80210000, - 0x08000bbe, + 0x08000cc8, 0xa0a10028, 0x38410014, 0x1020003b, @@ -2175,7 +2441,7 @@ ulong bootcode[]={ 0x38410016, 0x10200003, 0x00000027, - 0x08000baf, + 0x08000cb9, 0x00000027, 0x90820000, 0x90810001, @@ -2203,7 +2469,7 @@ ulong bootcode[]={ 0xaca2000c, 0xaca40010, 0x8ca2000c, - 0x08000bbe, + 0x08000cc8, 0x00822021, 0x90810000, 0x90820001, @@ -2225,7 +2491,7 @@ ulong bootcode[]={ 0xaca1000c, 0xaca40010, 0x8ca1000c, - 0x08000bbe, + 0x08000cc8, 0x00812021, 0x90820000, 0x90810001, @@ -2250,7 +2516,7 @@ ulong bootcode[]={ 0x24840002, 0x00010a00, 0x00411025, - 0x08000bbe, + 0x08000cc8, 0xaca2000c, 0x90820000, 0x90810001, @@ -2269,7 +2535,7 @@ ulong bootcode[]={ 0x24840002, 0x00010a00, 0x00411025, - 0x08000bbe, + 0x08000cc8, 0xaca2000c, 0x2441ffe0, 0x1c200059, @@ -2293,14 +2559,14 @@ ulong bootcode[]={ 0x3841001b, 0x1020ff02, 0x00000027, - 0x08000baf, + 0x08000cb9, 0x00000027, 0x90810000, 0x90820001, 0x24840002, 0x00021200, 0x00220825, - 0x08000bbe, + 0x08000cc8, 0xa4a10002, 0x3841001d, 0x10200018, @@ -2311,7 +2577,7 @@ ulong bootcode[]={ 0x3841001f, 0x1020fef0, 0x00000027, - 0x08000baf, + 0x08000cb9, 0x00000027, 0x90810000, 0x90820001, @@ -2323,10 +2589,10 @@ ulong bootcode[]={ 0xafa10004, 0xafa40010, 0xafa40008, - 0x0c001370, + 0x0c00147a, 0xafa7000c, 0x8fa20010, - 0x08000bbe, + 0x08000cc8, 0x24440040, 0x90820000, 0x90810001, @@ -2344,10 +2610,10 @@ ulong bootcode[]={ 0xafa20004, 0xafa40010, 0xafa40008, - 0x0c001370, + 0x0c00147a, 0xafa7000c, 0x8fa10010, - 0x08000bbe, + 0x08000cc8, 0x24240040, 0x90810000, 0x90820001, @@ -2360,7 +2626,7 @@ ulong bootcode[]={ 0x24840002, 0x00021200, 0x00220825, - 0x08000bbe, + 0x08000cc8, 0xa4a10004, 0x2441ffdc, 0x1c200045, @@ -2376,7 +2642,7 @@ ulong bootcode[]={ 0x38410023, 0x10200003, 0x00000027, - 0x08000baf, + 0x08000cb9, 0x00000027, 0x90820000, 0x90810001, @@ -2394,10 +2660,10 @@ ulong bootcode[]={ 0xafa20004, 0xafa40010, 0xafa40008, - 0x0c001370, + 0x0c00147a, 0xafa6000c, 0x8fa10010, - 0x08000bbe, + 0x08000cc8, 0x2424001c, 0x90810000, 0x90820001, @@ -2410,7 +2676,7 @@ ulong bootcode[]={ 0x24840002, 0x00021200, 0x00220825, - 0x08000bbe, + 0x08000cc8, 0xa4a10008, 0x90820000, 0x90810001, @@ -2428,10 +2694,10 @@ ulong bootcode[]={ 0xafa20004, 0xafa40010, 0xafa40008, - 0x0c001370, + 0x0c00147a, 0xafa7000c, 0x8fa10010, - 0x08000bbe, + 0x08000cc8, 0x24240040, 0x38410025, 0x10200027, @@ -2442,7 +2708,7 @@ ulong bootcode[]={ 0x38410027, 0x1020ff43, 0x00000027, - 0x08000baf, + 0x08000cb9, 0x00000027, 0x90810000, 0x90820001, @@ -2472,7 +2738,7 @@ ulong bootcode[]={ 0x24440001, 0xaca40010, 0x8ca2000c, - 0x08000bbe, + 0x08000cc8, 0x00822021, 0x90820000, 0x90810001, @@ -2496,7 +2762,7 @@ ulong bootcode[]={ 0x24240001, 0xaca40010, 0x8ca1000c, - 0x08000bbe, + 0x08000cc8, 0x00812021, 0x23bdffec, 0xafbf0000, @@ -2507,7 +2773,7 @@ ulong bootcode[]={ 0xafa40010, 0xafa40008, 0x2001001c, - 0x0c001370, + 0x0c00147a, 0xafa1000c, 0x8fa4001c, 0x8fa20010, @@ -2621,32 +2887,32 @@ ulong bootcode[]={ 0x03e00008, 0x23bd0004, 0x23bdfffc, - 0x20010016, + 0x20010006, 0x0000000c, 0x03e00008, 0x23bd0004, 0x23bdfffc, - 0x20010006, + 0x2001000d, 0x0000000c, 0x03e00008, 0x23bd0004, 0x23bdfffc, - 0x20010007, + 0x2001000e, 0x0000000c, 0x03e00008, 0x23bd0004, 0x23bdfffc, - 0x2001000d, + 0x2001000f, 0x0000000c, 0x03e00008, 0x23bd0004, 0x23bdfffc, - 0x2001000e, + 0x20010010, 0x0000000c, 0x03e00008, 0x23bd0004, 0x23bdfffc, - 0x2001000f, + 0x20010011, 0x0000000c, 0x03e00008, 0x23bd0004, @@ -2656,8 +2922,8 @@ ulong bootcode[]={ 0x03e00008, 0x23bd0004, 0x23bdfffc, - 0x8fc680c6, - 0x23c484b6, + 0x8fc6804e, + 0x23c48516, 0x83a1000b, 0x00000027, 0x3021007f, @@ -2680,13 +2946,13 @@ ulong bootcode[]={ 0x00021603, 0x00441021, 0x24c10001, - 0xafc180c6, + 0xafc1804e, 0xa0460000, 0x00050e00, 0x00010e03, 0x00240821, 0x80210000, - 0x23c2811e, + 0x23c28596, 0x00010880, 0x8fa3000c, 0x00220821, @@ -2705,7 +2971,7 @@ ulong bootcode[]={ 0x00000027, 0xafa2000c, 0x8fa30020, - 0x0c000e98, + 0x0c000fa2, 0xafa30010, 0x8fa20000, 0x00000027, @@ -2720,7 +2986,7 @@ ulong bootcode[]={ 0x8fc18112, 0x00000027, 0xafa10018, - 0x8fc28012, + 0x8fc2800e, 0x00000027, 0xafa20014, 0x8faa0034, @@ -2729,7 +2995,7 @@ ulong bootcode[]={ 0x8fa20038, 0x00000027, 0x2442ffff, - 0xafc28012, + 0xafc2800e, 0x00062025, 0x80840000, 0x20010025, @@ -2743,12 +3009,12 @@ ulong bootcode[]={ 0xafc18112, 0x8fa20014, 0x00000027, - 0xafc28012, + 0xafc2800e, 0x8fa20000, 0x23bd0030, 0x00400008, 0x000a0825, - 0x8fc18012, + 0x8fc1800e, 0x00000027, 0x0141182b, 0x10600005, @@ -2757,23 +3023,23 @@ ulong bootcode[]={ 0x254a0001, 0xafca8112, 0xa0440000, - 0x8fc1800e, + 0x8fc1801a, 0x00000027, 0x24210001, 0x148b0003, - 0xafc1800e, - 0x08000eab, - 0xafc7800e, + 0xafc1801a, + 0x08000fb5, + 0xafc7801a, 0x20010009, 0x1481ffdc, 0x00000027, - 0x8fc2800e, + 0x8fc2801a, 0x00000027, 0x24420007, 0x201cfff8, 0x005c1024, - 0x08000eab, - 0xafc2800e, + 0x08000fb5, + 0xafc2801a, 0x00075025, 0x00062025, 0x24c60001, @@ -2805,11 +3071,11 @@ ulong bootcode[]={ 0xafa8000c, 0xafaa0024, 0xafaa0010, - 0x23c184b6, + 0x23c18516, 0x3082007f, 0x00220821, 0x80210000, - 0x23c2811e, + 0x23c28596, 0x00010880, 0x00220821, 0x8c210000, @@ -2831,9 +3097,9 @@ ulong bootcode[]={ 0x24c60001, 0xafa6003c, 0x80840000, - 0x08000eea, + 0x08000ff4, 0x00615025, - 0x08000eab, + 0x08000fb5, 0x00a42821, 0x00062025, 0x24c60001, @@ -2847,7 +3113,7 @@ ulong bootcode[]={ 0x24c60001, 0xafa6003c, 0x80840000, - 0x08000eea, + 0x08000ff4, 0x24a50004, 0x28820030, 0x1440ffc6, @@ -2856,7 +3122,7 @@ ulong bootcode[]={ 0x0024182a, 0x10600003, 0x00000027, - 0x08000eea, + 0x08000ff4, 0x00000027, 0x05010002, 0x00000027, @@ -2868,7 +3134,7 @@ ulong bootcode[]={ 0x24c60001, 0xafa6003c, 0x80840000, - 0x08000f22, + 0x0800102c, 0x2428ffd0, 0x2001002d, 0x14810006, @@ -2887,7 +3153,7 @@ ulong bootcode[]={ 0x00000027, 0x1180ffa0, 0x00000027, - 0x08000ee7, + 0x08000ff1, 0x00e94823, 0x012b0018, 0x00000812, @@ -2896,7 +3162,7 @@ ulong bootcode[]={ 0x24c60001, 0xafa6003c, 0x80840000, - 0x08000f3f, + 0x08001049, 0x2429ffd0, 0x23bdffb4, 0xafbf0000, @@ -2957,7 +3223,7 @@ ulong bootcode[]={ 0x8fa20054, 0x2001ffff, 0xafa20008, - 0x0c000fe8, + 0x0c0010f2, 0xafa1000c, 0x8fa1001c, 0x8fa20000, @@ -2973,15 +3239,15 @@ ulong bootcode[]={ 0x00000027, 0x1ca00003, 0x00000027, - 0x08000f83, + 0x0800108d, 0x00000027, - 0x08000f78, + 0x08001082, 0x2484ffff, 0x000d6025, - 0x08000f76, + 0x08001080, 0x00c52823, 0x8ca50000, - 0x08000f71, + 0x0800107b, 0xafa4001c, 0x8ca20000, 0xafa4001c, @@ -2989,13 +3255,13 @@ ulong bootcode[]={ 0x00052c03, 0x00050c00, 0x00010c03, - 0x08000f71, + 0x0800107b, 0x00012825, 0x8ca50000, - 0x08000f71, + 0x0800107b, 0xafa4001c, 0x8ca50000, - 0x08000f71, + 0x0800107b, 0xafa4001c, 0x38410006, 0x10200029, @@ -3003,7 +3269,7 @@ ulong bootcode[]={ 0x38410009, 0x10200003, 0x00000027, - 0x08000f6f, + 0x08001079, 0x00000027, 0x8ca50000, 0x00000027, @@ -3025,7 +3291,7 @@ ulong bootcode[]={ 0x28820002, 0x10400003, 0x00000027, - 0x08000f83, + 0x0800108d, 0x00000027, 0x00a8001a, 0x04e00005, @@ -3036,25 +3302,25 @@ ulong bootcode[]={ 0x00000027, 0x1ca00003, 0x00000027, - 0x08000f83, + 0x0800108d, 0x00000027, - 0x08000fc6, + 0x080010d0, 0x2484ffff, 0x8ca10000, 0xafa4001c, 0x00012c00, 0x00052c03, 0x30a2ffff, - 0x08000f71, + 0x0800107b, 0x00022825, 0x23bdfff0, 0x8faa0014, 0x00006825, 0x8fac0018, 0x200b0020, - 0x8fc98012, + 0x8fc9800e, 0x8fa8001c, - 0x8fc7800e, + 0x8fc7801a, 0x8fc58112, 0x00002025, 0x000a3025, @@ -3084,7 +3350,7 @@ ulong bootcode[]={ 0x24840001, 0x008c182a, 0x1460fff5, - 0xafc7800e, + 0xafc7801a, 0x000a3025, 0x80c60000, 0x00000027, @@ -3101,9 +3367,9 @@ ulong bootcode[]={ 0xa0460000, 0x24e70001, 0x14ce001c, - 0xafc7800e, + 0xafc7801a, 0x000d3825, - 0xafcd800e, + 0xafcd801a, 0x000a3025, 0x80c60000, 0x254a0001, @@ -3126,7 +3392,7 @@ ulong bootcode[]={ 0x24840001, 0x0086182a, 0x1460fff5, - 0xafc7800e, + 0xafc7801a, 0x03e00008, 0x23bd0010, 0x20010009, @@ -3135,15 +3401,15 @@ ulong bootcode[]={ 0x24e20007, 0x201cfff8, 0x005c3824, - 0x08001021, - 0xafc7800e, + 0x0800112b, + 0xafc7801a, 0x23bdfff0, 0xafbf0000, - 0x23c18026, + 0x23c18006, 0xafa10004, 0xafa00008, 0x2002ffff, - 0x0c000fe8, + 0x0c0010f2, 0xafa2000c, 0x8fa20000, 0x23bd0010, @@ -3161,7 +3427,7 @@ ulong bootcode[]={ 0x8fa1001c, 0x2002ffff, 0xafa10008, - 0x0c000fe8, + 0x0c0010f2, 0xafa2000c, 0x8fa20000, 0x23bd0014, @@ -3181,7 +3447,7 @@ ulong bootcode[]={ 0x8fa20028, 0x2003000a, 0xafa20010, - 0x0c000f53, + 0x0c00105d, 0xafa30014, 0x8fa20000, 0x00000027, @@ -3217,7 +3483,7 @@ ulong bootcode[]={ 0x8fa30028, 0x20020008, 0xafa30010, - 0x0c000f53, + 0x0c00105d, 0xafa20014, 0x8fa20000, 0x00000027, @@ -3234,7 +3500,7 @@ ulong bootcode[]={ 0x00000027, 0xafa20008, 0x8fa1001c, - 0x0c000fe8, + 0x0c0010f2, 0xafa1000c, 0x8fa20000, 0x23bd0010, @@ -3258,7 +3524,7 @@ ulong bootcode[]={ 0x8fa30028, 0x20020010, 0xafa30010, - 0x0c000f53, + 0x0c00105d, 0xafa20014, 0x8fa20000, 0x00000027, @@ -3266,7 +3532,7 @@ ulong bootcode[]={ 0x23bd0018, 0x23bdfffc, 0x8fc48112, - 0x8fc28012, + 0x8fc2800e, 0x00000027, 0x0082182b, 0x10600005, @@ -3314,10 +3580,10 @@ ulong bootcode[]={ 0x23a1002c, 0xe7a10004, 0xe7a00008, - 0x0c0012d4, + 0x0c0013de, 0xafa1000c, - 0xc7c18032, - 0xc7c08036, + 0xc7c18056, + 0xc7c0805a, 0xc7a2002c, 0x00000027, 0x468010a1, @@ -3329,7 +3595,7 @@ ulong bootcode[]={ 0x00012843, 0xafa50028, 0x00050823, - 0x0c0012aa, + 0x0c0013b4, 0xafa10004, 0xc7a30094, 0xc7a20098, @@ -3341,7 +3607,7 @@ ulong bootcode[]={ 0x8fa2002c, 0x00000027, 0x00220823, - 0x0c0012aa, + 0x0c0013b4, 0xafa10004, 0x8fad00a8, 0x00007025, @@ -3364,7 +3630,7 @@ ulong bootcode[]={ 0x8fa2002c, 0x00000027, 0x00220823, - 0x0c0012aa, + 0x0c0013b4, 0xafa10004, 0x8fad00a8, 0x8faa00a0, @@ -3373,10 +3639,10 @@ ulong bootcode[]={ 0xc7a20034, 0x23a80040, 0x46201102, - 0x08001119, + 0x08001223, 0x00007025, - 0xc7c1801e, - 0xc7c08022, + 0xc7c18046, + 0xc7c0804a, 0x00000027, 0x4624003e, 0x00000027, @@ -3390,7 +3656,7 @@ ulong bootcode[]={ 0x8fa2002c, 0x00000027, 0x00220823, - 0x0c0012aa, + 0x0c0013b4, 0xafa10004, 0x8fad00a8, 0x8faa00a0, @@ -3399,7 +3665,7 @@ ulong bootcode[]={ 0xc7a20034, 0x23a80040, 0x46201102, - 0x08001130, + 0x0800123a, 0x00007025, 0x05410002, 0x00000027, @@ -3434,7 +3700,7 @@ ulong bootcode[]={ 0x200affff, 0xafaa00a0, 0x200d0065, - 0x080010e6, + 0x080011f0, 0xafad00a8, 0x000e3825, 0x00e5182a, @@ -3457,8 +3723,8 @@ ulong bootcode[]={ 0x46202101, 0x24c30030, 0xa0230001, - 0xc7c1801e, - 0xc7c08022, + 0xc7c18046, + 0xc7c0804a, 0x24e70001, 0x00e5182a, 0x1460ffea, @@ -3483,7 +3749,7 @@ ulong bootcode[]={ 0x24c60001, 0x2463fff6, 0xa0230001, - 0x0800118a, + 0x08001294, 0x24a5ffff, 0x10c00007, 0x200b0001, @@ -3551,7 +3817,7 @@ ulong bootcode[]={ 0x20020030, 0xa0220000, 0x24c6ffff, - 0x080011d1, + 0x080012db, 0x24a50001, 0x18e00013, 0x00000027, @@ -3571,7 +3837,7 @@ ulong bootcode[]={ 0x256b0001, 0xa0220000, 0x24e7ffff, - 0x080011e2, + 0x080012ec, 0x24a50001, 0x20010067, 0x11a10046, @@ -3591,7 +3857,7 @@ ulong bootcode[]={ 0x8fa1009c, 0x2002ffff, 0xafa10008, - 0x0c000fe8, + 0x0c0010f2, 0xafa2000c, 0x8fa20000, 0x23bd0090, @@ -3643,7 +3909,7 @@ ulong bootcode[]={ 0x00000810, 0x24210030, 0xa0410000, - 0x08001202, + 0x0800130c, 0x24a50001, 0x24a6ffff, 0x04c00006, @@ -3663,11 +3929,11 @@ ulong bootcode[]={ 0x00000027, 0x10e6ffad, 0x00062825, - 0x080011fc, + 0x08001306, 0x24a50001, - 0x08001247, + 0x08001351, 0x24e7ffff, - 0x0800123f, + 0x08001349, 0x24c6ffff, 0x8fa1002c, 0x2002ffff, @@ -3677,9 +3943,9 @@ ulong bootcode[]={ 0x000e3025, 0x8fa1002c, 0x200d0068, - 0x080011be, + 0x080012c8, 0x01416023, - 0x08001152, + 0x0800125c, 0x254affff, 0x23bdffe4, 0xafbf0000, @@ -3699,7 +3965,7 @@ ulong bootcode[]={ 0x8fa2002c, 0x20030065, 0xafa20014, - 0x0c0010cf, + 0x0c0011d9, 0xafa30018, 0x8fa20000, 0x00000027, @@ -3723,7 +3989,7 @@ ulong bootcode[]={ 0x8fa2002c, 0x20030066, 0xafa20014, - 0x0c0010cf, + 0x0c0011d9, 0xafa30018, 0x8fa20000, 0x00000027, @@ -3747,7 +4013,7 @@ ulong bootcode[]={ 0x8fa2002c, 0x20030067, 0xafa20014, - 0x0c0010cf, + 0x0c0011d9, 0xafa30018, 0x8fa20000, 0x00000027, @@ -3760,7 +4026,7 @@ ulong bootcode[]={ 0x04610008, 0x00000027, 0x00030823, - 0x0c0012aa, + 0x0c0013b4, 0xafa10004, 0x8fa20000, 0x23bd0014, @@ -3782,12 +4048,12 @@ ulong bootcode[]={ 0x00032043, 0xafa40010, 0x00641023, - 0x0c0012aa, + 0x0c0013b4, 0xafa20004, 0xe7a10008, 0xe7a0000c, 0x8fa10010, - 0x0c0012aa, + 0x0c0013b4, 0xafa10004, 0xc7a30008, 0xc7a2000c, @@ -3865,14 +4131,14 @@ ulong bootcode[]={ 0x45010008, 0x00000027, 0x2001ffff, - 0x0c001407, + 0x0c001511, 0xafa10004, 0x8fa20000, 0x00000027, 0x00400008, 0x23bd0010, 0x20020001, - 0x0c001407, + 0x0c001511, 0xafa20004, 0x8fa20000, 0x00000027, @@ -3919,7 +4185,7 @@ ulong bootcode[]={ 0x0024182a, 0x14600013, 0x00000027, - 0x8fc28116, + 0x8fc2811a, 0x8fa30008, 0x00821007, 0x201cffff, @@ -3941,7 +4207,7 @@ ulong bootcode[]={ 0x0044182a, 0x1460fff3, 0x00000027, - 0x8fc2811a, + 0x8fc2811e, 0x2481ffea, 0x00220807, 0x201cffff, @@ -3949,7 +4215,7 @@ ulong bootcode[]={ 0x8fa3000c, 0x00000027, 0x00610824, - 0x08001358, + 0x08001462, 0xafa1000c, 0x23bdfffc, 0x8fa30010, @@ -4061,7 +4327,7 @@ ulong bootcode[]={ 0x00000027, 0xa0c8ffff, 0x24c6ffff, - 0x080013d7, + 0x080014e1, 0x24e7ffff, 0x23bdfff4, 0x3c017ff0, @@ -4090,7 +4356,7 @@ ulong bootcode[]={ 0x00000825, 0xe7a50004, 0xe7a40008, - 0x0c001418, + 0x0c001522, 0xafa0000c, 0x14200005, 0x00000027, @@ -4162,16 +4428,25 @@ ulong bootcode[]={ 0x00000825, 0x00000000, 0x00000000, + 0x2a2a2a00, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x62616420, + 0x74797065, + 0x3a202564, + 0x0a006261, + 0x64207479, + 0x70653a20, + 0x25640a00, + 0x00000000, 0x00000000, 0x00000000, 0x40240000, 0x00000000, - 0x2a2a2a00, - 0x00000000, + 0x0000000d, 0x00000000, 0x3fd34413, 0x55475a32, @@ -4182,19 +4457,18 @@ ulong bootcode[]={ 0x61747573, 0x00000000, 0x00000000, - 0x00006194, - 0x0000619e, - 0x000061a9, - 0x000061ae, - 0x000061c3, - 0x000061ca, - 0x000061df, - 0x000061e5, - 0x000061fa, - 0x00006202, - 0x00006217, - 0x0000621b, - 0x00000000, + 0x00006124, + 0x0000612e, + 0x00006139, + 0x0000613e, + 0x00006153, + 0x0000615a, + 0x0000616f, + 0x00006175, + 0x0000618a, + 0x00006192, + 0x000061a7, + 0x000061ab, 0x00000000, 0x00000000, 0x00000000, @@ -4210,14 +4484,6 @@ ulong bootcode[]={ 0x00000000, 0x00000000, 0x00000000, - 0x0000000d, - 0x62616420, - 0x74797065, - 0x3a202564, - 0x0a006261, - 0x64207479, - 0x70653a20, - 0x25640a00, 0x00000000, 0x00000001, 0x0000000a, @@ -4230,37 +4496,9 @@ ulong bootcode[]={ 0x05f5e100, 0x3b9aca00, 0x00000000, + 0x803ff000, 0x001fffff, 0x7fffffff, - 0x00004108, - 0x00004138, - 0x00004180, - 0x000041d0, - 0x000041e0, - 0x00004210, - 0x00004260, - 0x000042a4, - 0x000042b4, - 0x00004304, - 0x00004988, - 0x000049e8, - 0x00004a48, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, 0x00000000, 0x62697462, 0x6f6f7465, @@ -4311,19 +4549,15 @@ ulong bootcode[]={ 0x6f6f7465, 0x73002f6d, 0x6970732f, - 0x39007365, - 0x72766572, - 0x00626f6f, - 0x743a2025, - 0x7320756e, - 0x6b6e6f77, - 0x6e0a0043, - 0x6f6e6e65, - 0x6374696e, - 0x6720746f, - 0x20736572, - 0x76657220, - 0x25730a00, + 0x3900626f, + 0x6f746669, + 0x6c650073, + 0x65727665, + 0x7200626f, + 0x6f743a20, + 0x25732075, + 0x6e6b6e6f, + 0x776e0a00, 0x62697463, 0x6f6e6e65, 0x63740023, @@ -4368,8 +4602,6 @@ ulong bootcode[]={ 0x2f63746c, 0x006e6f70, 0x2e2e2e00, - 0x6e203d20, - 0x25640a00, 0x77726974, 0x65206e6f, 0x70007265, @@ -4410,36 +4642,32 @@ ulong bootcode[]={ 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, - 0x002f6d69, - 0x70732f69, - 0x6e697400, + 0x6f72006d, + 0x6f756e74, + 0x2e2e2e00, + 0x2f002f00, + 0x62696e64, + 0x002f0000, + 0x6d6f756e, + 0x74002f6d, + 0x6970732f, + 0x636f6e66, + 0x2f257300, + 0x25732e2e, + 0x2e00636f, + 0x6e666669, + 0x6c650072, + 0x65616463, + 0x6f6e6600, + 0x25732e2e, + 0x2e00626f, + 0x6f746669, + 0x6c650063, + 0x6f756c64, + 0x6e277420, + 0x72656164, + 0x206b6572, + 0x6e656c00, 0x626f6f74, 0x3a202573, 0x3a202573, @@ -4449,18 +4677,80 @@ ulong bootcode[]={ 0x25730a00, 0x3f006865, 0x6c700025, - 0x730a0025, - 0x735b2573, - 0x5d3a2000, + 0x730a0073, + 0x65656b69, + 0x6e672062, + 0x6f6f7466, + 0x696c6500, + 0x7365656b, + 0x696e6720, + 0x23622f6d, + 0x656d0072, + 0x65616469, + 0x6e672062, + 0x6f6f7466, + 0x696c6500, + 0x77726974, + 0x696e6720, + 0x23622f6d, + 0x656d0023, + 0x622f6d65, + 0x6d006361, + 0x6e277420, + 0x6f70656e, + 0x2023622f, + 0x6d656d00, + 0x23622f6d, + 0x656d0063, + 0x616e2774, + 0x206f7065, + 0x6e202362, + 0x2f6d656d, + 0x0063616e, + 0x27742072, + 0x65616420, + 0x626f6f74, + 0x2066696c, + 0x65000a25, + 0x64006361, + 0x6e277420, + 0x72656164, + 0x20626f6f, + 0x74206669, + 0x6c65002b, + 0x25640063, + 0x616e2774, + 0x20726561, + 0x6420626f, + 0x6f742066, + 0x696c6500, + 0x2b256400, + 0x23622f62, + 0x6f6f7400, 0x63616e27, - 0x74207265, - 0x61642023, - 0x632f636f, - 0x6e733b20, - 0x706c6561, - 0x73652072, - 0x65626f6f, - 0x74000000, + 0x74206f70, + 0x656e2023, + 0x622f626f, + 0x6f740020, + 0x656e7472, + 0x793a2030, + 0x78257578, + 0x0a006361, + 0x6e277420, + 0x73746172, + 0x74206b65, + 0x726e656c, + 0x0025735b, + 0x25735d3a, + 0x20006361, + 0x6e277420, + 0x72656164, + 0x2023632f, + 0x636f6e73, + 0x3b20706c, + 0x65617365, + 0x20726562, + 0x6f6f7400, 0x00000000, 0x00000000, 0x00000000, @@ -4494,9 +4784,39 @@ ulong bootcode[]={ 0x00070000, 0x08000000, 0x00000000, + 0x00004530, + 0x00004560, + 0x000045a8, + 0x000045f8, + 0x00004608, + 0x00004638, + 0x00004688, + 0x000046cc, + 0x000046dc, + 0x0000472c, + 0x00004db0, + 0x00004e10, + 0x00004e70, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, 0x00000000, - 0x0004640, + 0x0004b40, 0x, - 0x0004640, + 0x0004b40, 0x, }; diff --git a/power/conf.h b/power/conf.h index 72864628be0891b751d47b5bd826f49de39a099e..ac406d65cba6a6114377d5d4f1534a29711a522e 100644 --- a/power/conf.h +++ b/power/conf.h @@ -1,18 +1,25 @@ - conf.nmach = 4 ; - conf.nmod = 2000 ; - conf.nalarm = 10000 ; - conf.norig = 500 ; - conf.nchan = 500 ; - conf.nenv = 400 ; - conf.nenvchar = 20000 ; - conf.npgenv = 400 ; - conf.nmtab = 100 ; - conf.nmount = 500 ; - conf.nmntdev = 30 ; - conf.nmntbuf = 60 ; - conf.nmnthdr = 60 ; - conf.nstream = 512 ; - conf.nsrv = 32 ; - conf.nproc = 193 ; - conf.npgrp = 100 ; +Conftab conftab[] = { + {"nmach", &conf.nmach }, + {"nproc", &conf.nproc }, + {"npgrp", &conf.npgrp }, + {"npage", &conf.npage }, + {"norig", &conf.norig }, + {"npte", &conf.npte }, + {"nmod", &conf.nmod }, + {"nalarm", &conf.nalarm }, + {"nchan", &conf.nchan }, + {"nenv", &conf.nenv }, + {"nenvchar", &conf.nenvchar }, + {"npgenv", &conf.npgenv }, + {"nmtab", &conf.nmtab }, + {"nmount", &conf.nmount }, + {"nmntdev", &conf.nmntdev }, + {"nmntbuf", &conf.nmntbuf }, + {"nmnthdr", &conf.nmnthdr }, + {"nstream", &conf.nstream }, + {"nqueue", &conf.nqueue }, + {"nblock", &conf.nblock }, + {"nsrv", &conf.nsrv }, + { 0, 0 }, +}; diff --git a/power/dat.h b/power/dat.h index 85ec85b8b7bbecc1a63ed498bbdd723dcd2ac784..61b6809a0f143dd3fd9e1139679c0c19c1a6a38c 100644 --- a/power/dat.h +++ b/power/dat.h @@ -115,27 +115,27 @@ struct FPsave struct Conf { - int nmach; /* processors */ - int nproc; /* processes */ - int npgrp; /* process groups */ + ulong nmach; /* processors */ + ulong nproc; /* processes */ + ulong npgrp; /* process groups */ ulong npage; /* total physical pages of memory */ ulong norig; /* origins */ ulong npte; /* contiguous page table entries */ ulong nmod; /* single (modifying) page table entries */ - int nalarm; /* alarms */ - int nchan; /* channels */ - int nenv; /* distinct environment values */ - int nenvchar; /* environment text storage */ - int npgenv; /* environment files per process group */ - int nmtab; /* mounted-upon channels per process group */ - int nmount; /* mounts */ - int nmntdev; /* mounted devices (devmnt.c) */ - int nmntbuf; /* buffers for devmnt.c messages */ - int nmnthdr; /* headers for devmnt.c messages */ - int nstream; /* streams */ - int nqueue; /* stream queues */ - int nblock; /* stream blocks */ - int nsrv; /* public servers (devsrv.c) */ + ulong nalarm; /* alarms */ + ulong nchan; /* channels */ + ulong nenv; /* distinct environment values */ + ulong nenvchar; /* environment text storage */ + ulong npgenv; /* environment files per process group */ + ulong nmtab; /* mounted-upon channels per process group */ + ulong nmount; /* mounts */ + ulong nmntdev; /* mounted devices (devmnt.c) */ + ulong nmntbuf; /* buffers for devmnt.c messages */ + ulong nmnthdr; /* headers for devmnt.c messages */ + ulong nstream; /* streams */ + ulong nqueue; /* stream queues */ + ulong nblock; /* stream blocks */ + ulong nsrv; /* public servers (devsrv.c) */ }; struct Dev diff --git a/power/fns.h b/power/fns.h index b853bcc57f04848627dd014148d9107e6ab150d8..dd0f8de4a7fd03db6022ae832a162d05bcbbc020 100644 --- a/power/fns.h +++ b/power/fns.h @@ -17,7 +17,11 @@ void closemount(Mount*); void closepgrp(Pgrp*); long clrfpintr(void); void compactpte(Orig*, ulong); +ulong confeval(char*); +void confprint(void); void confinit(void); +void confread(void); +void confset(char*); int consactive(void); int conschar(void); void consoff(void); @@ -68,6 +72,7 @@ void gotolabel(Label*); void gotopc(ulong); void growpte(Orig*, ulong); void *ialloc(ulong, int); +void icflush(void *, int); int incref(Ref*); void insert(List**, List*, List*); void intr(ulong); diff --git a/power/l.s b/power/l.s index 71c5e76cd50afcfa3e964c967da0f9bdda3ae03c..b04f6835a0aa8f4ce9375015d53522fd7385dd8c 100644 --- a/power/l.s +++ b/power/l.s @@ -147,46 +147,16 @@ TEXT gotolabel(SB), $0 MOVW 4(R2), R29 RET -TEXT gotopc(SB), $-4 +TEXT gotopc(SB), $8 MOVW 0(FP), R7 /* save arguments for later */ MOVW _argc(SB), R4 MOVW _argv(SB), R5 - - MOVW $WBFLUSH, R1 /* flush write buffer */ - MOVW 0(R1), R1 - NOOP - - MOVW $KSEG1, R3 /* change to uncached address space */ - MOVW $gotopc0(SB), R2 - OR R3, R2 - JMP (R2) -TEXT gotopc0(SB), $-4 - - MOVW $(SWC|ISC), R1 /* swap and isolate cache, stay splhi */ - MOVW R1, M(STATUS) - NOOP - - MOVW $gotopc1(SB), R2 /* change back to cached address space */ - JMP (R2) -TEXT gotopc1(SB), $-4 - - MOVW $KSEG0, R6 /* init loop variables */ - MOVW $(64*1024), R8 -_gotopc1: - MOVBU R0, 0x00(R6) - SUB $0x4, R8 - ADD $0x4, R6 - BGTZ R8, _gotopc1 - - MOVW $gotopc2(SB), R2 /* change to uncached address space */ - OR R3, R2 - JMP (R2) -TEXT gotopc2(SB), $-4 - - MOVW R0, M(STATUS) /* put caches back, still splhi */ - NOOP - + MOVW _env(SB), R6 + MOVW R0, 4(SP) + MOVW $(64*1024), R1 + MOVW R1, 8(SP) + JAL icflush(SB) JMP (R7) TEXT puttlb(SB), $4 @@ -502,14 +472,16 @@ TEXT restfpregs(SB), $0 MOVW R3, M(STATUS) RET - +/* + * we avoid using R4, R5, R6, and R7 so gotopc can call us without saving them + */ TEXT icflush(SB), $-4 /* icflush(physaddr, nbytes) */ - MOVW M(STATUS), R6 - MOVW 0(FP), R4 - MOVW 4(FP), R5 + MOVW M(STATUS), R10 + MOVW 0(FP), R8 + MOVW 4(FP), R9 MOVW $KSEG0, R3 - OR R3, R4 + OR R3, R8 MOVW $0, M(STATUS) MOVW $WBFLUSH, R1 /* wbflush */ MOVW 0(R1), R1 @@ -529,25 +501,25 @@ TEXT icflush0(SB), $-4 TEXT icflush1(SB), $-4 _icflush1: - MOVBU R0, 0x00(R4) - MOVBU R0, 0x04(R4) - MOVBU R0, 0x08(R4) - MOVBU R0, 0x0C(R4) - MOVBU R0, 0x10(R4) - MOVBU R0, 0x14(R4) - MOVBU R0, 0x18(R4) - MOVBU R0, 0x1C(R4) - MOVBU R0, 0x20(R4) - MOVBU R0, 0x24(R4) - MOVBU R0, 0x28(R4) - MOVBU R0, 0x2C(R4) - MOVBU R0, 0x30(R4) - MOVBU R0, 0x34(R4) - MOVBU R0, 0x38(R4) - MOVBU R0, 0x3C(R4) - SUB $0x40, R5 - ADD $0x40, R4 - BGTZ R5, _icflush1 + MOVBU R0, 0x00(R8) + MOVBU R0, 0x04(R8) + MOVBU R0, 0x08(R8) + MOVBU R0, 0x0C(R8) + MOVBU R0, 0x10(R8) + MOVBU R0, 0x14(R8) + MOVBU R0, 0x18(R8) + MOVBU R0, 0x1C(R8) + MOVBU R0, 0x20(R8) + MOVBU R0, 0x24(R8) + MOVBU R0, 0x28(R8) + MOVBU R0, 0x2C(R8) + MOVBU R0, 0x30(R8) + MOVBU R0, 0x34(R8) + MOVBU R0, 0x38(R8) + MOVBU R0, 0x3C(R8) + SUB $0x40, R9 + ADD $0x40, R8 + BGTZ R9, _icflush1 MOVW $icflush2(SB), R2 /* make sure PC is in uncached address space */ OR R3, R2 JMP (R2) @@ -556,7 +528,7 @@ TEXT icflush2(SB), $-4 MOVW $0, M(STATUS) /* swap back caches, de-isolate them, and stay splhi */ NOOP /* +++ */ - MOVW R6, M(STATUS) + MOVW R10, M(STATUS) RET TEXT dcflush(SB), $-4 /* dcflush(physaddr, nbytes) */ diff --git a/power/main.c b/power/main.c index 670bb3ed390ae4012f2993a7a2c0519b726de82c..2e40d646120c5d2af870e906e2ecd90426dd93d4 100644 --- a/power/main.c +++ b/power/main.c @@ -12,19 +12,39 @@ */ int _argc; char **_argv; char **_env; +/* + * arguments passed to initcode + */ char argbuf[512]; int argsize; +/* + * environment passed to any kernel started by this kernel + */ +char envbuf[64]; +char *env[2]; + +/* + * configuration file read by boot program + */ +char confbuf[4*1024]; + +/* + * system name + */ +char sysname[64]; + void main(void) { int i; + icflush(0, 64*1024); active.exiting = 0; active.machs = 1; - arginit(); machinit(); confinit(); + arginit(); lockinit(); printinit(); tlbinit(); @@ -43,49 +63,6 @@ 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, n; - int nbytes; - int ssize; - char *p; - char **argv; - char *charp; - - /* - * 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)); - - /* - * 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 machinit(void) { @@ -413,18 +390,152 @@ delete(List **head, List *where, List *old) where->next = old->next; } +typedef struct Conftab { + char *sym; + ulong *x; +} Conftab; + +#include "conf.h" + Conf conf; +ulong +confeval(char *exp) +{ + char *op; + Conftab *ct; + + /* crunch leading white */ + while(*exp==' ' || *exp=='\t') + exp++; + + op = strchr(exp, '+'); + if(op != 0){ + *op++ = 0; + return confeval(exp) + confeval(op); + } + + op = strchr(exp, '*'); + if(op != 0){ + *op++ = 0; + return confeval(exp) * confeval(op); + } + + if(*exp >= '0' && *exp <= '9') + return strtoul(exp, 0, 0); + + /* crunch trailing white */ + op = strchr(exp, ' '); + if(op) + *op = 0; + op = strchr(exp, '\t'); + if(op) + *op = 0; + + /* lookup in symbol table */ + for(ct = conftab; ct->sym; ct++) + if(strcmp(exp, ct->sym) == 0) + return *(ct->x); + + return 0; +} + +/* + * each line of the configuration is of the form `param = expression'. + */ void -confinit(void) +confset(char *sym) { - long x, i, j, *l, *e; + char *val, *p; + Conftab *ct; + ulong x; + + /* + * parse line + */ -#include "conf.h" + /* comment */ + if(p = strchr(sym, '#')) + *p = 0; - if(conf.nmach > MAXMACH) - panic("confinit"); + /* skip white */ + for(p = sym; *p==' ' || *p=='\t'; p++) + ; + sym = p; + + /* skip sym */ + for(; *p && *p!=' ' && *p!='\t' && *p!='='; p++) + ; + if(*p) + *p++ = 0; + + /* skip white */ + for(; *p==' ' || *p=='\t' || *p=='='; p++) + ; + val = p; + /* + * lookup value + */ + for(ct = conftab; ct->sym; ct++) + if(strcmp(sym, ct->sym) == 0){ + *(ct->x) = confeval(val); + return; + } + + if(strcmp(sym, "sysname")==0){ + p = strchr(val, ' '); + if(p) + *p = 0; + strcpy(sysname, val); + } +} + +/* + * read the ascii configuration left by the boot kernel + */ +void +confread(void) +{ + char *line; + char *end; + + /* + * process configuration file + */ + line = confbuf; + while(end = strchr(line, '\n')){ + *end = 0; + confset(line); + line = end+1; + } +} + +void +confprint(void) +{ + Conftab *ct; + + /* + * lookup value + */ + for(ct = conftab; ct->sym; ct++) + print("%s == %d\n", ct->sym, *ct->x); +} + +void +confinit(void) +{ + long x, i, j, *l; + + /* + * copy configuration down from high memory + */ + strcpy(confbuf, (char *)(0x80000000 + 4*1024*1024 - 4*1024)); + + /* + * size memory + */ x = 0x12345678; for(i=4; i<128; i+=4){ l = (long*)(KSEG1|(i*1024L*1024L)); @@ -436,14 +547,96 @@ confinit(void) x += 0x3141526; } conf.npage = i*1024/4; + + /* + * set minimal default values + */ + conf.nmach = 1; + conf.nmod = 2000; + conf.nalarm = 1000; + conf.norig = 9; + conf.nchan = 64; + conf.nenv = 4; + conf.nenvchar = 1000; + conf.npgenv = 400; + conf.nmtab = 4; + conf.nmount = 4; + conf.nmntdev = 4; + conf.nmntbuf = 4; + conf.nmnthdr = 4; + conf.nstream = 4; + conf.nsrv = 0; + conf.nproc = 4; + conf.npgrp = 4; conf.npte = 4 * conf.npage; conf.nqueue = 5 * conf.nstream; conf.nblock = 16 * conf.nstream; + confread(); + + if(conf.nmach > MAXMACH) + panic("confinit"); + +} + +/* + * copy arguments passed by the boot kernel (or ROM) into a temporary buffer. + * we do this because the arguments are in memory that may be allocated + * to processes or kernel buffers. + */ +#define SYSENV "netaddr=" +void +arginit(void) +{ + int i, n; + int nbytes; + int ssize; + char *p; + char **argv; + char *charp; + + /* + * get the system name from the environment + */ + if(*sysname == 0){ + for(argv = _env; *argv; argv++){ + if(strncmp(*argv, SYSENV, sizeof(SYSENV)-1)==0){ + strcpy(sysname, (*argv) + sizeof(SYSENV)-1); + break; + } + } + } + strcpy(envbuf, SYSENV); + strcat(envbuf, sysname); + env[0] = envbuf; + env[1] = 0; + + /* + * trim arguments to make them fit in the buffer (argv[0] is sysname) + */ + nbytes = 0; + _argv[0] = sysname; + for(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)); + /* - * zero memory from bss up + * copy arguments into the buffer */ - e = (long *)(i*1024*1024); - for(l = &end; l < e; l++) - *l = 0; + 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; }