## diffname carrera/main.c 1993/0903 ## diff -e /dev/null /n/fornaxdump/1993/0903/sys/src/brazil/carrera/main.c 0a #include "u.h" #include "../port/lib.h" #include "mem.h" #include "dat.h" #include "fns.h" #include "io.h" #include "init.h" /* * args passed by boot process */ int _argc; char **_argv; char **_env; /* * arguments passed to initcode and /boot */ char argbuf[128]; /* * environment passed to boot -- sysname, consname, diskid */ char consname[NAMELEN]; char bootdisk[NAMELEN]; char screenldepth[NAMELEN]; /* * software tlb simulation */ Softtlb stlb[MAXMACH][STLBSIZE]; Conf conf; FPsave initfp; void main(void) { *(uchar*)(Uart0) = '*'; tlbinit(); /* Very early to establish IO mappings */ ioinit(); arginit(); confinit(); savefpregs(&initfp); machinit(); active.exiting = 0; active.machs = 1; kmapinit(); xinit(); printinit(); NS16552setup(Uart0, UartFREQ); NS16552special(0, 9600, &kbdq, &printq, kbdcr2nl); vecinit(); iprint("\n\nBrazil\n"); pageinit(); procinit0(); initseg(); chandevreset(); rootfiles(); swapinit(); userinit(); schedinit(); } /* * 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. * * also grab any environment variables that might be useful */ struct { char *name; char *val; }bootenv[] = { {"netaddr=", sysname}, {"console=", consname}, {"bootdisk=", bootdisk}, {"ldepth=", screenldepth}, }; char *sp; char * pusharg(char *p) { int n; n = strlen(p)+1; sp -= n; memmove(sp, p, n); return sp; } void arginit(void) { int i, n; char **av; /* * get boot env variables */ if(*sysname == 0) for(av = _env; *av; av++) for(i=0; i < sizeof bootenv/sizeof bootenv[0]; i++){ n = strlen(bootenv[i].name); if(strncmp(*av, bootenv[i].name, n) == 0){ strncpy(bootenv[i].val, (*av)+n, NAMELEN); bootenv[i].val[NAMELEN-1] = '\0'; break; } } /* * pack args into buffer */ av = (char**)argbuf; sp = argbuf + sizeof(argbuf); for(i = 0; i < _argc; i++){ if(strchr(_argv[i], '=')) break; av[i] = pusharg(_argv[i]); } av[i] = 0; } /* * initialize a processor's mach structure. each processor does this * for itself. */ void machinit(void) { int n; /* Ensure CU1 is off */ clrfpintr(); /* scrub cache */ cleancache(); n = m->machno; m->stb = &stlb[n][0]; clockinit(); } /* * Map IO address space in wired down TLB entry 1 */ void ioinit(void) { ulong phys; phys = PPN(Devicephys)|PTEGLOBL|PTEVALID|PTEWRITE|PTEUNCACHED; puttlbx(1, Devicevirt, phys, PTEGLOBL, PGSZ256K); } /* * setup MIPS trap vectors */ void vecinit(void) { memmove((ulong*)UTLBMISS, (ulong*)vector0, 0x100); memmove((ulong*)CACHETRAP, (ulong*)vector100, 0x80); memmove((ulong*)EXCEPTION, (ulong*)vector180, 0x80); icflush((ulong*)UTLBMISS, 32*1024); } void init0(void) { char buf[2*NAMELEN]; spllo(); /* * These are o.k. because rootinit is null. * Then early kproc's will have a root and dot. */ up->slash = namec("#/", Atodir, 0, 0); up->dot = clone(up->slash, 0); iallocinit(); chandevinit(); if(!waserror()){ ksetenv("cputype", "mips"); sprint(buf, "sgi %s 4D", conffile); ksetenv("terminal", buf); ksetenv("sysname", sysname); poperror(); } kproc("alarm", alarmkproc, 0); touser((uchar*)(USTKTOP-sizeof(argbuf))); } FPsave initfp; void userinit(void) { Proc *p; KMap *k; Page *pg; char **av; Segment *s; p = newproc(); p->pgrp = newpgrp(); p->egrp = smalloc(sizeof(Egrp)); p->egrp->ref = 1; p->fgrp = smalloc(sizeof(Fgrp)); p->fgrp->ref = 1; p->procmode = 0640; strcpy(p->text, "*init*"); strcpy(p->user, eve); p->fpstate = FPinit; p->fpsave.fpstatus = initfp.fpstatus; /* * Kernel Stack */ p->sched.pc = (ulong)init0; p->sched.sp = (ulong)p->kstack+KSTACK-(1+MAXSYSARG)*BY2WD; /* * User Stack, pass input arguments to boot process */ s = newseg(SG_STACK, USTKTOP-USTKSIZE, USTKSIZE/BY2PG); p->seg[SSEG] = s; pg = newpage(1, 0, USTKTOP-BY2PG); segpage(s, pg); k = kmap(pg); for(av = (char**)argbuf; *av; av++) *av += (USTKTOP - sizeof(argbuf)) - (ulong)argbuf; memmove((uchar*)VA(k) + BY2PG - sizeof(argbuf), argbuf, sizeof argbuf); kunmap(k); /* Text */ s = newseg(SG_TEXT, UTZERO, 1); s->flushme++; p->seg[TSEG] = s; pg = newpage(1, 0, UTZERO); memset(pg->cachectl, PG_TXTFLUSH, sizeof(pg->cachectl)); segpage(s, pg); k = kmap(s->map[0]->pages[0]); memmove((ulong*)VA(k), initcode, sizeof initcode); kunmap(k); ready(p); } void exit(long type) { int timer; spllo(); print("cpu %d exiting %d\n", m->machno, type); timer = 0; while(active.machs || consactive()) { if(timer++ > 400) break; delay(10); } splhi(); for(;;) ; } void confinit(void) { ulong ktop, top; /* * divide memory twixt user pages and kernel. Since * the kernel can't use anything above .5G unmapped, * make sure all that memory goes to the user. */ ktop = PGROUND((ulong)end); ktop = PADDR(ktop); top = (16*1024*1024)/BY2PG; conf.base0 = 0; conf.npage0 = top; conf.npage = conf.npage0; conf.npage0 -= ktop/BY2PG; conf.base0 += ktop; conf.npage1 = 0; conf.base1 = 0; conf.upages = (conf.npage*90)/100; if(top - conf.upages > (256*1024*1024)/BY2PG) conf.upages = top - (256*1024*1024)/BY2PG; conf.nmach = 1; /* set up other configuration parameters */ conf.nproc = 100; conf.nswap = 262144; conf.nimage = 200; conf.ipif = 8; conf.ip = 64; conf.arp = 32; conf.frag = 32; conf.copymode = 0; /* copy on reference */ } /* * for the sake of devcons */ void lights(int v) { USED(v); } void buzz(int f, int d) { USED(f); USED(d); } int mouseputc(IOQ *q, int c) { USED(q); USED(c); return 0; } . ## diffname carrera/main.c 1993/0904 ## diff -e /n/fornaxdump/1993/0903/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/0904/sys/src/brazil/carrera/main.c 307c conf.nswap = conf.npage*3; . 299c conf.upages = (conf.npage*70)/100; . 271d 266,269c while(consactive()) . 169c icflush((ulong*)UTLBMISS, 8*1024); . 157c /* * Map Interrupt control */ phys = PPN(Intctlphys)|PTEGLOBL|PTEVALID|PTEWRITE|PTEUNCACHED; puttlbx(2, Intctlvirt, phys, PTEGLOBL, PGSZ4K); *(ushort*)Intenareg = 0xffff; . 155a puttlbx(1, Devicevirt, phys, PTEGLOBL, PGSZ64K); . 154a /* * Map devices */ . 143a . 75c }bootenv[] = { . 63d 50a . 49c NS16552setup(Uart1, UartFREQ); . 37d ## diffname carrera/main.c 1993/0905 ## diff -e /n/fornaxdump/1993/0904/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/0905/sys/src/brazil/carrera/main.c 323c conf.copymode = 0; /* copy on write */ . 309,310d 291,295d 278c print("cpu %d exiting\n", m->machno); . 275c USED(type); . 172a * All DMA and ether IO buffers must reside in the first 16M bytes of * memory to be covered by the translation registers */ void iomapinit(void) { int i; Tte *t; t = xspanalloc(Ntranslation*sizeof(Tte), BY2PG, 0); for(i = 0; i < Ntranslation; i++) t[i].lo = i<speed = 50; . 60a enab(); spllo(); for(;;) ; . 48,51c serialinit(); . 46a iomapinit(); . 43,44d ## diffname carrera/main.c 1993/0906 ## diff -e /n/fornaxdump/1993/0905/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/0906/sys/src/brazil/carrera/main.c 382,390d 362a conf.monitor = 1; . 193c for(i = 0; i < 8; i++) tbuf[i] = ((uchar*)(NvramRO+Enetoffset))[i]; print("ether:"); for(i = 0; i < 6; i++) { ea[i] = tbuf[7-i]; print("%2.2ux", ea[i]); } print("\n"); . 190,191c int i; uchar tbuf[8]; . 186a /* * Pull the ethernet address out of NVRAM */ . 180,181c intphys = PPN(Intctlphys)|PTEGLOBL|PTEVALID|PTEWRITE|PTEUNCACHED; puttlbx(2, Intctlvirt, intphys, PTEGLOBL, PGSZ4K); . 176a puttlbx(1, Devicevirt, devphys, isaphys, PGSZ64K); . 174,175c devphys = PPN(Devicephys)|PTEGLOBL|PTEVALID|PTEWRITE|PTEUNCACHED; isaphys = PPN(Eisaphys)|PTEGLOBL|PTEVALID|PTEWRITE|PTEUNCACHED; . 172c * Map devices and the Eisa control space . 169c ulong devphys, isaphys, intphys; . 57,60c screeninit(); . ## diffname carrera/main.c 1993/0907 ## diff -e /n/fornaxdump/1993/0906/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/0907/sys/src/brazil/carrera/main.c 382,386d 373c conf.monitor = 0; . 271,272d 181a puttlbx(2, Intctlvirt, intphys, isamphys, PGSZ1M); . 180c isamphys = PPN(Eisamphys)|PTEGLOBL|PTEVALID|PTEWRITE|PTEUNCACHED; . 177c * Map Interrupt control & Eisa memory . 166c ulong devphys, isaphys, intphys, isamphys; . 157a kbdinit(); . 57d 49a /*screeninit();*/ . ## diffname carrera/main.c 1993/0908 ## diff -e /n/fornaxdump/1993/0907/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/0908/sys/src/brazil/carrera/main.c 187a /* Look at the first 16M of Eisa memory */ iprint("write latch\n"); /* IO(uchar, EisaLatch) = 0; /**/ iprint("done\n"); . 181,182c intphys = IOPTE|PPN(Intctlphys); isamphys = IOPTE|PPN(Eisamphys); . 173,174c devphys = IOPTE|PPN(Devicephys); isaphys = IOPTE|PPN(Eisaphys); . 50c screeninit(); /**/ . ## diffname carrera/main.c 1993/0909 ## diff -e /n/fornaxdump/1993/0908/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/0909/sys/src/brazil/carrera/main.c 50c screeninit(); . ## diffname carrera/main.c 1993/0914 ## diff -e /n/fornaxdump/1993/0909/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/0914/sys/src/brazil/carrera/main.c 174c isaphys = /* IOPTE|PPN(Eisaphys) */ PTEGLOBL; . 50c /* screeninit(); */ . ## diffname carrera/main.c 1993/0915 ## diff -e /n/fornaxdump/1993/0914/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/0915/sys/src/brazil/carrera/main.c 182c isamphys = /* IOPTE|PPN(Eisamphys) */ PTEGLOBL; . 55d 53a links(); . ## diffname carrera/main.c 1993/0918 ## diff -e /n/fornaxdump/1993/0915/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/0918/sys/src/brazil/carrera/main.c 380c conf.monitor = 1; . 367c conf.upages = (conf.npage*50)/100; . 192d 190d 182d 174d 170a * If you want to segattach the eisa space these * mappings must be turned off to prevent duplication * of the tlb entries */ if(mapeisa) { isaphys = IOPTE|PPN(Eisaphys)|PTEGLOBL; isamphys = 0x04000000|IOPTE|PTEGLOBL; } else { isaphys = PTEGLOBL; isamphys = PTEGLOBL; } /* . 166c ioinit(int mapeisa) . 49,50c screeninit(); print("\n\nBrazil\n"); . 38c ioinit(1); . ## diffname carrera/main.c 1993/0930 ## diff -e /n/fornaxdump/1993/0918/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/0930/sys/src/brazil/carrera/main.c 280c sprint(buf, "%s R4400PC", conffile); . ## diffname carrera/main.c 1993/1005 ## diff -e /n/fornaxdump/1993/0930/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/1005/sys/src/brazil/carrera/main.c 280c sprint(buf, "carrera %s R4400PC", conffile); . ## diffname carrera/main.c 1993/1015 ## diff -e /n/fornaxdump/1993/1005/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/1015/sys/src/brazil/carrera/main.c 377c conf.upages = (conf.npage*70)/100; . 139a memset(m, 0, sizeof(Mach)); . 50c iprint("\n\nBrazil\n"); . ## diffname carrera/main.c 1993/1208 ## diff -e /n/fornaxdump/1993/1015/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/1208/sys/src/brazil/carrera/main.c 204a } void puttlbxx(int, ulong, ulong, ulong, int); void puttlbx(int a, ulong b, ulong c, ulong d, int e) { static int done[4]; if(((c|d)&PTEVALID) && a < 4){ if(done[a]++) puttlbx(a, b, c, d, e); } puttlbxx(a, b, c, d, e); . 200c /* Enable all device interrupts */ . ## diffname carrera/main.c 1993/1209 ## diff -e /n/fornaxdump/1993/1208/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/1209/sys/src/brazil/carrera/main.c 8a int junk[32]; . ## diffname carrera/main.c 1993/1210 ## diff -e /n/fornaxdump/1993/1209/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/1210/sys/src/brazil/carrera/main.c 420a } void rdbginit(void) { memmove((void*)0xA001C000, rdbgcode, rdbglen); . 209,220d 59a rdbginit(); . 35a extern uchar rdbgcode[]; extern ulong rdbglen; . 9,10d ## diffname carrera/main.c 1993/1214 ## diff -e /n/fornaxdump/1993/1210/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/1214/sys/src/brazil/carrera/main.c 417a void procsave(Proc *p) { /* keep track of tlbfaults */ up->counter[TLBCNTR] += m->tlbfault - m->otlbfault; m->otlbfault = m->tlbfault; } . ## diffname carrera/main.c 1993/1216 ## diff -e /n/fornaxdump/1993/1214/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/1216/sys/src/brazil/carrera/main.c 421a USED(p); . ## diffname carrera/main.c 1993/1217 ## diff -e /n/fornaxdump/1993/1216/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/1217/sys/src/brazil/carrera/main.c 424,426c /* Only interested in the PC */ Mipsjmpbuf.pc = 0xA001C020; /* Link an NMI handler to the debugger * - addresses from the ARCS rom source */ vec = (uchar*)0xA0000420; jba = (ulong)UNCACHED(void, &Mipsjmpbuf); vec[0] = 'N'; vec[1] = 'm'; vec[2] = 'i'; vec[3] = 's'; vec[4] = jba>>24; vec[5] = jba>>16; vec[6] = jba>>8; vec[7] = jba; /* Install the debugger code in a known place */ memmove((void*)0xA001C000, rdbgcode, rdbglen); . 422c uchar *vec; ulong jba; . 420c rdbginit(void) . 416,417c ulong pc; ulong sp; ulong fp; ulong s[7]; } Mipsjmpbuf; . 413,414c /* register offsets of ARCS prom jmpbuf JB_PC 0 JB_SP 1 JB_FP 2 JB_S0 3 JB_S1 4 JB_S2 5 JB_S3 6 JB_S4 7 JB_S5 8 JB_S6 9 JB_S7 10 */ struct . 402,404c /* keep track of tlbfaults */ up->counter[TLBCNTR] += m->tlbfault - m->otlbfault; m->otlbfault = m->tlbfault; } . 400a void procsave(Proc *p) { USED(p); . 64a . 40,41c rdbginit(); tlbinit(); ioinit(1); /* Very early to establish IO mappings */ . ## diffname carrera/main.c 1993/1218 ## diff -e /n/fornaxdump/1993/1217/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/1218/sys/src/brazil/carrera/main.c 209,210c /* Map the rom back into Promvirt to allow NMI handling */ promphys = IOPTE|PPN(Promphys); puttlbx(3, Promvirt, promphys, PTEGLOBL, PGSZ1M); . 176c ulong devphys, isaphys, intphys, isamphys, promphys; . 40d ## diffname carrera/main.c 1993/1219 ## diff -e /n/fornaxdump/1993/1218/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/1219/sys/src/brazil/carrera/main.c 394,397d ## diffname carrera/main.c 1993/1221 ## diff -e /n/fornaxdump/1993/1219/sys/src/brazil/carrera/main.c /n/fornaxdump/1993/1221/sys/src/brazil/carrera/main.c 365,366c /* Turn off the NMI hander for the debugger */ vec = (uchar*)0xA0000420; vec[0] = 0; /* Call the prom */ ((void(*)(void))0xBFC00000)(); . 363a . 357a uchar *vec; . ## diffname carrera/main.c 1994/0115 ## diff -e /n/fornaxdump/1993/1221/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0115/sys/src/brazil/carrera/main.c 251c IO(ulong, Tlrb) = Ntranslation*sizeof(Tte); . ## diffname carrera/main.c 1994/0126 ## diff -e /n/fornaxdump/1994/0115/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0126/sys/src/brazil/carrera/main.c 471c memmove((void*)0x8001C000, rdbgcode, rdbglen); . 453c Mipsjmpbuf.pc = 0x8001C020; . ## diffname carrera/main.c 1994/0207 ## diff -e /n/fornaxdump/1994/0126/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0207/sys/src/brazil/carrera/main.c 274a . ## diffname carrera/main.c 1994/0210 ## diff -e /n/fornaxdump/1994/0207/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0210/sys/src/brazil/carrera/main.c 274d 211a /* 8 MB video ram config */ v = IO(ulong, 0xE0000004); v &= ~(3<<8); v |= (2<<8); IO(ulong, 0xE0000004) = v; /* Map the display hardware */ ptec = PPN(VideoCTL)|PTEGLOBL|PTEVALID|PTEWRITE|PTEUNCACHED; ptes = PPN(VideoMEM)|PTEGLOBL|PTEVALID|PTEWRITE|PTEUNCACHED; puttlbx(4, Screenvirt, ptes, ptec, PGSZ4M); . 210d 202d 195d 175c ulong devphys, isaphys, intphys, isamphys, promphys, ptec, ptes, v; . ## diffname carrera/main.c 1994/0225 ## diff -e /n/fornaxdump/1994/0210/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0225/sys/src/brazil/carrera/main.c 219a /* for PC weenies */ /* * Set up the first 8259 interrupt processor. * Make 8259 interrupts start at CPU vector Int0vec. * Set the 8259 as master with edge triggered * input with fully nested interrupts. */ EISAOUTB(Int0ctl, 0x11); /* ICW1 - edge triggered, master, ICW4 will be sent */ EISAOUTB(Int0aux, Int0vec); /* ICW2 - interrupt vector offset */ EISAOUTB(Int0aux, 0x04); /* ICW3 - have slave on level 2 */ EISAOUTB(Int0aux, 0x01); /* ICW4 - 8086 mode, not buffered */ /* * Set up the second 8259 interrupt processor. * Make 8259 interrupts start at CPU vector Int0vec. * Set the 8259 as master with edge triggered * input with fully nested interrupts. */ EISAOUTB(Int1ctl, 0x11); /* ICW1 - edge triggered, master, ICW4 will be sent */ EISAOUTB(Int1aux, Int1vec); /* ICW2 - interrupt vector offset */ EISAOUTB(Int1aux, 0x02); /* ICW3 - I am a slave on level 2 */ EISAOUTB(Int1aux, 0x01); /* ICW4 - 8086 mode, not buffered */ /* * pass #2 8259 interrupts to #1 */ int0mask &= ~0x04; EISAOUTB(Int0aux, int0mask); /* enable all PC interrupts except the clock */ int0mask |= 1<<(Clockvec&7); EISAOUTB(Int0aux, int0mask); int1mask = 0; EISAOUTB(Int1aux, int1mask); . 33a int int0mask = 0xff; /* interrupts enabled for first 8259 */ int int1mask = 0xff; /* interrupts enabled for second 8259 */ . ## diffname carrera/main.c 1994/0305 ## diff -e /n/fornaxdump/1994/0225/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0305/sys/src/brazil/carrera/main.c 243,247c EISAOUTB(Int1ctl, 0x11); /* ICW1 - edge triggered, master, ICW4 will be sent */ EISAOUTB(Int1aux, Int1vec); /* ICW2 - interrupt vector offset */ EISAOUTB(Int1aux, 0x02); /* ICW3 - I am a slave on level 2 */ EISAOUTB(Int1aux, 0x01); /* ICW4 - 8086 mode, not buffered */ . 231,235c EISAOUTB(Int0ctl, 0x11); /* ICW1 - edge triggered, master, ICW4 will be sent */ EISAOUTB(Int0aux, Int0vec); /* ICW2 - interrupt vector offset */ EISAOUTB(Int0aux, 0x04); /* ICW3 - have slave on level 2 */ EISAOUTB(Int0aux, 0x01); /* ICW4 - 8086 mode, not buffered */ . ## diffname carrera/main.c 1994/0306 ## diff -e /n/fornaxdump/1994/0305/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0306/sys/src/brazil/carrera/main.c 259a IO(ulong, R4030ier) = 0xf; /* enable eisa interrupts */ . 257a . 255a int0mask &= ~((1<<2)|(1<<5)); . 252,253d ## diffname carrera/main.c 1994/0307 ## diff -e /n/fornaxdump/1994/0306/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0307/sys/src/brazil/carrera/main.c 254c int0mask = 0; . ## diffname carrera/main.c 1994/0308 ## diff -e /n/fornaxdump/1994/0307/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0308/sys/src/brazil/carrera/main.c 501a return; /* Not installed now */ . ## diffname carrera/main.c 1994/0322 ## diff -e /n/fornaxdump/1994/0308/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0322/sys/src/brazil/carrera/main.c 501,502d 442a conf.ialloc = ((conf.npage-conf.upages)/2)*BY2PG; . 334d 157a /* Setup call back ring buffer */ m->cbin = m->calls; m->cbout = m->calls; m->cbend = &m->calls[NCALLBACK]; . 64d 44a rdbginit(); . ## diffname carrera/main.c 1994/0327 ## diff -e /n/fornaxdump/1994/0322/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0327/sys/src/brazil/carrera/main.c 506c return; . ## diffname carrera/main.c 1994/0330 ## diff -e /n/fornaxdump/1994/0327/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0330/sys/src/brazil/carrera/main.c 212c IO(ushort, Intenareg) = 0xfff7; . 146c ((void(*)(void))((ulong)cleancache|0xA0000000))(); . ## diffname carrera/main.c 1994/0405 ## diff -e /n/fornaxdump/1994/0330/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0405/sys/src/brazil/carrera/main.c 506c return;/**/ . ## diffname carrera/main.c 1994/0410 ## diff -e /n/fornaxdump/1994/0405/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0410/sys/src/brazil/carrera/main.c 526c memmove((void*)0xA001C000, rdbgcode, rdbglen); . 506c /*return;/**/ . ## diffname carrera/main.c 1994/0411 ## diff -e /n/fornaxdump/1994/0410/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0411/sys/src/brazil/carrera/main.c 526c memmove((void*)0x8001C000, rdbgcode, rdbglen); . ## diffname carrera/main.c 1994/0413 ## diff -e /n/fornaxdump/1994/0411/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0413/sys/src/brazil/carrera/main.c 506c return;/**/ . ## diffname carrera/main.c 1994/0415 ## diff -e /n/fornaxdump/1994/0413/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0415/sys/src/brazil/carrera/main.c 526c memmove((void*)0xA001C000, rdbgcode, rdbglen); . 508c Mipsjmpbuf.pc = 0xA001C020; . ## diffname carrera/main.c 1994/0508 ## diff -e /n/fornaxdump/1994/0415/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0508/sys/src/brazil/carrera/main.c 158,162d ## diffname carrera/main.c 1994/0516 ## diff -e /n/fornaxdump/1994/0508/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0516/sys/src/brazil/carrera/main.c 207c IO(ushort, Intenareg) = 0xffff; . ## diffname carrera/main.c 1994/0519 ## diff -e /n/fornaxdump/1994/0516/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0519/sys/src/brazil/carrera/main.c 57a iprint("M(PRID) = 0x%.8lux\n", getprid()); . ## diffname carrera/main.c 1994/0520 ## diff -e /n/fornaxdump/1994/0519/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0520/sys/src/brazil/carrera/main.c 58d ## diffname carrera/main.c 1994/0528 ## diff -e /n/fornaxdump/1994/0520/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0528/sys/src/brazil/carrera/main.c 420,421c firmware(type); . 412c print("cpu%d exiting\n", m->machno); . ## diffname carrera/main.c 1994/0609 ## diff -e /n/fornaxdump/1994/0528/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0609/sys/src/brazil/carrera/main.c 313c memmove((ulong*)UTLBMISS, (ulong*)vector0, 0x80); memmove((ulong*)XEXCEPTION, (ulong*)vector0, 0x80); . ## diffname carrera/main.c 1994/0612 ## diff -e /n/fornaxdump/1994/0609/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0612/sys/src/brazil/carrera/main.c 463d ## diffname carrera/main.c 1994/0617 ## diff -e /n/fornaxdump/1994/0612/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0617/sys/src/brazil/carrera/main.c 313,314c memmove((ulong*)UTLBMISS, (ulong*)vector0, 0x100); . ## diffname carrera/main.c 1994/0619 ## diff -e /n/fornaxdump/1994/0617/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0619/sys/src/brazil/carrera/main.c 313c memmove((ulong*)UTLBMISS, (ulong*)vector0, 0x80); memmove((ulong*)XEXCEPTION, (ulong*)vector0, 0x80); . ## diffname carrera/main.c 1994/0621 ## diff -e /n/fornaxdump/1994/0619/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0621/sys/src/brazil/carrera/main.c 167,168d ## diffname carrera/main.c 1994/0728 ## diff -e /n/fornaxdump/1994/0621/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0728/sys/src/brazil/carrera/main.c 456,464d ## diffname carrera/main.c 1994/0806 ## diff -e /n/fornaxdump/1994/0728/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0806/sys/src/brazil/carrera/main.c 415a if(type == 1) for(;;); . ## diffname carrera/main.c 1994/0812 ## diff -e /n/fornaxdump/1994/0806/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0812/sys/src/brazil/carrera/main.c 361a p->rgrp = newrgrp(); . ## diffname carrera/main.c 1994/0902 ## diff -e /n/fornaxdump/1994/0812/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/0902/sys/src/brazil/carrera/main.c 166c ns16552install(); . ## diffname carrera/main.c 1994/1019 ## diff -e /n/fornaxdump/1994/0902/sys/src/brazil/carrera/main.c /n/fornaxdump/1994/1019/sys/src/brazil/carrera/main.c 434c top = memsize()/BY2PG; . 426a ulong memsize(void) { ulong gcr; gcr = IO(ulong, MCTgcr); /* Check for bank one enable - * assumes both have 4Meg SIMMS */ if(gcr & 0x20){ memset(UNCACHED(void, 16*MB), 0, 16*MB); return 32*MB; } return 16*MB; } . ## diffname carrera/main.c 1995/0131 ## diff -e /n/fornaxdump/1994/1019/sys/src/brazil/carrera/main.c /n/fornaxdump/1995/0131/sys/src/brazil/carrera/main.c 324a { uchar *p; int x; for(p = (uchar*)(0xA0000000|16*MB); p<(uchar*)(0xA0000000|32*MB); p+=16){ if((((ulong)p) & 0x3FFF)==0) print("%lux ", p); x = *p; } } . 57c print("\n\nBrazil\n"); . ## diffname carrera/main.c 1995/0201 ## diff -e /n/fornaxdump/1995/0131/sys/src/brazil/carrera/main.c /n/fornaxdump/1995/0201/sys/src/brazil/carrera/main.c 325,334d ## diffname carrera/main.c 1995/0214 ## diff -e /n/fornaxdump/1995/0201/sys/src/brazil/carrera/main.c /n/fornaxdump/1995/0214/sys/src/brazil/carrera/main.c 482a * dummy routine for interoperability with pc's */ int isaconfig(char *class, int ctlrno, ISAConf *isa) { if(strcmp(class, "audio") == 0 && ctlrno == 0){ strcpy(isa->type, "sb16"); isa->port = 0x220; isa->irq = 7; return 1; } return 0; } /* . ## diffname carrera/main.c 1995/0215 ## diff -e /n/fornaxdump/1995/0214/sys/src/brazil/carrera/main.c /n/fornaxdump/1995/0215/sys/src/brazil/carrera/main.c 490,491d ## diffname carrera/main.c 1995/0308 ## diff -e /n/fornaxdump/1995/0215/sys/src/brazil/carrera/main.c /n/fornaxdump/1995/0308/sys/src/brazil/carrera/main.c 57c /* iprint("\n\nBrazil\n"); /**/ . ## diffname carrera/main.c 1997/0117 ## diff -e /n/fornaxdump/1995/0308/sys/src/brazil/carrera/main.c /n/fornaxdump/1997/0117/sys/src/brazil/carrera/main.c 405c exit(int type) . ## diffname carrera/main.c 1997/0201 ## diff -e /n/fornaxdump/1997/0117/sys/src/brazil/carrera/main.c /n/emeliedump/1997/0201/sys/src/brazil/carrera/main.c 336c ksetenv("cputype", "mips2"); . ## diffname carrera/main.c 1997/0202 ## diff -e /n/emeliedump/1997/0201/sys/src/brazil/carrera/main.c /n/emeliedump/1997/0202/sys/src/brazil/carrera/main.c 336c ksetenv("cputype", "mips"); . ## diffname carrera/main.c 1997/0327 ## diff -e /n/emeliedump/1997/0202/sys/src/brazil/carrera/main.c /n/emeliedump/1997/0327/sys/src/brazil/carrera/main.c 331c up->dot = cclone(up->slash, 0); . 111c for(i=0; i < nelem(bootenv); i++){ . ## diffname carrera/main.c 1997/0603 ## diff -e /n/emeliedump/1997/0327/sys/src/brazil/carrera/main.c /n/emeliedump/1997/0603/sys/src/brazil/carrera/main.c 361a p->fgrp->fd = smalloc(DELTAFD*sizeof(Chan*)); p->fgrp->nfd = DELTAFD; . ## diffname carrera/main.c 1997/0606 ## diff -e /n/emeliedump/1997/0603/sys/src/brazil/carrera/main.c /n/emeliedump/1997/0606/sys/src/brazil/carrera/main.c 360,363c p->fgrp = dupfgrp(nil); . ## diffname carrera/main.c 1997/1101 ## diff -e /n/emeliedump/1997/0606/sys/src/brazil/carrera/main.c /n/emeliedump/1997/1101/sys/src/brazil/carrera/main.c 459c if(top > 16*MB){ conf.upages = (conf.npage*60)/100; poolsetparam("Image", 0, 0, 4*1024*1024); }else conf.upages = (conf.npage*40)/100; . 61d 7a #include "pool.h" . ## diffname carrera/main.c 1997/1210 ## diff -e /n/emeliedump/1997/1101/sys/src/brazil/carrera/main.c /n/emeliedump/1997/1210/sys/src/brazil/carrera/main.c 492a return 1; } if(cistrcmp(class, "ether") == 0 && ctlrno == 0){ strcpy(isa->type, "sonic"); . 491c if(cistrcmp(class, "audio") == 0 && ctlrno == 0){ . 484a int cistrcmp(char *a, char *b) { int ac, bc; for(;;){ ac = *a++; bc = *b++; if(ac >= 'A' && ac <= 'Z') ac = 'a' + (ac - 'A'); if(bc >= 'A' && bc <= 'Z') bc = 'a' + (bc - 'A'); ac -= bc; if(ac) return ac; if(bc == 0) break; } return 0; } . ## diffname carrera/main.c 1997/1211 ## diff -e /n/emeliedump/1997/1210/sys/src/brazil/carrera/main.c /n/emeliedump/1997/1211/sys/src/brazil/carrera/main.c 302a /* Invalidate R4030 I/O cache */ for(i=0; i<8; i++){ *(ulong*)0xE0000034 = i<<2; *(ulong*)0xE000004C = 0; } . ## diffname carrera/main.c 1998/0121 ## diff -e /n/emeliedump/1997/1211/sys/src/brazil/carrera/main.c /n/emeliedump/1998/0121/sys/src/brazil/carrera/main.c 465c if(top > 16*MB/BY2PG){ . ## diffname carrera/main.c 1998/0502 ## diff -e /n/emeliedump/1998/0121/sys/src/brazil/carrera/main.c /n/emeliedump/1998/0502/sys/src/brazil/carrera/main.c 61a links(); . ## diffname carrera/main.c 1998/0610 ## diff -e /n/emeliedump/1998/0502/sys/src/brazil/carrera/main.c /n/emeliedump/1998/0610/sys/src/brazil/carrera/main.c 415a lock(&active); active.machs &= ~(1<machno); active.exiting = 1; unlock(&active); . 147c configreg = ((int(*)(void))((ulong)cleancache|0xA0000000))(); . 58a print("Brazil config reg %#lux\n", configreg); . 33a int configreg; . ## diffname carrera/main.c 1998/0916 ## diff -e /n/emeliedump/1998/0610/sys/src/brazil/carrera/main.c /n/emeliedump/1998/0916/sys/src/brazil/carrera/main.c 484a conf.nswppo = 4096; . ## diffname carrera/main.c 1999/0128 ## diff -e /n/emeliedump/1998/0916/sys/src/brazil/carrera/main.c /n/emeliedump/1999/0128/sys/src/brazil/carrera/main.c 475c poolsetparam("Image", 0, 0, 4*1024*1024, nil); . ## diffname carrera/main.c 1999/0629 ## diff -e /n/emeliedump/1999/0128/sys/src/brazil/carrera/main.c /n/emeliedump/1999/0629/sys/src/brazil/carrera/main.c 339a cnameclose(up->slash->name); up->slash->name = newcname("/"); . 60c print("Brazil config reg %#ux\n", configreg); . ## diffname carrera/main.c 1999/0711 ## diff -e /n/emeliedump/1999/0629/sys/src/brazil/carrera/main.c /n/emeliedump/1999/0711/sys/src/brazil/carrera/main.c 477c poolconfig(imagmem, 0, 4*1024*1024, 0, nil); . ## diffname carrera/main.c 1999/0712 ## diff -e /n/emeliedump/1999/0711/sys/src/brazil/carrera/main.c /n/emeliedump/1999/0712/sys/src/brazil/carrera/main.c 477c poolsetparam("Image", 0, 0, 4*1024*1024, nil); . ## diffname carrera/main.c 1999/0713 ## diff -e /n/emeliedump/1999/0712/sys/src/brazil/carrera/main.c /n/emeliedump/1999/0713/sys/src/brazil/carrera/main.c 477c imagmem->minarena = 4*1024*1024; . ## diffname carrera/main.c 1999/1005 ## diff -e /n/emeliedump/1999/0713/sys/src/brazil/carrera/main.c /n/emeliedump/1999/1005/sys/src/brazil/carrera/main.c 433c rdb(); . 67a noprint = 0; . 59,60c // print("Brazil config reg %#ux\n", configreg); . 56a iprint("Brazil\n"); /**/ . 44a noprint = 1; . 40a extern int noprint; . ## diffname carrera/main.c 1999/1031 ## diff -e /n/emeliedump/1999/1005/sys/src/brazil/carrera/main.c /n/emeliedump/1999/1031/sys/src/9/carrera/main.c 62d 59c iprint("Plan 9\n"); /**/ . ## diffname carrera/main.c 2001/0424 ## diff -e /n/emeliedump/1999/1031/sys/src/9/carrera/main.c /n/emeliedump/2001/0424/sys/src/9/carrera/main.c 591a } /* * physical segs unique to the carrera */ static Physseg myphyssegs[] = { { SG_PHYSICAL, "eisaio", Eisaphys, 64*1024, 0, 0 }, { SG_PHYSICAL, "eisavga", Eisavgaphys, 128*1024, 0, 0 }, { SG_PHYSICAL, "bootrom", 0x1fc00000, 256*1024, 0, 0 }, { SG_PHYSICAL, "nvram", 0xe0009000, 12*1024, 0, 0 }, { SG_PHYSICAL, "fb", 0x40000000, 4*1024*1024, 0, 0 }, }; static void addps(void) { int i; for(i = 0; i < nelem(myphyssegs); i++) addphysseg(&myphyssegs[i]); . 65a addps(); . 42a static void addps(void); . ## diffname carrera/main.c 2001/0527 # deleted ## diff -e /n/emeliedump/2001/0424/sys/src/9/carrera/main.c /n/emeliedump/2001/0527/sys/src/9/carrera/main.c 1,616d