## diffname bitsy/main.c 2000/0831 ## diff -e /dev/null /n/emeliedump/2000/0831/sys/src/9/bitsy/main.c 0a #include "u.h" #include "../port/lib.h" #include "mem.h" #include "dat.h" #include "fns.h" #include "io.h" #include "ureg.h" #include "init.h" #include "pool.h" Mach *m; void main(void) { } . ## diffname bitsy/main.c 2000/0901 ## diff -e /n/emeliedump/2000/0831/sys/src/9/bitsy/main.c /n/emeliedump/2000/0901/sys/src/9/bitsy/main.c 16a void exit(int) { } . ## diffname bitsy/main.c 2000/0902 ## diff -e /n/emeliedump/2000/0901/sys/src/9/bitsy/main.c /n/emeliedump/2000/0902/sys/src/9/bitsy/main.c 19c exit(int ispanic) { USED(ispanic); } /* * set mach dependent process state for a new process */ void procsetup(Proc *p) { p->fpstate = FPinit; } /* * Save the mach dependent part of the process state. */ void procsave(Proc *p) { USED(p); } /* place holder */ void serialputs(char*, int) { } /* * dummy since rdb is not included */ void rdb(void) . 17a /* * exit kernel either on a panic or user request */ . 15a . 11a Conf conf; . ## diffname bitsy/main.c 2000/0904 ## diff -e /n/emeliedump/2000/0902/sys/src/9/bitsy/main.c /n/emeliedump/2000/0904/sys/src/9/bitsy/main.c 26c void (*f)(); f = nil; (*f)(); . 17c putuartstr("hello ken"); . ## diffname bitsy/main.c 2000/0905 ## diff -e /n/emeliedump/2000/0904/sys/src/9/bitsy/main.c /n/emeliedump/2000/0905/sys/src/9/bitsy/main.c 61a int i; ulong addr; ulong ktop; /* find first two contiguous sections of available memory */ addr = PHYSDRAM0; conf.base0 = conf.npage0 = addr; conf.base1 = conf.npage1 = addr; for(i = 0; i < 512; i++){ if(probemem(addr) == 0) break; addr += OneMeg; } for(; i < 512; i++){ if(probemem(addr) < 0) break; addr += OneMeg; conf.npage0 = addr; } conf.base1 = conf.npage1 = addr; for(; i < 512; i++){ if(probemem(addr) == 0) break; addr += OneMeg; } for(; i < 512; i++){ if(probemem(addr) < 0) break; addr += OneMeg; conf.npage1 = addr; } /* take kernel out of allocatable space */ ktop = PGROUND((ulong)end); if(ktop >= conf.base0 && ktop <= conf.npage0) conf.base0 = ktop; else if(ktop >= conf.base1 && ktop <= conf.npage1) conf.base1 = ktop; else iprint("kernel not in allocatable space\n"); iprint("%lux-%lux %lux-%lux\n", conf.base0, conf.npage0, conf.base1, conf.npage1); /* make npages the right thing */ conf.npage0 = (conf.npage0 - conf.base0)/BY2PG; conf.npage1 = (conf.npage1 - conf.base1)/BY2PG; conf.npage = conf.npage0+conf.npage1; if(conf.npage > 16*MB/BY2PG){ conf.upages = (conf.npage*60)/100; imagmem->minarena = 4*1024*1024; }else conf.upages = (conf.npage*40)/100; conf.ialloc = ((conf.npage-conf.upages)/2)*BY2PG; conf.nmach = 1; /* set up other configuration parameters */ conf.nproc = 100; conf.nswap = conf.npage*3; conf.nswppo = 4096; conf.nimage = 200; conf.monitor = 1; conf.copymode = 0; /* copy on write */ . 60c confinit(void) . 58a int probemem(ulong addr) { ulong *p; ulong a; addr += OneMeg - sizeof(ulong); p = (ulong*)addr; *p = addr; for(a = conf.base0+OneMeg-sizeof(ulong); a < conf.npage0; a += OneMeg){ p = (ulong*)a; *p = 0; } for(a = conf.base1+OneMeg-sizeof(ulong); a < conf.npage1; a += OneMeg){ p = (ulong*)a; *p = 0; } p = (ulong*)addr; iprint("%lux @ %lux\n", *p, addr); if(*p != addr) return -1; return 0; } /* * we assume that the kernel is at the beginning of one of the * contiguous chunks of memory. */ . 57c * probe the last location in a meg of memory, make sure it's not * reflected into something else we've already found. . 55a enum { OneMeg= 1024*1024, }; . 52c rdb(void) . 50a /* * dummy since rdb is not included */ . 27a USED(ispanic); delay(1000); . 17c iprint("bitsy kernel\n"); confinit(); mmuinit(); . 10a #include "sa1110.h" . ## diffname bitsy/main.c 2000/0906 ## diff -e /n/emeliedump/2000/0905/sys/src/9/bitsy/main.c /n/emeliedump/2000/0906/sys/src/9/bitsy/main.c 20a xinit(); . 11,12d ## diffname bitsy/main.c 2000/0907 ## diff -e /n/emeliedump/2000/0906/sys/src/9/bitsy/main.c /n/emeliedump/2000/0907/sys/src/9/bitsy/main.c 65,69d ## diffname bitsy/main.c 2000/0927 ## diff -e /n/emeliedump/2000/0907/sys/src/9/bitsy/main.c /n/emeliedump/2000/0927/sys/src/9/bitsy/main.c 20a delay(100000); exit(1); . 16a int i; . ## diffname bitsy/main.c 2000/0928 ## diff -e /n/emeliedump/2000/0927/sys/src/9/bitsy/main.c /n/emeliedump/2000/0928/sys/src/9/bitsy/main.c 147c /* make npage the right thing */ . 145d 91d 22a iprint("after mmuinit\n"); . 21a iprint("after xinit\n"); . 20a iprint("%d pages %lux(%lud) %lux(%lud)\n", conf.npage, conf.base0, conf.npage0, conf.base1, conf.npage1); . 17c /* zero out bss */ memset(edata, 0, end-edata); . ## diffname bitsy/main.c 2000/0929 ## diff -e /n/emeliedump/2000/0928/sys/src/9/bitsy/main.c /n/emeliedump/2000/0929/sys/src/9/bitsy/main.c 41a mmudisable(); . 26a trapinit(); iprint("after trapinit\n"); . ## diffname bitsy/main.c 2000/1006 ## diff -e /n/emeliedump/2000/0929/sys/src/9/bitsy/main.c /n/emeliedump/2000/1006/sys/src/9/bitsy/main.c 29c spllo(); iprint("after spllo\n"); delay(1000000); . 26a clockinit(); iprint("after clockinit\n"); . 25a uartsetup(); . 24a iprint("testing 2 second delay\n"); delay(2000); iprint("done\n"); . ## diffname bitsy/main.c 2000/1007 ## diff -e /n/emeliedump/2000/1006/sys/src/9/bitsy/main.c /n/emeliedump/2000/1007/sys/src/9/bitsy/main.c 183a . 37c delay(10000); trapdump("after delay"); . 34a clockinit(); iprint("after clockinit\n"); trapdump("before spllo"); . 31,32d 29c sa1100_uartsetup(); . 19a /* point to Mach structure */ m = (Mach*)MACHADDR; . ## diffname bitsy/main.c 2000/1008 ## diff -e /n/emeliedump/2000/1007/sys/src/9/bitsy/main.c /n/emeliedump/2000/1008/sys/src/9/bitsy/main.c 189a GPIOregs *gpioregs; ulong *egpioreg; static void gpioinit(void) { gpioregs = mapspecial(GPIOREGS, 32); gpioregs->direction = GPIO_LDD8_o|GPIO_LDD9_o|GPIO_LDD10_o|GPIO_LDD11_o |GPIO_LDD12_o|GPIO_LDD13_o|GPIO_LDD14_o|GPIO_LDD15_o |GPIO_CLK_SET0_o|GPIO_CLK_SET1_o |GPIO_L3_SDA_io|GPIO_L3_MODE_o|GPIO_L3_SCLK_o |GPIO_COM_RTS_o; gpioregs->rising = 0; gpioregs->falling = 0; egpioreg = mapspecial(EGPIOREGS, 4); } static ulong egpiosticky; void rs232power(int on) { if(on) egpiosticky |= EGPIO_rs232_power; else egpiosticky &= ~EGPIO_rs232_power; *egpioreg = egpiosticky; } void irpower(int on) { if(on) egpiosticky |= EGPIO_ir_power; else egpiosticky &= ~EGPIO_ir_power; *egpioreg = egpiosticky; } void lcdpower(int on) { if(on) egpiosticky |= EGPIO_lcd_3v|EGPIO_lcd_ic_power|EGPIO_lcd_5v|EGPIO_lcd_9v; else egpiosticky &= ~(EGPIO_lcd_3v|EGPIO_lcd_ic_power|EGPIO_lcd_5v|EGPIO_lcd_9v); *egpioreg = egpiosticky; } . 40,42c delay(1000); . 37,38d 35d 33c gpioinit(); . 27,30d 22a rs232power(1); . 13a static void gpioinit(void); . ## diffname bitsy/main.c 2000/1010 ## diff -e /n/emeliedump/2000/1008/sys/src/9/bitsy/main.c /n/emeliedump/2000/1010/sys/src/9/bitsy/main.c 50a iprint("it's a wonderful day to die\n"); . ## diffname bitsy/main.c 2000/1011 ## diff -e /n/emeliedump/2000/1010/sys/src/9/bitsy/main.c /n/emeliedump/2000/1011/sys/src/9/bitsy/main.c 54a } /* * starting place for first process */ void init0(void) { up->nerrlab = 0; 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); cnameclose(up->slash->name); up->slash->name = newcname("/"); up->dot = cclone(up->slash, 0); chandevinit(); if(!waserror()){ ksetenv("terminal", "bitsy"); ksetenv("cputype", "arm"); if(cpuserver) ksetenv("service", "cpu"); else ksetenv("service", "terminal"); poperror(); } kproc("alarm", alarmkproc, 0); touser(); } /* * create the first process */ void userinit(void) { Proc *p; Segment *s; KMap *k; Page *pg; p = newproc(); p->pgrp = newpgrp(); p->egrp = smalloc(sizeof(Egrp)); p->egrp->ref = 1; p->fgrp = dupfgrp(nil); p->rgrp = newrgrp(); p->procmode = 0640; strcpy(p->text, "*init*"); strcpy(p->user, eve); /* * Kernel Stack */ p->sched.pc = (ulong)init0; p->sched.sp = (ulong)p->kstack+KSTACK-(1+MAXSYSARG)*BY2WD; /* * User Stack */ s = newseg(SG_STACK, USTKTOP-USTKSIZE, USTKSIZE/BY2PG); p->seg[SSEG] = s; pg = newpage(1, 0, USTKTOP-BY2PG); segpage(s, pg); /* * 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); . 35,37c chandevreset(); pageinit(); userinit(); schedinit(); . ## diffname bitsy/main.c 2000/1012 ## diff -e /n/emeliedump/2000/1011/sys/src/9/bitsy/main.c /n/emeliedump/2000/1012/sys/src/9/bitsy/main.c 127a k = kmap(pg); bootargs(VA(k)); kunmap(k); . 119c p->sched.sp = (ulong)p->kstack+KSTACK-(sizeof(Sargs)+BY2WD); . 114a . 93a * pass boot arguments to /boot */ static uchar * pusharg(char *p) { int n; n = strlen(p)+1; sp -= n; memmove(sp, p, n); return sp; } static void bootargs(ulong base) { int i, ac; uchar *av[32]; uchar *bootpath; uchar **lsp; /* * the sizeof(Sargs) is to make the validaddr check in * trap.c's syscall() work even when we have less than the * max number of args. */ sp = (uchar*)base + BY2PG - sizeof(Sargs); bootpath = pusharg("/boot"); ac = 0; av[ac++] = pusharg("boot"); /* 4 byte word align stack */ sp = (uchar*)((ulong)sp & ~3); /* build argc, argv on stack */ sp -= (ac+1)*sizeof(sp); lsp = (uchar**)sp; for(i = 0; i < ac; i++) *lsp++ = av[i] + ((USTKTOP - BY2PG) - base); *lsp = 0; /* push argv onto stack */ sp -= BY2WD; lsp = (uchar**)sp; *lsp = sp + BY2WD + ((USTKTOP - BY2PG) - base); /* push pointer to "/boot" */ sp -= BY2WD; lsp = (uchar**)sp; *lsp = bootpath + ((USTKTOP - BY2PG) - base); /* leave space for where the initcode's caller's return PC would normally reside */ sp -= BY2WD; /* relocate stack to user's virtual addresses */ sp += (USTKTOP - BY2PG) - base; } /* . 90c touser(sp); . 57a static uchar *sp; . 47c void (*f)(void); . 37a iprint("schedinit(), death soon\n"); . 36a swapinit(); . 35a noprint = 1; . 34a procinit0(); initseg(); . 33a printinit(); . 23a memset(m, 0, sizeof(Mach)); . 15a int noprint; . ## diffname bitsy/main.c 2000/1013 ## diff -e /n/emeliedump/2000/1012/sys/src/9/bitsy/main.c /n/emeliedump/2000/1013/sys/src/9/bitsy/main.c 66a /* * quicker panic */ void qpanic(char *fmt, ...) { int n; va_list arg; char buf[PRINTSIZE]; splhi(); strcpy(buf, "panic: "); va_start(arg, fmt); n = doprint(buf+strlen(buf), buf+sizeof(buf), fmt, arg) - buf; va_end(arg); buf[n] = '\n'; serialputs(buf, n+1); exit(1); } . ## diffname bitsy/main.c 2000/1014 ## diff -e /n/emeliedump/2000/1013/sys/src/9/bitsy/main.c /n/emeliedump/2000/1014/sys/src/9/bitsy/main.c 236a cleancache(); wbflush(); iprint("userinit %lux[0x20] = %lux\n", VA(k), *((ulong*)(VA(k)+0x20))); . 229d 195a /* no processes yet */ up = nil; . 26a m->ticks = 1; . 20a cleancache(); . ## diffname bitsy/main.c 2000/1015 ## diff -e /n/emeliedump/2000/1014/sys/src/9/bitsy/main.c /n/emeliedump/2000/1015/sys/src/9/bitsy/main.c 363a /* only one processor */ . 242,244c //iprint("userinit %lux[0x20] = %lux\n", VA(k), *((ulong*)(VA(k)+0x20))); . 213d 64a mmuinvalidate(); . 49c //iprint("schedinit(), death soon\n"); . 45d 40c sa1100_uartsetup(1); printinit(); /* from here on, print works, before this we need iprint */ . 37d 34d 21c mmuinvalidate(); . ## diffname bitsy/main.c 2000/1016 ## diff -e /n/emeliedump/2000/1015/sys/src/9/bitsy/main.c /n/emeliedump/2000/1016/sys/src/9/bitsy/main.c 15,16d 11,12c Mach *m; Proc *up; Conf conf; int noprint; . ## diffname bitsy/main.c 2000/1018 ## diff -e /n/emeliedump/2000/1016/sys/src/9/bitsy/main.c /n/emeliedump/2000/1018/sys/src/9/bitsy/main.c 68,89d 62a cacheflush(); . 47d 37a screeninit(); . 32c iprint("\nPlan 9 bitsy kernel\n"); . ## diffname bitsy/main.c 2000/1019 ## diff -e /n/emeliedump/2000/1018/sys/src/9/bitsy/main.c /n/emeliedump/2000/1019/sys/src/9/bitsy/main.c 354c ulong *egpioreg = (ulong*)EGPIOREGS; . 219d 39a rs232power(1); screeninit(); . 38d ## diffname bitsy/main.c 2000/1020 ## diff -e /n/emeliedump/2000/1019/sys/src/9/bitsy/main.c /n/emeliedump/2000/1020/sys/src/9/bitsy/main.c 367a gpioregs->altfunc |= GPIO_LDD8_o|GPIO_LDD9_o|GPIO_LDD10_o|GPIO_LDD11_o |GPIO_LDD12_o|GPIO_LDD13_o|GPIO_LDD14_o|GPIO_LDD15_o; . 30a active.machs = 1; . ## diffname bitsy/main.c 2000/1026 ## diff -e /n/emeliedump/2000/1020/sys/src/9/bitsy/main.c /n/emeliedump/2000/1026/sys/src/9/bitsy/main.c 232c p->fpstate = FPINIT; . ## diffname bitsy/main.c 2000/1027 ## diff -e /n/emeliedump/2000/1026/sys/src/9/bitsy/main.c /n/emeliedump/2000/1027/sys/src/9/bitsy/main.c 232c p->fpstate = FPinit; . ## diffname bitsy/main.c 2000/1110 ## diff -e /n/emeliedump/2000/1027/sys/src/9/bitsy/main.c /n/emeliedump/2000/1110/sys/src/9/bitsy/main.c 405a *egpioreg = egpiosticky; } void audiopower(int on) { if(on) egpiosticky |= EGPIO_audio_ic_power | EGPIO_codec_reset; else egpiosticky &= ~(EGPIO_audio_ic_power | EGPIO_codec_reset); *egpioreg = egpiosticky; } void amplifierpower(int on) { if(on) egpiosticky |= EGPIO_audio_power; else egpiosticky &= ~(EGPIO_audio_power); *egpioreg = egpiosticky; } void audiomute(int on) { if(on) egpiosticky |= EGPIO_audio_mute; else egpiosticky &= ~(EGPIO_audio_mute); . 376a PPCregs *ppcregs; static void ppcinit(void) { ppcregs = mapspecial(PPCREGS, 32); } SSPregs *sspregs; static void sspinit(void) { sspregs = mapspecial(SSPREGS, 32); } . 38a ppcinit(); sspinit(); . ## diffname bitsy/main.c 2000/1111 ## diff -e /n/emeliedump/2000/1110/sys/src/9/bitsy/main.c /n/emeliedump/2000/1111/sys/src/9/bitsy/main.c 43a dmainit(); . 16a static void ppcinit(void); static void sspinit(void); . ## diffname bitsy/main.c 2000/1114 ## diff -e /n/emeliedump/2000/1111/sys/src/9/bitsy/main.c /n/emeliedump/2000/1114/sys/src/9/bitsy/main.c 451,455c egpiobits(EGPIO_audio_mute, on); } void flashprogpower(int on) { egpiobits(EGPIO_prog_flash, on); . 441,445c egpiobits(EGPIO_audio_power, on); . 431,435c egpiobits(EGPIO_audio_ic_power | EGPIO_codec_reset, on); . 421,425c egpiobits(EGPIO_lcd_3v|EGPIO_lcd_ic_power|EGPIO_lcd_5v|EGPIO_lcd_9v, on); . 411,415c egpiobits(EGPIO_ir_power, on); . 408a rs232power(int on) { egpiobits(EGPIO_rs232_power, on); } void . 404c egpiosticky &= ~bits; . 402c egpiosticky |= bits; . 398,399c static void egpiobits(ulong bits, int on) . ## diffname bitsy/main.c 2000/1116 ## diff -e /n/emeliedump/2000/1114/sys/src/9/bitsy/main.c /n/emeliedump/2000/1116/sys/src/9/bitsy/main.c 386a } MCPregs *mcpregs; static void mcpinit(void) { mcpregs = mapspecial(MCPREGS, 0x34); mcpregs->status &= ~(1<<16); /* Turn MCP operations off */ . 41a mcpinit(); . 18a static void mcpinit(void); . ## diffname bitsy/main.c 2000/1117 ## diff -e /n/emeliedump/2000/1116/sys/src/9/bitsy/main.c /n/emeliedump/2000/1117/sys/src/9/bitsy/main.c 379c |GPIO_LDD12_o|GPIO_LDD13_o|GPIO_LDD14_o|GPIO_LDD15_o |GPIO_SSP_CLK_i; . ## diffname bitsy/main.c 2000/1118 ## diff -e /n/emeliedump/2000/1117/sys/src/9/bitsy/main.c /n/emeliedump/2000/1118/sys/src/9/bitsy/main.c 459a } void exppackpower(int on) { egpiobits(EGPIO_exp_full_power|EGPIO_exp_nvram_power, on); if(on) delay(100); . 410c void . ## diffname bitsy/main.c 2000/1121 ## diff -e /n/emeliedump/2000/1118/sys/src/9/bitsy/main.c /n/emeliedump/2000/1121/sys/src/9/bitsy/main.c 460,467d 403,407c /* * manage egpio bits */ . 401d 394,398c /* memory configuraton */ memconfregs = mapspecial(MEMCONFREGS, 32); . 392c /* SA1110 power management */ powerregs = mapspecial(POWERREGS, 32); . 390d 385,388c /* map in peripheral pin controller (ssp will need it) */ . 383d 381a /* map in special H3650 io pins */ . 367a /* set direction of SA1110 io pins and select alternate functions for some */ . 365,366c /* * configure the machine */ void machinit(void) . 363a PPCregs *ppcregs; MemConfRegs *memconfregs; PowerRegs *powerregs; . 41,44c machinit(); . 16,20d ## diffname bitsy/main.c 2000/1122 ## diff -e /n/emeliedump/2000/1121/sys/src/9/bitsy/main.c /n/emeliedump/2000/1122/sys/src/9/bitsy/main.c 429,446d ## diffname bitsy/main.c 2000/1205 ## diff -e /n/emeliedump/2000/1122/sys/src/9/bitsy/main.c /n/emeliedump/2000/1205/sys/src/9/bitsy/main.c 431a } /* here on hardware reset */ void resettrap(void) { } /* * for drivers that used to run on x86's */ void outb(ulong a, uchar v) { *(uchar*)a = v; µdelay(2); } void outs(ulong a, ushort v) { *(ushort*)a = v; µdelay(2); } void outl(ulong a, ulong v) { *(ulong*)a = v; µdelay(2); } uchar inb(ulong a) { µdelay(2); return *(uchar*)a; } ushort ins(ulong a) { µdelay(2); return *(ushort*)a; } ulong inl(ulong a) { µdelay(2); return *(ulong*)a; . 45a links(); . ## diffname bitsy/main.c 2000/1206 ## diff -e /n/emeliedump/2000/1205/sys/src/9/bitsy/main.c /n/emeliedump/2000/1206/sys/src/9/bitsy/main.c 477d 471d 465d 460d 454d 448d ## diffname bitsy/main.c 2000/1207 ## diff -e /n/emeliedump/2000/1206/sys/src/9/bitsy/main.c /n/emeliedump/2000/1207/sys/src/9/bitsy/main.c 328a /* zero memory */ memset((void*)conf.base0, 0, conf.npage0 - conf.base0); memset((void*)conf.base1, 0, conf.npage1 - conf.base1); . ## diffname bitsy/main.c 2001/0327 ## diff -e /n/emeliedump/2000/1207/sys/src/9/bitsy/main.c /n/emeliedump/2001/0327/sys/src/9/bitsy/main.c 471a } void inss(ulong a, void *p, int n) { ushort *sp = p; while(n-- > 0) *sp++ = *(ushort*)a; . 458a outss(ulong a, void *p, int n) { ushort *sp = p; while(n-- > 0) *(ushort*)a = *sp++; } void . ## diffname bitsy/main.c 2001/0501 ## diff -e /n/emeliedump/2001/0327/sys/src/9/bitsy/main.c /n/emeliedump/2001/0501/sys/src/9/bitsy/main.c 384c |GPIO_SSP_CLK_i|GPIO_SSP_RXD_i; . ## diffname bitsy/main.c 2001/0502 ## diff -e /n/emeliedump/2001/0501/sys/src/9/bitsy/main.c /n/emeliedump/2001/0502/sys/src/9/bitsy/main.c 384c |GPIO_SSP_CLK_i; . ## diffname bitsy/main.c 2001/0529 ## diff -e /n/emeliedump/2001/0502/sys/src/9/bitsy/main.c /n/emeliedump/2001/0529/sys/src/9/bitsy/main.c 191,192c kstrdup(&eve, ""); kstrdup(&p->text, "*init*"); kstrdup(&p->user, eve); . 92c up->dot = cclone(up->slash); . ## diffname bitsy/main.c 2001/0601 ## diff -e /n/emeliedump/2001/0529/sys/src/9/bitsy/main.c /n/emeliedump/2001/0601/sys/src/9/bitsy/main.c 38c sa1110_uartsetup(1); . ## diffname bitsy/main.c 2001/0618 ## diff -e /n/emeliedump/2001/0601/sys/src/9/bitsy/main.c /n/emeliedump/2001/0618/sys/src/9/bitsy/main.c 397a /* reset controller */ resetregs = mapspecial(RESETREGS, 32); . 364a ResetRegs *resetregs; OSTimerRegs *timerregs = (OSTimerRegs*)OSTIMERREGS; . 39a powerinit(); . ## diffname bitsy/main.c 2001/0619 ## diff -e /n/emeliedump/2001/0618/sys/src/9/bitsy/main.c /n/emeliedump/2001/0619/sys/src/9/bitsy/main.c 367d ## diffname bitsy/main.c 2001/0620 ## diff -e /n/emeliedump/2001/0619/sys/src/9/bitsy/main.c /n/emeliedump/2001/0620/sys/src/9/bitsy/main.c 106a kproc("power", powerkproc, 0); . 51a powerinit(); . 40d ## diffname bitsy/main.c 2001/0810 ## diff -e /n/emeliedump/2001/0620/sys/src/9/bitsy/main.c /n/emeliedump/2001/0810/sys/src/9/bitsy/main.c 437a delay(50); . 431a delay(50); . 428a audioamppower(int on) { egpiobits(EGPIO_audio_power, on); delay(50); } void audioicpower(int on) { egpiobits(EGPIO_audio_ic_power, on); delay(50); } void . 425a delay(50); . 39d ## diffname bitsy/main.c 2002/0109 ## diff -e /n/emeliedump/2001/0810/sys/src/9/bitsy/main.c /n/emeliedump/2002/0109/sys/src/9/bitsy/main.c 102c ksetenv("service", "terminal", 0); . 100c ksetenv("service", "cpu", 0); . 97,98c ksetenv("terminal", "bitsy", 0); ksetenv("cputype", "arm", 0); . 53a /* need to do better */ void reboot(void*, void*, ulong) { exit(0); } . ## diffname bitsy/main.c 2002/0217 ## diff -e /n/emeliedump/2002/0109/sys/src/9/bitsy/main.c /n/emeliedump/2002/0217/sys/src/9/bitsy/main.c 31a quotefmtinstall(); . ## diffname bitsy/main.c 2002/1112 ## diff -e /n/emeliedump/2002/0217/sys/src/9/bitsy/main.c /n/emeliedump/2002/1112/sys/src/9/bitsy/main.c 524a } char* getconf(char*) { return nil; . 411c resetregs = mapspecial(RESETREGS, sizeof(ResetRegs)); . 408c memconfregs = mapspecial(MEMCONFREGS, sizeof(MemConfRegs)); . 405c powerregs = mapspecial(POWERREGS, sizeof(PowerRegs)); . 402c ppcregs = mapspecial(PPCREGS, sizeof(PPCregs)); . 399c egpioreg = mapspecial(EGPIOREGS, sizeof(ulong)); . 384c gpioregs = mapspecial(GPIOREGS, sizeof(GPIOregs)); . ## diffname bitsy/main.c 2002/1130 ## diff -e /n/emeliedump/2002/1112/sys/src/9/bitsy/main.c /n/emeliedump/2002/1130/sys/src/9/bitsy/main.c 148c bootpath = pusharg("/boot/boot"); .