Plan 9 from Bell Labs’s /usr/web/sources/extra/9hist/bitsy/main.c

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


## 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");
.

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.