~kris/9p

9hist

7a0c9a6ebe25857f0855a7d43adf24c6c5723a9b — David du Colombier 35 years ago b7580c6
Plan 9 from Bell Labs 1991-07-10
M gnot/clock.c => gnot/clock.c +5 -2
@@ 41,7 41,10 @@ clock(Ureg *ur)
			else
				sched();
		}
		if(u->nnote && (ur->sr&SUPER)==0)
			notify(ur);
		if((ur->sr&SUPER) == 0){
			(*(ulong*)(USTKTOP-BY2WD)) += TK2MS(1);	/* profiling clock */
			if(u->nnote)
				notify(ur);
		}
	}
}

M gnot/fault68020.c => gnot/fault68020.c +1 -1
@@ 89,7 89,7 @@ fault68020(Ureg *ur, FFrame *f)
	if(fault(addr, read) < 0){
		if(user){
			pprint("user %s error addr=0x%lux\n", read? "read" : "write", badvaddr);
			pprint("status=0x%lux pc=0x%lux sp=0x%lux\n", ur->sr, ur->pc, ur->sp);
			pprint("status=0x%lux pc=0x%lux sp=0x%lux\n", ur->sr, ur->pc, ur->usp);
			pexit("Suicide", 0);
		}
		u->p->state = MMUing;

M gnot/main.c => gnot/main.c +0 -66
@@ 203,72 203,6 @@ exit(void)
	firmware();
}

/*
 * Insert new into list after where
 */
void
insert(List **head, List *where, List *new)
{
	if(where == 0){
		new->next = *head;
		*head = new;
	}else{
		new->next = where->next;
		where->next = new;
	}
		
}

/*
 * Insert new into list at end
 */
void
append(List **head, List *new)
{
	List *where;

	where = *head;
	if(where == 0)
		*head = new;
	else{
		while(where->next)
			where = where->next;
		where->next = new;
	}
	new->next = 0;
}

/*
 * Delete old from list
 */
void
delete0(List **head, List *old)
{
	List *l;

	l = *head;
	if(l == old){
		*head = old->next;
		return;
	}
	while(l->next != old)
		l = l->next;
	l->next = old->next;
}

/*
 * Delete old from list.  where->next is known to be old.
 */
void
delete(List **head, List *where, List *old)
{
	if(where == 0){
		*head = old->next;
		return;
	}
	where->next = old->next;
}

banksize(int base)
{
	ulong va;

M gnot/screen.c => gnot/screen.c +2 -5
@@ 11,9 11,6 @@
#include	<gnot.h>
#include	"screen.h"

/* gnot screen.h defines gbitblt to use balu; doesn't work here */
#undef gbitblt

#define	MINX	8

extern	GFont	defont0;


@@ 43,7 40,7 @@ screeninit(void)
	if(*(uchar*)MOUSE & (1<<4))
		gscreen.ldepth = 1;
	defont = &defont0;	/* save space; let bitblt do the conversion work */
	gbitblt(&gscreen, Pt(0, 0), &gscreen, gscreen.r, 0);
	kbitblt(&gscreen, Pt(0, 0), &gscreen, gscreen.r, 0);
	out.pos.x = MINX;
	out.pos.y = 0;
	out.bwid = defont0.info[' '].width;


@@ 60,7 57,7 @@ screenputc(int c)
		out.pos.y += defont0.height;
		if(out.pos.y > gscreen.r.max.y-defont0.height)
			out.pos.y = gscreen.r.min.y;
		gbitblt(&gscreen, Pt(0, out.pos.y), &gscreen,
		kbitblt(&gscreen, Pt(0, out.pos.y), &gscreen,
		    Rect(0, out.pos.y, gscreen.r.max.x, out.pos.y+2*defont0.height), 0);
	}else if(c == '\t'){
		out.pos.x += (8-((out.pos.x-MINX)/out.bwid&7))*out.bwid;

M gnot/screen.h => gnot/screen.h +5 -1
@@ 28,4 28,8 @@ extern Cursorinfo	cursor;

extern void		mouseupdate(int);

#define gbitblt(d,p,s,r,f) balubitblt(d,p,s,r,f)
/*
 * kernel mustn't use balu; user (/dev/bitblt) can
 */
#define kbitblt 	gbitblt
#define	ubitblt		balubitblt

M gnot/trap.c => gnot/trap.c +1 -24
@@ 207,7 207,7 @@ noted(Ureg *ur)
}

#undef	CHDIR	/* BUG */
#include "/sys/src/libc/680209sys/sys.h"
#include "/sys/src/libc/9syscall/sys.h"

typedef long Syscall(ulong*);
Syscall	sysr1, sysfork, sysexec, sysgetpid, syssleep, sysexits, sysdeath, syswait;


@@ 329,26 329,3 @@ execpc(ulong entry)
{
	((Ureg*)UREGADDR)->pc = entry;
}

#include "errstr.h"

void
error(int code)
{
	strncpy(u->error, errstrtab[code], ERRLEN);
	nexterror();
}

void
errors(char *err)
{
	strncpy(u->error, err, ERRLEN);
	nexterror();
}


void
nexterror(void)
{
	gotolabel(&u->errlab[--u->nerrlab]);
}

A pc/fault386.c => pc/fault386.c +18 -0
@@ 0,0 1,18 @@
#include	"u.h"
#include	"lib.h"
#include	"mem.h"
#include	"dat.h"
#include	"fns.h"
#include	"ureg.h"

void
faultinit(void)
{
	setvec(Faultvec, fault386, SEGTG);
}

void
fault386(Ureg *ur)
{
	panic("fault");
}

M pc/fns.h => pc/fns.h +3 -0
@@ 3,6 3,7 @@
void	clock(Ureg*);
void	clockinit(void);
void	delay(int);
void	fault386(Ureg*);
void	floppyinit(void);
void	floppyintr(Ureg*);
void	floppystart(int);


@@ 33,6 34,7 @@ void	intr20(void);
void	intr21(void);
void	intr22(void);
void	intr23(void);
void	intr64(void);
void	intrbad(void);
void	kbdinit(void);
void	kbdintr(Ureg*);


@@ 48,3 50,4 @@ void	setvec(int, void (*)(Ureg*), int);
void	systrap(void);
void	trapinit(void);
int	tas(Lock*);
#define	waserror()	(u->nerrlab++, setlabel(&u->errlab[u->nerrlab-1]))

M pc/io.h => pc/io.h +1 -0
@@ 3,6 3,7 @@
 */
enum
{
	Faultvec=	14,		/* page fault */
	Int0vec=	16,		/* first interrupt vector used by the 8259 */
	Clockvec=	Int0vec+0,	/* clock interrupts */
	Kbdvec=		Int0vec+1,	/* keyboard interrupts */

M pc/l.s => pc/l.s +70 -8
@@ 24,7 24,7 @@ TEXT	origin(SB),$0
	MOVSL
/*	JMPFAR	00:$lowcore(SB) /**/
	 BYTE	$0xEA
	 WORD	$lowcore(SB)
	 WORD	$lowcore-KZERO(SB)
	 WORD	$0

TEXT	lowcore(SB),$0


@@ 56,7 56,7 @@ TEXT	lowcore(SB),$0
	 BYTE	$0x0f
	 BYTE	$0x01
	 BYTE	$0x16
	 WORD	$tgdtptr(SB)
	 WORD	$tgdtptr-KZERO(SB)
	MOVL	CR0,AX
	ORL	$1,AX
	MOVL	AX,CR0


@@ 82,7 82,7 @@ flush:

/*	JMPFAR	SELECTOR(2, SELGDT, 0):$mode32bit(SB) /**/
	 BYTE	$0xEA
	 WORD	$mode32bit(SB)
	 WORD	$mode32bit-KZERO(SB)
	 WORD	$SELECTOR(2, SELGDT, 0)

TEXT	mode32bit(SB),$0


@@ 90,17 90,49 @@ TEXT	mode32bit(SB),$0
	/*
	 * Clear BSS
	 */
	LEAL	edata(SB),SI
	LEAL	edata+4(SB),DI
	LEAL	edata-KZERO(SB),SI
	MOVL	SI,DI
	ADDL	$4,DI
	MOVL	$0,AX
	MOVL	AX,(SI)
	LEAL	end(SB),CX
	LEAL	end-KZERO(SB),CX
	SUBL	DI,CX
	SHRL	$2,CX
	REP
	MOVSL

	/*
	 *  make a bottom level page table page that maps the first
	 *  4 meg of physical memory
	 */
	LEAL	tpt-KZERO(SB),AX	/* get phys addr of temporary page table */
	ADDL	$(BY2PG-1),AX		/* must be page alligned */
	ANDL	$(~(BY2PG-1)),AX	/* ... */
	MOVL	$1024,CX		/* pte's per page */
	MOVL	$(((1024-1)<<12)|PTEVALID|PTEKERNEL|PTEWRITE),BX
setpte:
	MOVL	BX,-4(AX)(CX*4)
	SUBL	$(1<<12),BX
	LOOP	setpte

	/*
	 *  make a top level page table page that maps the first
	 *  4 meg of memory to 0 thru 4meg and to KZERO thru KZERO+4meg
	 */
	MOVL	AX,BX
	ADDL	$BY2PG,AX
	MOVL	BX,0(AX)
	MOVL	BX,((KZERO>>22)&(BY2PG-1))(AX)

	/*
	 *  point processor to top level page & turn on paging
	 */
	MOVL	AX,CR3
	MOVL	CR0,AX
	ORL	$1,AX
	MOVL	AX,CR0

	/*
	 *  stack and mach
	 */
	MOVL	$mach0(SB),SP


@@ 117,6 149,7 @@ loop:
GLOBL	mach0+0(SB), $MACHSIZE
GLOBL	u(SB), $4
GLOBL	m(SB), $4
GLOBL	tpt(SB), $(BY2PG*3)

/*
 *  gdt to get us to 32-bit/segmented/unpaged mode


@@ 141,7 174,7 @@ TEXT	tgdt(SB),$0
TEXT	tgdtptr(SB),$0

	WORD	$(3*8)
	LONG	$tgdt(SB)
	LONG	$tgdt-KZERO(SB)

/*
 *  input a byte


@@ 289,6 322,10 @@ TEXT	intr23(SB),$0
	PUSHL	$0
	PUSHL	$23
	JMP	intrcommon
TEXT	intr64(SB),$0
	PUSHL	$0
	PUSHL	$64
	JMP	intrcommon
TEXT	intrbad(SB),$0
	PUSHL	$0
	PUSHL	$0x1ff


@@ 324,6 361,8 @@ intrscommon:
 *  turn interrupts and traps on
 */
TEXT	spllo(SB),$0
	PUSHFL
	POPL	AX
	STI
	RET



@@ 331,6 370,8 @@ TEXT	spllo(SB),$0
 *  turn interrupts and traps off
 */
TEXT	splhi(SB),$0
	PUSHFL
	POPL	AX
	CLI
	RET



@@ 338,10 379,31 @@ TEXT	splhi(SB),$0
 *  set interrupt level
 */
TEXT	splx(SB),$0
	MOVL	s+0(FP),AX
	PUSHL	AX
	POPFL
	RET

/*
 *	
 *  do nothing whatsoever till interrupt happens
 */
TEXT	idle(SB),$0
	HLT
	RET

/*
 *  label consists of a stack pointer and a PC
 */
TEXT	gotolabel(SB),$0
	MOVL	l+0(FP),AX
	MOVL	0(AX),SP	/* restore sp */
	MOVL	4(AX),AX	/* put return pc on the stack */
	MOVL	AX,0(SP)
	RET

TEXT	setlabel(SB),$0
	MOVL	l+0(FP),AX
	MOVL	SP,0(AX)	/* store sp */
	MOVL	0(SP),BX	/* store return pc */
	MOVL	BX,4(AX)
	RET

M pc/mem.h => pc/mem.h +12 -1
@@ 96,8 96,19 @@
#define SEGD	(1<<22)		/* default 1==32bit (for code) */

/*
 *  virtual MMU entries
 *  virtual MMU
 */
#define PTEMAPMEM	(1024*1024)	/* ??? */	
#define SEGMAPSIZE	16		/* ??? */
#define	PTEPERTAB	(PTEMAPMEM/BY2PG)	/* ??? */

/*
 *  physical MMU
 */
#define PPN(x)		((x)&~(BY2PG-1))
#define	PTEVALID	(1<<0)
#define	PTEUNCACHED	0		/* everything is uncached */
#define PTEWRITE	(1<<1)
#define	PTERONLY	(0<<1)
#define	PTEKERNEL	(0<<2)
#define	PTEUSER		(1<<2)

M pc/trap.c => pc/trap.c +66 -27
@@ 29,10 29,10 @@ Segdesc ilt[256];
void	(*ivec[256])(void*);

void
sethvec(int v, void (*r)(void), int type)
sethvec(int v, void (*r)(void), int type, int pri)
{
	ilt[v].d0 = ((ulong)r)&0xFFFF|(KESEL<<16);
	ilt[v].d1 = ((ulong)r)&0xFFFF0000|SEGP|SEGPL(3)|type;
	ilt[v].d1 = ((ulong)r)&0xFFFF0000|SEGP|SEGPL(pri)|type;
}

void


@@ 62,36 62,42 @@ trapinit(void)
	/*
	 *  set the standard traps
	 */
	sethvec(0, intr0, SEGTG);
	sethvec(1, intr1, SEGTG);
	sethvec(2, intr2, SEGTG);
	sethvec(3, intr3, SEGTG);
	sethvec(4, intr4, SEGTG);
	sethvec(5, intr5, SEGTG);
	sethvec(6, intr6, SEGTG);
	sethvec(7, intr7, SEGTG);
	sethvec(8, intr8, SEGTG);
	sethvec(9, intr9, SEGTG);
	sethvec(10, intr10, SEGTG);
	sethvec(11, intr11, SEGTG);
	sethvec(12, intr12, SEGTG);
	sethvec(13, intr13, SEGTG);
	sethvec(14, intr14, SEGTG);
	sethvec(15, intr15, SEGTG);
	sethvec(16, intr16, SEGTG);
	sethvec(17, intr17, SEGTG);
	sethvec(18, intr18, SEGTG);
	sethvec(19, intr19, SEGTG);
	sethvec(20, intr20, SEGTG);
	sethvec(21, intr21, SEGTG);
	sethvec(22, intr22, SEGTG);
	sethvec(23, intr23, SEGTG);
	sethvec(0, intr0, SEGTG, 0);
	sethvec(1, intr1, SEGTG, 0);
	sethvec(2, intr2, SEGTG, 0);
	sethvec(3, intr3, SEGTG, 0);
	sethvec(4, intr4, SEGTG, 0);
	sethvec(5, intr5, SEGTG, 0);
	sethvec(6, intr6, SEGTG, 0);
	sethvec(7, intr7, SEGTG, 0);
	sethvec(8, intr8, SEGTG, 0);
	sethvec(9, intr9, SEGTG, 0);
	sethvec(10, intr10, SEGTG, 0);
	sethvec(11, intr11, SEGTG, 0);
	sethvec(12, intr12, SEGTG, 0);
	sethvec(13, intr13, SEGTG, 0);
	sethvec(14, intr14, SEGTG, 0);
	sethvec(15, intr15, SEGTG, 0);
	sethvec(16, intr16, SEGTG, 0);
	sethvec(17, intr17, SEGTG, 0);
	sethvec(18, intr18, SEGTG, 0);
	sethvec(19, intr19, SEGTG, 0);
	sethvec(20, intr20, SEGTG, 0);
	sethvec(21, intr21, SEGTG, 0);
	sethvec(22, intr22, SEGTG, 0);
	sethvec(23, intr23, SEGTG, 0);

	/*
	 *  set all others to unknown
	 */
	for(i = 24; i < 256; i++)
		sethvec(i, intrbad, SEGIG);
		sethvec(i, intrbad, SEGIG, 0);

	/*
	 *  system calls
	 */
	sethvec(64, intr64, SEGTG, 3);
/*	setvec(64, syscall, SEGTG);	/**/

	/*
	 *  tell the hardware where the table is (and how long)


@@ 114,6 120,7 @@ trapinit(void)
/*
 *  All traps
 */
void
trap(Ureg *ur)
{
	if(ur->trap>=256 || ivec[ur->trap] == 0)


@@ 130,3 137,35 @@ trap(Ureg *ur)
	 */
	outb(Int0ctl, EOI);
}

/*
 *  system calls
 */
long
syscall(Ureg *ur)
{
	panic("syscall");
}

#include "errstr.h"

void
error(int code)
{
	strncpy(u->error, errstrtab[code], ERRLEN);
	nexterror();
}

void
errors(char *err)
{
	strncpy(u->error, err, ERRLEN);
	nexterror();
}


void
nexterror(void)
{
	gotolabel(&u->errlab[--u->nerrlab]);
}

M port/alarm.c => port/alarm.c +30 -0
@@ 175,3 175,33 @@ done:

	return TK2MS(old);			
}

/*
 * Insert new into list after where
 */
void
insert(List **head, List *where, List *new)
{
	if(where == 0){
		new->next = *head;
		*head = new;
	}else{
		new->next = where->next;
		where->next = new;
	}
		
}

/*
 * Delete old from list.  where->next is known to be old.
 */
void
delete(List **head, List *where, List *old)
{
	if(where == 0){
		*head = old->next;
		return;
	}
	where->next = old->next;
}


M port/devbit.c => port/devbit.c +5 -5
@@ 645,7 645,7 @@ bitwrite(Chan *c, void *va, long n, ulong offset)
				cursoroff(1);
				isoff = 1;
			}
			gbitblt(dst, pt, src, rect, fc);
			ubitblt(dst, pt, src, rect, fc);
			m -= 31;
			p += 31;
			break;


@@ 1152,10 1152,10 @@ cursoron(int dolock)
		cursor.r.min = mouse.xy;
		cursor.r.max = add(mouse.xy, Pt(16, 16));
		cursor.r = raddp(cursor.r, cursor.offset);
		gbitblt(&cursorback, Pt(0, 0), &gscreen, cursor.r, S);
		gbitblt(&gscreen, add(mouse.xy, cursor.offset),
		kbitblt(&cursorback, Pt(0, 0), &gscreen, cursor.r, S);
		kbitblt(&gscreen, add(mouse.xy, cursor.offset),
			&clr, Rect(0, 0, 16, 16), flipping? flipD[D&~S] : D&~S);
		gbitblt(&gscreen, add(mouse.xy, cursor.offset),
		kbitblt(&gscreen, add(mouse.xy, cursor.offset),
			&set, Rect(0, 0, 16, 16), flipping? flipD[S|D] : S|D);
	}
	if(dolock)


@@ 1168,7 1168,7 @@ cursoroff(int dolock)
	if(dolock)
		lock(&cursor);
	if(--cursor.visible == 0)
		gbitblt(&gscreen, cursor.r.min, &cursorback, Rect(0, 0, 16, 16), S);
		kbitblt(&gscreen, cursor.r.min, &cursorback, Rect(0, 0, 16, 16), S);
	if(dolock)
		unlock(&cursor);
}

M port/pgrp.c => port/pgrp.c +3 -2
@@ 189,9 189,10 @@ dupfgrp(Fgrp *f)
void
resrcwait(char *reason)
{
	print("%s\n", reason);
	if(reason)
		print("%s\n", reason);
	if(u == 0)
		panic("resched");
		panic("resrcwait");
	u->p->state = Wakeme;
	alarm(1000, wakeme, u->p);
	sched();

M port/proc.c => port/proc.c +23 -0
@@ 726,3 726,26 @@ procctl(Proc *p)
		return;
	}
}

#include "errstr.h"

void
error(int code)
{
	strncpy(u->error, errstrtab[code], ERRLEN);
	nexterror();
}

void
errors(char *err)
{
	strncpy(u->error, err, ERRLEN);
	nexterror();
}

void
nexterror(void)
{
	gotolabel(&u->errlab[--u->nerrlab]);
}


M port/segment.c => port/segment.c +1 -1
@@ 214,7 214,7 @@ attachimage(int type, Chan *c, ulong base, ulong len)
	while(!(i = imagealloc.free)) {
		unlock(&imagealloc);
		imagereclaim();
		resrcwait("no images");
		resrcwait(0);
		lock(&imagealloc);
	}


M port/sysproc.c => port/sysproc.c +2 -2
@@ 175,7 175,7 @@ sysexec(ulong *arg)
	/*
	 * Args: pass 1: count
	 */
	nbytes = 0;
	nbytes = BY2WD;		/* hole for profiling clock at top of stack */
	nargs = 0;
	if(indir){
		argp = progarg;


@@ 298,7 298,7 @@ sysexec(ulong *arg)
	u->notified = 0;
	procsetup(p);
	unlock(&p->debug);
	return 0;
	return (USTKTOP-BY2WD);	/* address of user-level clock */
}

int

M power/boot.h => power/boot.h +529 -525
@@ 1,6 1,6 @@
ulong bootcode[]={
	0x000000407,
	0x000005588,
	0x000005590,
	0x0000007d0,
	0x000001190,
	0x000000000,


@@ 11,54 11,55 @@ ulong bootcode[]={
	0x0afbf0000,
	0x03c1e0000,
	0x037deeffe,
	0x0afc180d2,
	0x08fa10014,
	0x023a20018,
	0x0afa10004,
	0x00c000415,
	0x00c000416,
	0x0afa20008,
	0x00c00093c,
	0x00c00093d,
	0x0afa10004,
	0x008000411,
	0x008000412,
	0x000000027,
	0x023bdffe0,
	0x0afbf0000,
	0x0afa00018,
	0x023c282e1,
	0x023c282e5,
	0x0afa20004,
	0x00c000a73,
	0x00c000a74,
	0x0afa00008,
	0x023c382e9,
	0x023c382ed,
	0x0afa30004,
	0x020020001,
	0x00c000a73,
	0x00c000a74,
	0x0afa20008,
	0x023c382f1,
	0x023c382f5,
	0x0afa30004,
	0x020020001,
	0x00c000a73,
	0x00c000a74,
	0x0afa20008,
	0x023c282f9,
	0x023c282fd,
	0x0afa20004,
	0x020040001,
	0x0afa40008,
	0x0200201b6,
	0x00c000a5f,
	0x00c000a60,
	0x0afa2000c,
	0x004210004,
	0x0afa1001c,
	0x023c38304,
	0x00c0008d0,
	0x023c38308,
	0x00c0008d1,
	0x0afa30004,
	0x08fa20028,
	0x000000027,
	0x08c420000,
	0x00c000a3b,
	0x00c000a3c,
	0x0afa20004,
	0x0afa10014,
	0x08fa40028,
	0x000000027,
	0x08c840000,
	0x00c000a3b,
	0x00c000a3c,
	0x0afa40004,
	0x0afa10010,
	0x08fa4001c,


@@ 70,48 71,48 @@ ulong bootcode[]={
	0x000000027,
	0x0afa30008,
	0x08fa40010,
	0x00c000a87,
	0x00c000a88,
	0x0afa4000c,
	0x08fa30014,
	0x000000027,
	0x010230004,
	0x000000027,
	0x023c2830c,
	0x00c0008d0,
	0x023c28310,
	0x00c0008d1,
	0x0afa20004,
	0x08fa3001c,
	0x00c000a5b,
	0x00c000a5c,
	0x0afa30004,
	0x023c38314,
	0x023c38318,
	0x0afa30004,
	0x020040001,
	0x0afa40008,
	0x0200301b6,
	0x00c000a5f,
	0x00c000a60,
	0x0afa3000c,
	0x004210004,
	0x0afa1001c,
	0x023c28320,
	0x00c0008d0,
	0x023c28324,
	0x00c0008d1,
	0x0afa20004,
	0x023c48336,
	0x00c000a3b,
	0x023c4833a,
	0x00c000a3c,
	0x0afa40004,
	0x0afa10014,
	0x08fa4001c,
	0x023c28329,
	0x023c2832d,
	0x0afa40004,
	0x0afa20008,
	0x08fa40014,
	0x00c000a87,
	0x00c000a88,
	0x0afa4000c,
	0x004210004,
	0x000000027,
	0x023c28343,
	0x00c0008d0,
	0x023c28347,
	0x00c0008d1,
	0x0afa20004,
	0x08fa3001c,
	0x00c000a5b,
	0x00c000a5c,
	0x0afa30004,
	0x08fa20028,
	0x000000027,


@@ 138,17 139,17 @@ ulong bootcode[]={
	0x0afa30018,
	0x024a50004,
	0x0afa50028,
	0x008000479,
	0x00800047a,
	0x024c6ffff,
	0x023c28026,
	0x0afa20004,
	0x023c3834c,
	0x00c0009fc,
	0x023c38350,
	0x00c0009fd,
	0x0afa30008,
	0x023c298d2,
	0x0afa20004,
	0x023c38357,
	0x00c0009fc,
	0x023c3835b,
	0x00c0009fd,
	0x0afa30008,
	0x08fa60028,
	0x08fa20024,


@@ 159,54 160,54 @@ ulong bootcode[]={
	0x010430019,
	0x000000027,
	0x08fa20018,
	0x00c000752,
	0x00c000753,
	0x0afa20004,
	0x08fc58006,
	0x000000027,
	0x018a00003,
	0x000000027,
	0x00c000a5b,
	0x00c000a5c,
	0x0afa50004,
	0x08fc3801a,
	0x000000027,
	0x018600004,
	0x000000027,
	0x08fc2801a,
	0x00c000a5b,
	0x00c000a5c,
	0x0afa20004,
	0x0afc0801a,
	0x0afc08006,
	0x020020001,
	0x00c000752,
	0x00c000753,
	0x0afa20004,
	0x08fc58006,
	0x0080004a4,
	0x0080004a5,
	0x000000027,
	0x0afa50004,
	0x08cc30000,
	0x00c0009fc,
	0x00c0009fd,
	0x0afa30008,
	0x023c28026,
	0x0afa20004,
	0x08fa30028,
	0x000000027,
	0x08c630004,
	0x00c0009fc,
	0x00c0009fd,
	0x0afa30008,
	0x00800049f,
	0x0080004a0,
	0x000000027,
	0x0afa50004,
	0x08cc30000,
	0x00c0009fc,
	0x00c0009fd,
	0x0afa30008,
	0x00800049f,
	0x0080004a0,
	0x000000027,
	0x023bdfff4,
	0x0afbf0000,
	0x023c3835f,
	0x023c38363,
	0x0afa30004,
	0x020020002,
	0x00c000a73,
	0x00c000a74,
	0x0afa20008,
	0x08fa20000,
	0x000000027,


@@ 224,7 225,7 @@ ulong bootcode[]={
	0x000000027,
	0x0afa30004,
	0x08fa40028,
	0x00c0009e9,
	0x00c0009ea,
	0x0afa40008,
	0x08fa50014,
	0x0142000a5,


@@ 234,8 235,8 @@ ulong bootcode[]={
	0x000000027,
	0x014400008,
	0x000000027,
	0x023c38367,
	0x00c000967,
	0x023c3836b,
	0x00c000968,
	0x0afa30004,
	0x08fa20000,
	0x023bd0024,


@@ 245,15 246,15 @@ ulong bootcode[]={
	0x000000027,
	0x014400048,
	0x000000027,
	0x023c28395,
	0x023c28399,
	0x0afa20004,
	0x020040002,
	0x00c000a73,
	0x00c000a74,
	0x0afa40008,
	0x004210008,
	0x000000027,
	0x023c3839e,
	0x00c0008be,
	0x023c383a2,
	0x00c0008bf,
	0x0afa30004,
	0x08fa20000,
	0x023bd0024,


@@ 261,54 262,54 @@ ulong bootcode[]={
	0x02001ffff,
	0x0afa10020,
	0x0afa10004,
	0x023c483af,
	0x023c483b3,
	0x0afa40008,
	0x02003000d,
	0x00c000a87,
	0x00c000a88,
	0x0afa3000c,
	0x08fa50020,
	0x00421000a,
	0x000000027,
	0x00c000a5b,
	0x00c000a5c,
	0x0afa50004,
	0x023c383bd,
	0x00c0008be,
	0x023c383c1,
	0x00c0008bf,
	0x0afa30004,
	0x08fa20000,
	0x023bd0024,
	0x000400008,
	0x02001ffff,
	0x0afa50004,
	0x023c483cb,
	0x023c483cf,
	0x0afa40008,
	0x02003000c,
	0x00c000a87,
	0x00c000a88,
	0x0afa3000c,
	0x08fa50020,
	0x00421000a,
	0x000000027,
	0x00c000a5b,
	0x00c000a5c,
	0x0afa50004,
	0x023c383d8,
	0x00c0008be,
	0x023c383dc,
	0x00c0008bf,
	0x0afa30004,
	0x08fa20000,
	0x023bd0024,
	0x000400008,
	0x02001ffff,
	0x0afa50004,
	0x023c483e5,
	0x023c483e9,
	0x0afa40008,
	0x02003000c,
	0x00c000a87,
	0x00c000a88,
	0x0afa3000c,
	0x00421000b,
	0x000000027,
	0x08fa20020,
	0x00c000a5b,
	0x00c000a5c,
	0x0afa20004,
	0x023c383f2,
	0x00c0008be,
	0x023c383f6,
	0x00c0008bf,
	0x0afa30004,
	0x08fa20000,
	0x023bd0024,


@@ 316,33 317,33 @@ ulong bootcode[]={
	0x02001ffff,
	0x020020001,
	0x0afc28042,
	0x023c283ff,
	0x023c28403,
	0x0afa20004,
	0x020040002,
	0x00c000a73,
	0x00c000a74,
	0x0afa40008,
	0x004210008,
	0x0afa10018,
	0x023c3840e,
	0x00c0008be,
	0x023c38412,
	0x00c0008bf,
	0x0afa30004,
	0x08fa20000,
	0x023bd0024,
	0x000400008,
	0x02001ffff,
	0x023c38425,
	0x023c38429,
	0x0afa30004,
	0x020040002,
	0x00c000a73,
	0x00c000a74,
	0x0afa40008,
	0x00421000c,
	0x0afa1001c,
	0x08fa20018,
	0x00c000a5b,
	0x00c000a5c,
	0x0afa20004,
	0x023c28433,
	0x023c28437,
	0x0afa20004,
	0x00c0008be,
	0x00c0008bf,
	0x02003ffff,
	0x08fa20000,
	0x023bd0024,


@@ 351,7 352,7 @@ ulong bootcode[]={
	0x08fa40014,
	0x000000027,
	0x08c840004,
	0x00c000a3b,
	0x00c000a3c,
	0x0afa40004,
	0x0afa10010,
	0x08fa4001c,


@@ 363,37 364,37 @@ ulong bootcode[]={
	0x000000027,
	0x0afa20008,
	0x08fa40010,
	0x00c000a87,
	0x00c000a88,
	0x0afa4000c,
	0x004210012,
	0x000000027,
	0x08fa2001c,
	0x00c000a5b,
	0x00c000a5c,
	0x0afa20004,
	0x08fa30018,
	0x00c000a5b,
	0x00c000a5c,
	0x0afa30004,
	0x08fa30014,
	0x000000027,
	0x08c630004,
	0x000000027,
	0x0afa30004,
	0x00c0008be,
	0x00c0008bf,
	0x02002ffff,
	0x08fa20000,
	0x023bd0024,
	0x000400008,
	0x02001ffff,
	0x023c28449,
	0x023c2844d,
	0x0afc28022,
	0x023c3844f,
	0x0afc3812a,
	0x023c38453,
	0x0afc3812e,
	0x08fa10018,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0024,
	0x0080004d8,
	0x0080004d9,
	0x024a50008,
	0x023bdffa8,
	0x0afbf0000,


@@ 401,51 402,51 @@ ulong bootcode[]={
	0x000000027,
	0x014400038,
	0x000000027,
	0x023c28457,
	0x023c2845b,
	0x0afa20004,
	0x020040002,
	0x00c000a73,
	0x00c000a74,
	0x0afa40008,
	0x004210008,
	0x0afc1801e,
	0x023c3845e,
	0x00c0008be,
	0x023c38462,
	0x00c0008bf,
	0x0afa30004,
	0x08fa20000,
	0x023bd0058,
	0x000400008,
	0x02001ffff,
	0x0afa10004,
	0x023c4846d,
	0x023c48471,
	0x0afa40008,
	0x02003000a,
	0x00c000a87,
	0x00c000a88,
	0x0afa3000c,
	0x08fc5801e,
	0x00421000a,
	0x000000027,
	0x00c000a5b,
	0x00c000a5c,
	0x0afa50004,
	0x023c38478,
	0x00c0008be,
	0x023c3847c,
	0x00c0008bf,
	0x0afa30004,
	0x08fa20000,
	0x023bd0058,
	0x000400008,
	0x02001ffff,
	0x0afa50004,
	0x023c48483,
	0x023c48487,
	0x0afa40008,
	0x020030017,
	0x00c000a87,
	0x00c000a88,
	0x0afa3000c,
	0x00421000b,
	0x000000027,
	0x08fc2801e,
	0x00c000a5b,
	0x00c000a5c,
	0x0afa20004,
	0x023c3849b,
	0x00c0008be,
	0x023c3849f,
	0x00c0008bf,
	0x0afa30004,
	0x08fa20000,
	0x023bd0058,


@@ 454,35 455,35 @@ ulong bootcode[]={
	0x020020001,
	0x0afc280ce,
	0x0200307d0,
	0x00c000a7b,
	0x00c000a7c,
	0x0afa30004,
	0x023c384b3,
	0x023c384b7,
	0x0afa30004,
	0x020040002,
	0x00c000a73,
	0x00c000a74,
	0x0afa40008,
	0x004210008,
	0x0afa10054,
	0x023c284bf,
	0x00c0008be,
	0x023c284c3,
	0x00c0008bf,
	0x0afa20004,
	0x08fa20000,
	0x023bd0058,
	0x000400008,
	0x02001ffff,
	0x023c284d3,
	0x023c284d7,
	0x0afa20004,
	0x020040002,
	0x00c000a73,
	0x00c000a74,
	0x0afa40008,
	0x00421000c,
	0x0afc1801a,
	0x08fa30054,
	0x00c000a5b,
	0x00c000a5c,
	0x0afa30004,
	0x023c384de,
	0x023c384e2,
	0x0afa30004,
	0x00c0008be,
	0x00c0008bf,
	0x02002ffff,
	0x08fa20000,
	0x023bd0058,


@@ 490,13 491,13 @@ ulong bootcode[]={
	0x02001ffff,
	0x023a20014,
	0x0afa20004,
	0x023c384f1,
	0x023c384f5,
	0x0afa30008,
	0x08fa2005c,
	0x00c0009b1,
	0x00c0009b2,
	0x0afa2000c,
	0x023a40014,
	0x00c000a3b,
	0x00c000a3c,
	0x0afa40004,
	0x0afa10010,
	0x08fc4801a,


@@ 504,29 505,29 @@ ulong bootcode[]={
	0x0afa40004,
	0x0afa20008,
	0x08fa40010,
	0x00c000a87,
	0x00c000a88,
	0x0afa4000c,
	0x004210010,
	0x000000027,
	0x08fc2801a,
	0x00c000a5b,
	0x00c000a5c,
	0x0afa20004,
	0x08fa30054,
	0x00c000a5b,
	0x00c000a5c,
	0x0afa30004,
	0x02002ffff,
	0x0afc2801a,
	0x023a30014,
	0x00c0008be,
	0x00c0008bf,
	0x0afa30004,
	0x08fa20000,
	0x023bd0058,
	0x000400008,
	0x02001ffff,
	0x023c284fc,
	0x023c28500,
	0x0afc28022,
	0x023c384ff,
	0x0afc3812a,
	0x023c38503,
	0x0afc3812e,
	0x08fa10054,
	0x08fa20000,
	0x000000027,


@@ 535,7 536,7 @@ ulong bootcode[]={
	0x023bdff2c,
	0x0afbf0000,
	0x08fa300d8,
	0x00c00058c,
	0x00c00058d,
	0x0afa30004,
	0x004210005,
	0x000000027,


@@ 544,32 545,32 @@ ulong bootcode[]={
	0x000400008,
	0x02001ffff,
	0x0afa100d0,
	0x00c000672,
	0x00c000673,
	0x0afa10004,
	0x08fa500d0,
	0x014200007,
	0x000000027,
	0x00c000a5b,
	0x00c000a5c,
	0x0afa50004,
	0x08fa20000,
	0x023bd00d4,
	0x000400008,
	0x02001ffff,
	0x0afa50004,
	0x023c48504,
	0x023c48508,
	0x0afa40008,
	0x0afa0000c,
	0x023c28509,
	0x023c2850d,
	0x0afa20010,
	0x023c4850a,
	0x00c000a6f,
	0x023c4850e,
	0x00c000a70,
	0x0afa40014,
	0x004210004,
	0x000000027,
	0x023c2850b,
	0x00c0008d0,
	0x023c2850f,
	0x00c0008d1,
	0x0afa20004,
	0x00c000a6b,
	0x00c000a6c,
	0x000000027,
	0x02003ffff,
	0x01023002f,


@@ 577,7 578,7 @@ ulong bootcode[]={
	0x010200022,
	0x000000027,
	0x023a20018,
	0x00c000a83,
	0x00c000a84,
	0x0afa20004,
	0x083a3002c,
	0x000000027,


@@ 585,50 586,50 @@ ulong bootcode[]={
	0x000000027,
	0x023a20018,
	0x024420014,
	0x00c0008d0,
	0x00c0008d1,
	0x0afa20004,
	0x020030002,
	0x0afa30004,
	0x023c2855b,
	0x00c00098c,
	0x023c2855f,
	0x00c00098d,
	0x0afa20008,
	0x020030bb8,
	0x00c000a7b,
	0x00c000a7c,
	0x0afa30004,
	0x020020002,
	0x0afa20004,
	0x023c3856c,
	0x00c00098c,
	0x023c38570,
	0x00c00098d,
	0x0afa30008,
	0x023c2857b,
	0x023c2857f,
	0x0afa20004,
	0x020030002,
	0x00c000a73,
	0x00c000a74,
	0x0afa30008,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd00d4,
	0x023c38511,
	0x023c38515,
	0x0afa30004,
	0x023c2852a,
	0x023c2852e,
	0x0afa20008,
	0x023c38535,
	0x023c38539,
	0x0afa3000c,
	0x00c000a47,
	0x00c000a48,
	0x0afa00010,
	0x023c28545,
	0x00c0008d0,
	0x023c28549,
	0x00c0008d1,
	0x0afa20004,
	0x023c38556,
	0x00c0008d0,
	0x023c3855a,
	0x00c0008d1,
	0x0afa30004,
	0x008000641,
	0x008000642,
	0x000000027,
	0x023bdffe0,
	0x0afbf0000,
	0x023c28585,
	0x00c000967,
	0x023c28589,
	0x00c000968,
	0x0afa20004,
	0x020030032,
	0x0a3c397d2,


@@ 637,25 638,25 @@ ulong bootcode[]={
	0x023c297d2,
	0x0afa20004,
	0x023c487d2,
	0x00c000ad3,
	0x00c000ad4,
	0x0afa40008,
	0x08fa30024,
	0x023c487d2,
	0x0afa30004,
	0x0afa40008,
	0x0afa1001c,
	0x00c000a87,
	0x00c000a88,
	0x0afa1000c,
	0x08fa5001c,
	0x000000027,
	0x01025000c,
	0x000000027,
	0x023c2858c,
	0x023c28590,
	0x0afa20004,
	0x00c000967,
	0x00c000968,
	0x0afa50008,
	0x023c28594,
	0x00c0008be,
	0x023c28598,
	0x00c0008bf,
	0x0afa20004,
	0x08fa20000,
	0x023bd0020,


@@ 666,12 667,12 @@ ulong bootcode[]={
	0x0afa20004,
	0x0afa40008,
	0x020021000,
	0x00c000a77,
	0x00c000a78,
	0x0afa2000c,
	0x01c200008,
	0x000000027,
	0x023c3859e,
	0x00c0008be,
	0x023c385a2,
	0x00c0008bf,
	0x0afa30004,
	0x08fa20000,
	0x023bd0020,


@@ 680,18 681,18 @@ ulong bootcode[]={
	0x020030002,
	0x014230003,
	0x000000027,
	0x008000696,
	0x008000697,
	0x000000027,
	0x023c387d2,
	0x0afa30004,
	0x023c497d2,
	0x0afa40008,
	0x0afa1001c,
	0x00c000efa,
	0x00c000efb,
	0x0afa1000c,
	0x014200022,
	0x000000027,
	0x023c285a7,
	0x023c285ab,
	0x0afa20004,
	0x08fa3001c,
	0x000000027,


@@ 715,10 716,10 @@ ulong bootcode[]={
	0x000000027,
	0x000031e00,
	0x000031e03,
	0x00c000967,
	0x00c000968,
	0x0afa30018,
	0x023c285ca,
	0x00c0008be,
	0x023c285ce,
	0x00c0008bf,
	0x0afa20004,
	0x08fa20000,
	0x023bd0020,


@@ 728,8 729,8 @@ ulong bootcode[]={
	0x020020033,
	0x010620008,
	0x000000027,
	0x023c385d5,
	0x00c0008be,
	0x023c385d9,
	0x00c0008bf,
	0x0afa30004,
	0x08fa20000,
	0x023bd0020,


@@ 739,15 740,15 @@ ulong bootcode[]={
	0x02003ffff,
	0x010430008,
	0x000000027,
	0x023c285de,
	0x00c0008be,
	0x023c285e2,
	0x00c0008bf,
	0x0afa20004,
	0x08fa20000,
	0x023bd0020,
	0x000400008,
	0x000000825,
	0x023c385e9,
	0x00c000967,
	0x023c385ed,
	0x00c000968,
	0x0afa30004,
	0x020020034,
	0x0a3c297d2,


@@ 756,21 757,21 @@ ulong bootcode[]={
	0x023c397d2,
	0x0afa30004,
	0x023c487d2,
	0x00c000ad3,
	0x00c000ad4,
	0x0afa40008,
	0x08fa20024,
	0x023c487d2,
	0x0afa20004,
	0x0afa40008,
	0x0afa1001c,
	0x00c000a87,
	0x00c000a88,
	0x0afa1000c,
	0x08fa4001c,
	0x000000027,
	0x010240008,
	0x000000027,
	0x023c285f4,
	0x00c0008be,
	0x023c285f8,
	0x00c0008bf,
	0x0afa20004,
	0x08fa20000,
	0x023bd0020,


@@ 781,12 782,12 @@ ulong bootcode[]={
	0x0afa20004,
	0x0afa40008,
	0x020021000,
	0x00c000a77,
	0x00c000a78,
	0x0afa2000c,
	0x01c200008,
	0x000000027,
	0x023c38602,
	0x00c0008be,
	0x023c38606,
	0x00c0008bf,
	0x0afa30004,
	0x08fa20000,
	0x023bd0020,


@@ 796,12 797,12 @@ ulong bootcode[]={
	0x0afa30004,
	0x023c497d2,
	0x0afa40008,
	0x00c000efa,
	0x00c000efb,
	0x0afa1000c,
	0x014200008,
	0x000000027,
	0x023c2860f,
	0x00c0008be,
	0x023c28613,
	0x00c0008bf,
	0x0afa20004,
	0x08fa20000,
	0x023bd0020,


@@ 811,8 812,8 @@ ulong bootcode[]={
	0x02002ffff,
	0x010620008,
	0x000000027,
	0x023c3861e,
	0x00c0008be,
	0x023c38622,
	0x00c0008bf,
	0x0afa30004,
	0x08fa20000,
	0x023bd0020,


@@ 824,11 825,11 @@ ulong bootcode[]={
	0x000000027,
	0x020020002,
	0x0afa20004,
	0x023c38629,
	0x023c3862d,
	0x0afa30008,
	0x023c297d2,
	0x024420008,
	0x00c00098c,
	0x00c00098d,
	0x0afa2000c,
	0x08fa20000,
	0x023bd0020,


@@ 838,8 839,8 @@ ulong bootcode[]={
	0x020020035,
	0x010620008,
	0x000000027,
	0x023c38639,
	0x00c0008be,
	0x023c3863d,
	0x00c0008bf,
	0x0afa30004,
	0x08fa20000,
	0x023bd0020,


@@ 856,12 857,12 @@ ulong bootcode[]={
	0x000000027,
	0x01040000a,
	0x000000027,
	0x023c38646,
	0x023c3864a,
	0x0afa30004,
	0x023c28026,
	0x0afa20008,
	0x02003001c,
	0x00c0008e4,
	0x00c0008e5,
	0x0afa3000c,
	0x08fc68006,
	0x000000027,


@@ 873,30 874,30 @@ ulong bootcode[]={
	0x0afc28006,
	0x023c28026,
	0x0afa20004,
	0x023c4864d,
	0x023c48651,
	0x0afa40008,
	0x020020004,
	0x00c0009c9,
	0x00c0009ca,
	0x0afa2000c,
	0x01420011f,
	0x023c58026,
	0x024a20004,
	0x0afa20140,
	0x00c0004ca,
	0x00c0004cb,
	0x0afa20004,
	0x000013025,
	0x004c0010e,
	0x0afc68006,
	0x004c10008,
	0x000000027,
	0x023c2867e,
	0x00c000967,
	0x023c28682,
	0x00c000968,
	0x0afa20004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0150,
	0x00c000672,
	0x00c000673,
	0x0afa60004,
	0x014200005,
	0x000000027,


@@ 904,41 905,41 @@ ulong bootcode[]={
	0x000000027,
	0x000400008,
	0x023bd0150,
	0x023c3868d,
	0x00c000967,
	0x023c38691,
	0x00c000968,
	0x0afa30004,
	0x023c287d2,
	0x0afa20004,
	0x023c38695,
	0x023c38699,
	0x0afa30008,
	0x08fa20140,
	0x00c0009b1,
	0x00c0009b2,
	0x0afa2000c,
	0x023c287d2,
	0x0afa20004,
	0x020040001,
	0x0afa40008,
	0x0200201b6,
	0x00c000a5f,
	0x00c000a60,
	0x0afa2000c,
	0x004210004,
	0x0afa10148,
	0x023c3869b,
	0x00c0008d0,
	0x023c3869f,
	0x00c0008d1,
	0x0afa30004,
	0x023c287d2,
	0x0afa20004,
	0x023c386a2,
	0x023c386a6,
	0x0afa30008,
	0x08fc28006,
	0x00c0009b1,
	0x00c0009b2,
	0x0afa2000c,
	0x023c387d2,
	0x00c000a3b,
	0x00c000a3c,
	0x0afa30004,
	0x0afa10014,
	0x023c487d2,
	0x00c000a3b,
	0x00c000a3c,
	0x0afa40004,
	0x0afa10010,
	0x08fa40148,


@@ 946,43 947,43 @@ ulong bootcode[]={
	0x0afa40004,
	0x0afa30008,
	0x08fa40010,
	0x00c000a87,
	0x00c000a88,
	0x0afa4000c,
	0x08fa30014,
	0x000000027,
	0x010230004,
	0x000000027,
	0x023c286a5,
	0x00c0008d0,
	0x023c286a9,
	0x00c0008d1,
	0x0afa20004,
	0x08fa30148,
	0x00c000a5b,
	0x00c000a5c,
	0x0afa30004,
	0x023c386ab,
	0x023c386af,
	0x0afa30004,
	0x020040001,
	0x0afa40008,
	0x0200301b6,
	0x00c000a5f,
	0x00c000a60,
	0x0afa3000c,
	0x004210004,
	0x0afa10148,
	0x023c286b3,
	0x00c0008d0,
	0x023c286b7,
	0x00c0008d1,
	0x0afa20004,
	0x023c387d2,
	0x0afa30004,
	0x023c286ba,
	0x023c286be,
	0x0afa20008,
	0x08fc38006,
	0x00c0009b1,
	0x00c0009b2,
	0x0afa3000c,
	0x023c287d2,
	0x00c000a3b,
	0x00c000a3c,
	0x0afa20004,
	0x0afa10014,
	0x023c487d2,
	0x00c000a3b,
	0x00c000a3c,
	0x0afa40004,
	0x0afa10010,
	0x08fa40148,


@@ 990,81 991,81 @@ ulong bootcode[]={
	0x0afa40004,
	0x0afa30008,
	0x08fa40010,
	0x00c000a87,
	0x00c000a88,
	0x0afa4000c,
	0x08fa30014,
	0x000000027,
	0x010230004,
	0x000000027,
	0x023c286bd,
	0x00c0008d0,
	0x023c286c1,
	0x00c0008d1,
	0x0afa20004,
	0x08fa30148,
	0x00c000a5b,
	0x00c000a5c,
	0x0afa30004,
	0x023c286c3,
	0x00c000967,
	0x023c286c7,
	0x00c000968,
	0x0afa20004,
	0x023c286cc,
	0x023c286d0,
	0x0afa20004,
	0x023c486ce,
	0x023c486d2,
	0x0afa40008,
	0x00c000a57,
	0x00c000a58,
	0x0afa0000c,
	0x004210004,
	0x000000027,
	0x023c286d0,
	0x00c0008d0,
	0x023c286d4,
	0x00c0008d1,
	0x0afa20004,
	0x08fc28006,
	0x023c486d5,
	0x023c486d9,
	0x0afa20004,
	0x0afa40008,
	0x020020006,
	0x0afa2000c,
	0x023c486d7,
	0x023c486db,
	0x0afa40010,
	0x023c286d8,
	0x00c000a6f,
	0x023c286dc,
	0x00c000a70,
	0x0afa20014,
	0x004210004,
	0x000000027,
	0x023c386d9,
	0x00c0008d0,
	0x023c386dd,
	0x00c0008d1,
	0x0afa30004,
	0x023c286df,
	0x00c000967,
	0x023c286e3,
	0x00c000968,
	0x0afa20004,
	0x023c286e7,
	0x023c286eb,
	0x0afa20004,
	0x023a40058,
	0x00c000a7f,
	0x00c000a80,
	0x0afa40008,
	0x004210004,
	0x000000027,
	0x023c286eb,
	0x00c0008d0,
	0x023c286ef,
	0x00c0008d1,
	0x0afa20004,
	0x023a30058,
	0x0afa30004,
	0x023a200cc,
	0x00c0011ca,
	0x00c0011cb,
	0x0afa20008,
	0x023c286f0,
	0x023c286f4,
	0x0afa20004,
	0x020040001,
	0x00c000a73,
	0x00c000a74,
	0x0afa40008,
	0x0afa10148,
	0x023a20058,
	0x0afa20004,
	0x023c386f8,
	0x023c386fc,
	0x0afa30008,
	0x08fa2012c,
	0x00c0009b1,
	0x00c0009b2,
	0x0afa2000c,
	0x023a20058,
	0x00c000a3b,
	0x00c000a3c,
	0x0afa20004,
	0x0afa10014,
	0x08fa20148,


@@ 1072,36 1073,36 @@ ulong bootcode[]={
	0x0afa20004,
	0x0afa30008,
	0x08fa20014,
	0x00c000a87,
	0x00c000a88,
	0x0afa2000c,
	0x08fa30148,
	0x00c000a5b,
	0x00c000a5c,
	0x0afa30004,
	0x023c286fc,
	0x00c000967,
	0x023c28700,
	0x00c000968,
	0x0afa20004,
	0x08fc58022,
	0x08fc3812a,
	0x08fc3812e,
	0x000000027,
	0x010600015,
	0x000000027,
	0x023a20018,
	0x0afa20004,
	0x023c38705,
	0x023c38709,
	0x0afa30008,
	0x00c0009b1,
	0x00c0009b2,
	0x0afa5000c,
	0x08fc3812a,
	0x08fc3812e,
	0x023a20018,
	0x0afa30004,
	0x0afa20008,
	0x00c000a57,
	0x00c000a58,
	0x0afa0000c,
	0x08fc3812a,
	0x023c2870d,
	0x08fc3812e,
	0x023c28711,
	0x0afa30004,
	0x0afa20008,
	0x00c000a57,
	0x00c000a58,
	0x0afa0000c,
	0x08fc58022,
	0x000000027,


@@ 1109,123 1110,123 @@ ulong bootcode[]={
	0x000000027,
	0x023a20018,
	0x0afa20004,
	0x023c38716,
	0x023c3871a,
	0x0afa30008,
	0x00c0009b1,
	0x00c0009b2,
	0x0afa5000c,
	0x023c38726,
	0x023c3872a,
	0x0afa30004,
	0x023a20018,
	0x00c000967,
	0x00c000968,
	0x0afa20008,
	0x023a30018,
	0x0afa30004,
	0x023c28748,
	0x023c2874c,
	0x0afa20008,
	0x00c000a57,
	0x00c000a58,
	0x0afa0000c,
	0x08fa30154,
	0x000000027,
	0x010600010,
	0x000000027,
	0x023c28759,
	0x023c2875d,
	0x0afa20004,
	0x023c38764,
	0x023c38768,
	0x0afa30008,
	0x023c28769,
	0x023c2876d,
	0x0afa2000c,
	0x00c000a47,
	0x00c000a48,
	0x0afa00010,
	0x023c3877c,
	0x00c0008d0,
	0x023c38780,
	0x00c0008d1,
	0x0afa30004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0150,
	0x023c3876c,
	0x023c38770,
	0x0afa30004,
	0x023c28777,
	0x023c2877b,
	0x0afa20008,
	0x00c000a47,
	0x00c000a48,
	0x0afa0000c,
	0x023c3877c,
	0x00c0008d0,
	0x023c38780,
	0x00c0008d1,
	0x0afa30004,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0150,
	0x023c38662,
	0x00c000967,
	0x023c38666,
	0x00c000968,
	0x0afa30004,
	0x0200203e8,
	0x00c000a7b,
	0x00c000a7c,
	0x0afa20004,
	0x08fc68006,
	0x08fa20144,
	0x008000763,
	0x008000764,
	0x024450001,
	0x0afa50004,
	0x023c48652,
	0x023c48656,
	0x0afa40008,
	0x020030004,
	0x00c0009c9,
	0x00c0009ca,
	0x0afa3000c,
	0x014200007,
	0x023c58026,
	0x024a30004,
	0x0afa30140,
	0x00c000615,
	0x00c000616,
	0x0afa30004,
	0x008000776,
	0x008000777,
	0x000013025,
	0x0afa50004,
	0x023c48657,
	0x023c4865b,
	0x0afa40008,
	0x020020003,
	0x00c0009c9,
	0x00c0009ca,
	0x0afa2000c,
	0x014200007,
	0x023c58026,
	0x024a20003,
	0x0afa20140,
	0x00c00058c,
	0x00c00058d,
	0x0afa20004,
	0x008000776,
	0x008000777,
	0x000013025,
	0x0afa50004,
	0x023c4865b,
	0x023c4865f,
	0x0afa40008,
	0x020030006,
	0x00c0009c9,
	0x00c0009ca,
	0x0afa3000c,
	0x014200007,
	0x023c58026,
	0x024a30006,
	0x0afa30140,
	0x00c0004d5,
	0x00c0004d6,
	0x0afa30004,
	0x008000776,
	0x008000777,
	0x000013025,
	0x0afa50140,
	0x00c0004d5,
	0x00c0004d6,
	0x0afa50004,
	0x008000776,
	0x008000777,
	0x000013025,
	0x023bdffac,
	0x0afbf0000,
	0x023a20014,
	0x00c000a63,
	0x00c000a64,
	0x0afa20004,
	0x020030002,
	0x0afa30004,
	0x023c28787,
	0x023c2878b,
	0x0afa20008,
	0x08fa30058,
	0x023a20014,
	0x0afa3000c,
	0x00c00098c,
	0x00c00098d,
	0x0afa20010,
	0x08fa20000,
	0x000000027,


@@ 1234,18 1235,18 @@ ulong bootcode[]={
	0x023bdffac,
	0x0afbf0000,
	0x023a30014,
	0x00c000a63,
	0x00c000a64,
	0x0afa30004,
	0x020020002,
	0x0afa20004,
	0x023c38795,
	0x023c38799,
	0x0afa30008,
	0x08fa20058,
	0x023a30014,
	0x0afa2000c,
	0x00c00098c,
	0x00c00098d,
	0x0afa30010,
	0x00c00094b,
	0x00c00094c,
	0x0afa00004,
	0x08fa20000,
	0x000000027,


@@ 1253,28 1254,28 @@ ulong bootcode[]={
	0x023bd0054,
	0x023bdfeec,
	0x0afbf0000,
	0x023c387a3,
	0x023c387a7,
	0x0afa30004,
	0x08fa20118,
	0x000000027,
	0x0afa20008,
	0x08fa3011c,
	0x00c000967,
	0x00c000968,
	0x0afa3000c,
	0x0afa00004,
	0x023a30010,
	0x0afa30008,
	0x08fa40120,
	0x00c000a77,
	0x00c000a78,
	0x0afa4000c,
	0x014200003,
	0x000012825,
	0x0080008e6,
	0x0080008e7,
	0x000000027,
	0x004210006,
	0x0afa10110,
	0x023c287ac,
	0x00c0008d0,
	0x023c287b0,
	0x00c0008d1,
	0x0afa20004,
	0x08fa50110,
	0x000000027,


@@ 1287,7 1288,7 @@ ulong bootcode[]={
	0x08fa3011c,
	0x023a20010,
	0x0afa30004,
	0x00c0009fc,
	0x00c0009fd,
	0x0afa20008,
	0x08fa50110,
	0x000000027,


@@ 1345,10 1346,10 @@ ulong bootcode[]={
	0x000000027,
	0x014400003,
	0x000000027,
	0x00c00094b,
	0x00c00094c,
	0x0afa00004,
	0x023c38046,
	0x00c00094b,
	0x00c00094c,
	0x0afa30004,
	0x08fa20000,
	0x000000027,


@@ 1373,10 1374,10 @@ ulong bootcode[]={
	0x0ac400000,
	0x08fa4000c,
	0x023c6984e,
	0x00800094f,
	0x008000950,
	0x02484ffff,
	0x08fa30014,
	0x00c000a53,
	0x00c000a54,
	0x0afa30004,
	0x08fa20000,
	0x000000027,


@@ 1392,14 1393,14 @@ ulong bootcode[]={
	0x023a41020,
	0x0afa3000c,
	0x024840004,
	0x00c001284,
	0x00c001285,
	0x0afa40010,
	0x023a6001c,
	0x020020001,
	0x0afa20004,
	0x0afa60008,
	0x000261023,
	0x00c000a87,
	0x00c000a88,
	0x0afa2000c,
	0x0afa10014,
	0x00421000c,


@@ 1411,7 1412,7 @@ ulong bootcode[]={
	0x014400006,
	0x0afc38002,
	0x023c2800a,
	0x00c00094b,
	0x00c00094c,
	0x0afa20004,
	0x08fa50014,
	0x000000027,


@@ 1429,14 1430,14 @@ ulong bootcode[]={
	0x023a41024,
	0x0afa3000c,
	0x024840004,
	0x00c001284,
	0x00c001285,
	0x0afa40010,
	0x08fa21020,
	0x023a6001c,
	0x0afa20004,
	0x0afa60008,
	0x000261023,
	0x00c000a87,
	0x00c000a88,
	0x0afa2000c,
	0x0afa10014,
	0x00421000c,


@@ 1448,7 1449,7 @@ ulong bootcode[]={
	0x014400006,
	0x0afc38002,
	0x023c2800a,
	0x00c00094b,
	0x00c00094c,
	0x0afa20004,
	0x08fa50014,
	0x000000027,


@@ 1459,7 1460,7 @@ ulong bootcode[]={
	0x023bdffe4,
	0x0afbf0000,
	0x08fa50020,
	0x08fc280de,
	0x08fc280e2,
	0x024a41000,
	0x0afa20014,
	0x0afa50004,


@@ 1468,11 1469,11 @@ ulong bootcode[]={
	0x023a40024,
	0x0afa2000c,
	0x024840004,
	0x00c001284,
	0x00c001285,
	0x0afa40010,
	0x08fa20014,
	0x000000027,
	0x0afc280de,
	0x0afc280e2,
	0x08fa20020,
	0x000000027,
	0x000220823,


@@ 1599,7 1600,7 @@ ulong bootcode[]={
	0x08fa20010,
	0x000000027,
	0x0afa20004,
	0x00c0017e7,
	0x00c0017e8,
	0x0afa00008,
	0x08fa30010,
	0x08fa20000,


@@ 1612,7 1613,7 @@ ulong bootcode[]={
	0x023a30010,
	0x0afa20004,
	0x024630004,
	0x00c000a67,
	0x00c000a68,
	0x0afa30008,
	0x08fa20000,
	0x000000027,


@@ 1676,7 1677,7 @@ ulong bootcode[]={
	0x000000027,
	0x023bdffe4,
	0x0afbf0000,
	0x023c280ea,
	0x023c280ee,
	0x0afa20010,
	0x000002825,
	0x028a30003,


@@ 1691,14 1692,14 @@ ulong bootcode[]={
	0x08fa2002c,
	0x000000027,
	0x08c420000,
	0x00c000a77,
	0x00c000a78,
	0x0afa2000c,
	0x014200015,
	0x0afa10018,
	0x020030002,
	0x0afa30004,
	0x023c280ee,
	0x00c00098c,
	0x023c280f2,
	0x00c00098d,
	0x0afa20008,
	0x08fa30014,
	0x000000027,


@@ 1720,24 1721,24 @@ ulong bootcode[]={
	0x08fa20000,
	0x023bd001c,
	0x000400008,
	0x023c18100,
	0x023c18104,
	0x08fa30024,
	0x000000027,
	0x0afa30004,
	0x08fa40028,
	0x000000027,
	0x0afa40008,
	0x00c000efa,
	0x00c000efb,
	0x0afa1000c,
	0x014200009,
	0x0afa10018,
	0x020020002,
	0x0afa20004,
	0x023c3810b,
	0x00c00098c,
	0x023c3810f,
	0x00c00098d,
	0x0afa30008,
	0x023c28121,
	0x008000aa5,
	0x023c28125,
	0x008000aa6,
	0x0afa20010,
	0x08fa3002c,
	0x000000027,


@@ 1837,7 1838,7 @@ ulong bootcode[]={
	0x024a20008,
	0x0afa20008,
	0x020030040,
	0x00c00189a,
	0x00c00189b,
	0x0afa3000c,
	0x08fa20010,
	0x000000027,


@@ 1863,7 1864,7 @@ ulong bootcode[]={
	0x024a20008,
	0x0afa20008,
	0x02003001c,
	0x00c00189a,
	0x00c00189b,
	0x0afa3000c,
	0x08fa20010,
	0x02003001c,


@@ 1874,7 1875,7 @@ ulong bootcode[]={
	0x000000027,
	0x024420024,
	0x0afa20008,
	0x00c00189a,
	0x00c00189b,
	0x0afa3000c,
	0x08fa20010,
	0x02003001c,


@@ 1885,7 1886,7 @@ ulong bootcode[]={
	0x000000027,
	0x024420040,
	0x0afa20008,
	0x00c00189a,
	0x00c00189b,
	0x0afa3000c,
	0x08fa20010,
	0x000000027,


@@ 2017,7 2018,7 @@ ulong bootcode[]={
	0x024a3000e,
	0x0afa30008,
	0x02002001c,
	0x00c00189a,
	0x00c00189b,
	0x0afa2000c,
	0x08fa30010,
	0x08fa2001c,


@@ 2166,7 2167,7 @@ ulong bootcode[]={
	0x024a2000e,
	0x0afa20008,
	0x02003001c,
	0x00c00189a,
	0x00c00189b,
	0x0afa3000c,
	0x08fa70018,
	0x08fa20010,


@@ 2246,7 2247,7 @@ ulong bootcode[]={
	0x000000027,
	0x0afa20008,
	0x08ca3000c,
	0x00c00189a,
	0x00c00189b,
	0x0afa3000c,
	0x08fa20018,
	0x08fa30010,


@@ 2390,7 2391,7 @@ ulong bootcode[]={
	0x000000027,
	0x0afa20008,
	0x08ca3000c,
	0x00c00189a,
	0x00c00189b,
	0x0afa3000c,
	0x08fa20018,
	0x08fa30010,


@@ 2521,7 2522,7 @@ ulong bootcode[]={
	0x024a30008,
	0x0afa30008,
	0x020020074,
	0x00c00189a,
	0x00c00189b,
	0x0afa2000c,
	0x08fa30010,
	0x08fa2001c,


@@ 2577,7 2578,7 @@ ulong bootcode[]={
	0x024a20008,
	0x0afa20008,
	0x020030074,
	0x00c00189a,
	0x00c00189b,
	0x0afa3000c,
	0x08fa20010,
	0x000000027,


@@ 2625,7 2626,7 @@ ulong bootcode[]={
	0x024a2000e,
	0x0afa20008,
	0x02003001c,
	0x00c00189a,
	0x00c00189b,
	0x0afa3000c,
	0x08fa20010,
	0x000000027,


@@ 2662,7 2663,7 @@ ulong bootcode[]={
	0x08fa30018,
	0x000000027,
	0x0afa30008,
	0x00c00189a,
	0x00c00189b,
	0x0afa2000c,
	0x08fa30010,
	0x02002001c,


@@ 2673,7 2674,7 @@ ulong bootcode[]={
	0x000000027,
	0x02463001c,
	0x0afa30008,
	0x00c00189a,
	0x00c00189b,
	0x0afa2000c,
	0x08fa30010,
	0x02002001c,


@@ 2684,7 2685,7 @@ ulong bootcode[]={
	0x000000027,
	0x024630038,
	0x0afa30008,
	0x00c00189a,
	0x00c00189b,
	0x0afa2000c,
	0x08fa40018,
	0x08fa30010,


@@ 2894,17 2895,17 @@ ulong bootcode[]={
	0x000031a00,
	0x000431025,
	0x024a50002,
	0x008000f2c,
	0x008000f2d,
	0x0a4c20008,
	0x024c20008,
	0x0afa20004,
	0x0afa50010,
	0x0afa50008,
	0x020020040,
	0x00c00189a,
	0x00c00189b,
	0x0afa2000c,
	0x08fa30010,
	0x008000f2c,
	0x008000f2d,
	0x024650040,
	0x090a20000,
	0x090a30001,


@@ 2919,7 2920,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02002001c,
	0x00c00189a,
	0x00c00189b,
	0x0afa2000c,
	0x08fa30010,
	0x08fa2001c,


@@ 2929,7 2930,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02002001c,
	0x00c00189a,
	0x00c00189b,
	0x0afa2000c,
	0x08fa30010,
	0x08fa2001c,


@@ 2939,10 2940,10 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02002001c,
	0x00c00189a,
	0x00c00189b,
	0x0afa2000c,
	0x08fa30010,
	0x008000f2c,
	0x008000f2d,
	0x02465001c,
	0x02003003e,
	0x00062202a,


@@ 2970,7 2971,7 @@ ulong bootcode[]={
	0x000031a00,
	0x000431025,
	0x024a50002,
	0x008000f2c,
	0x008000f2d,
	0x0a4c20002,
	0x090a20000,
	0x090a30001,


@@ 2987,7 2988,7 @@ ulong bootcode[]={
	0x000031a00,
	0x000431025,
	0x024a50002,
	0x008000f2c,
	0x008000f2d,
	0x0a4c2000c,
	0x090a20000,
	0x090a30001,


@@ 3028,7 3029,7 @@ ulong bootcode[]={
	0x000031e00,
	0x000431025,
	0x024a50004,
	0x008000f2c,
	0x008000f2d,
	0x0acc20010,
	0x090a20000,
	0x090a30001,


@@ 3043,10 3044,10 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02002001c,
	0x00c00189a,
	0x00c00189b,
	0x0afa2000c,
	0x08fa30010,
	0x008000f2c,
	0x008000f2d,
	0x02465001c,
	0x02003003f,
	0x010430040,


@@ 3100,7 3101,7 @@ ulong bootcode[]={
	0x000031e00,
	0x000431025,
	0x024a50004,
	0x008000f2c,
	0x008000f2d,
	0x0acc20010,
	0x090a20000,
	0x090a30001,


@@ 3112,7 3113,7 @@ ulong bootcode[]={
	0x024a30002,
	0x024650001,
	0x080630000,
	0x008000f2c,
	0x008000f2d,
	0x0a0c3002a,
	0x090a20000,
	0x090a30001,


@@ 3153,7 3154,7 @@ ulong bootcode[]={
	0x000031e00,
	0x000431025,
	0x024a50004,
	0x008000f2c,
	0x008000f2d,
	0x0acc20010,
	0x090a20000,
	0x090a30001,


@@ 3168,7 3169,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02002001c,
	0x00c00189a,
	0x00c00189b,
	0x0afa2000c,
	0x08fa6001c,
	0x08fa30010,


@@ 3192,7 3193,7 @@ ulong bootcode[]={
	0x024a30004,
	0x024650001,
	0x080630000,
	0x008000f2c,
	0x008000f2d,
	0x0a0c3002a,
	0x02003004a,
	0x00062202a,


@@ 3238,7 3239,7 @@ ulong bootcode[]={
	0x024650001,
	0x0acc50010,
	0x08cc3000c,
	0x008000f2c,
	0x008000f2d,
	0x000a32821,
	0x090a20000,
	0x090a30001,


@@ 3271,7 3272,7 @@ ulong bootcode[]={
	0x000031a00,
	0x000431025,
	0x024a50002,
	0x008000f2c,
	0x008000f2d,
	0x0acc2000c,
	0x090a20000,
	0x090a30001,


@@ 3312,7 3313,7 @@ ulong bootcode[]={
	0x000031e00,
	0x000431025,
	0x024a50004,
	0x008000f2c,
	0x008000f2d,
	0x0acc20010,
	0x090a20000,
	0x090a30001,


@@ 3349,7 3350,7 @@ ulong bootcode[]={
	0x024650001,
	0x0acc50010,
	0x08cc3000c,
	0x008000f2c,
	0x008000f2d,
	0x000a32821,
	0x020030047,
	0x01043001d,


@@ 3371,7 3372,7 @@ ulong bootcode[]={
	0x000031a00,
	0x000431025,
	0x024a50002,
	0x008000f2c,
	0x008000f2d,
	0x0a4c20002,
	0x090a20000,
	0x090a30001,


@@ 3380,7 3381,7 @@ ulong bootcode[]={
	0x000031a00,
	0x000431025,
	0x024a50002,
	0x008000f2c,
	0x008000f2d,
	0x0a4c20002,
	0x090a20000,
	0x090a30001,


@@ 3397,7 3398,7 @@ ulong bootcode[]={
	0x000031a00,
	0x000431025,
	0x024a50002,
	0x008000f2c,
	0x008000f2d,
	0x0acc2000c,
	0x090a20000,
	0x090a30001,


@@ 3406,7 3407,7 @@ ulong bootcode[]={
	0x000031a00,
	0x000431025,
	0x024a50002,
	0x008000f2c,
	0x008000f2d,
	0x0a4c20002,
	0x02003004e,
	0x00062202a,


@@ 3440,10 3441,10 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x020020074,
	0x00c00189a,
	0x00c00189b,
	0x0afa2000c,
	0x08fa30010,
	0x008000f2c,
	0x008000f2d,
	0x024650074,
	0x090a20000,
	0x090a30001,


@@ 3452,7 3453,7 @@ ulong bootcode[]={
	0x000031a00,
	0x000431025,
	0x024a50002,
	0x008000f2c,
	0x008000f2d,
	0x0a4c20002,
	0x090a20000,
	0x090a30001,


@@ 3461,7 3462,7 @@ ulong bootcode[]={
	0x000031a00,
	0x000431025,
	0x024a50002,
	0x008000f2c,
	0x008000f2d,
	0x0a4c20002,
	0x090a20000,
	0x090a30001,


@@ 3476,10 3477,10 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x020020074,
	0x00c00189a,
	0x00c00189b,
	0x0afa2000c,
	0x08fa30010,
	0x008000f2c,
	0x008000f2d,
	0x024650074,
	0x02003004f,
	0x010430025,


@@ 3515,10 3516,10 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02002001c,
	0x00c00189a,
	0x00c00189b,
	0x0afa2000c,
	0x08fa30010,
	0x008000f2c,
	0x008000f2d,
	0x02465001c,
	0x090a20000,
	0x090a30001,


@@ 3527,7 3528,7 @@ ulong bootcode[]={
	0x000031a00,
	0x000431025,
	0x024a50002,
	0x008000f2c,
	0x008000f2d,
	0x0a4c20002,
	0x023bdffec,
	0x0afbf0000,


@@ 3538,7 3539,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02003001c,
	0x00c00189a,
	0x00c00189b,
	0x0afa3000c,
	0x08fa20010,
	0x08fa3001c,


@@ 3548,7 3549,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02003001c,
	0x00c00189a,
	0x00c00189b,
	0x0afa3000c,
	0x08fa20010,
	0x08fa3001c,


@@ 3558,7 3559,7 @@ ulong bootcode[]={
	0x0afa50010,
	0x0afa50008,
	0x02003001c,
	0x00c00189a,
	0x00c00189b,
	0x0afa3000c,
	0x08fa5001c,
	0x08fa20010,


@@ 3689,7 3690,7 @@ ulong bootcode[]={
	0x000022e00,
	0x000052e03,
	0x014600003,
	0x023c68146,
	0x023c6814a,
	0x003e00008,
	0x020010001,
	0x000051e00,


@@ 3706,7 3707,7 @@ ulong bootcode[]={
	0x000021603,
	0x000461021,
	0x080420000,
	0x023c381c6,
	0x023c381ca,
	0x000021600,
	0x000021603,
	0x000021080,


@@ 3722,7 3723,7 @@ ulong bootcode[]={
	0x08fc2805e,
	0x000000027,
	0x0afa2001c,
	0x08fc380da,
	0x08fc380de,
	0x000000027,
	0x0afa30018,
	0x08fac0038,


@@ 3731,7 3732,7 @@ ulong bootcode[]={
	0x08fa3003c,
	0x000000027,
	0x02463ffff,
	0x0afc380da,
	0x0afc380de,
	0x000062825,
	0x080a50000,
	0x020020025,


@@ 3741,7 3742,7 @@ ulong bootcode[]={
	0x024c60001,
	0x014a00012,
	0x000000027,
	0x08fc380da,
	0x08fc380de,
	0x000000027,
	0x00183202b,
	0x014800002,


@@ 3753,12 3754,12 @@ ulong bootcode[]={
	0x0afc3805e,
	0x08fa20018,
	0x000000027,
	0x0afc280da,
	0x0afc280de,
	0x08fa20000,
	0x023bd0034,
	0x000400008,
	0x0000c0825,
	0x08fc380da,
	0x08fc380de,
	0x000000027,
	0x00183202b,
	0x010800005,


@@ 3767,25 3768,25 @@ ulong bootcode[]={
	0x0258c0001,
	0x0afcc805e,
	0x0a0450000,
	0x08fc280de,
	0x08fc280e2,
	0x000000027,
	0x024420001,
	0x0afc280de,
	0x0afc280e2,
	0x02002000a,
	0x014a20003,
	0x000000027,
	0x008001295,
	0x0afc080de,
	0x008001296,
	0x0afc080e2,
	0x020020009,
	0x014a2ffd2,
	0x000000027,
	0x08fc380de,
	0x08fc380e2,
	0x000000027,
	0x024630007,
	0x0201cfff8,
	0x0007c1824,
	0x008001295,
	0x0afc380de,
	0x008001296,
	0x0afc380e2,
	0x02007fc18,
	0x0200bfc18,
	0x000005025,


@@ 3798,7 3799,7 @@ ulong bootcode[]={
	0x000052e03,
	0x014a00003,
	0x000000027,
	0x008001295,
	0x008001296,
	0x024c6ffff,
	0x02002002e,
	0x014a20007,


@@ 3807,7 3808,7 @@ ulong bootcode[]={
	0x014e20002,
	0x000000027,
	0x000003825,
	0x0080012ce,
	0x0080012cf,
	0x000005825,
	0x028a20031,
	0x014400025,


@@ 3829,11 3830,11 @@ ulong bootcode[]={
	0x000000027,
	0x014a0ffe4,
	0x000083825,
	0x008001295,
	0x008001296,
	0x024c6ffff,
	0x014a0ffe0,
	0x000085825,
	0x008001295,
	0x008001296,
	0x024c6ffff,
	0x02002000a,
	0x001020018,


@@ 3846,7 3847,7 @@ ulong bootcode[]={
	0x000000027,
	0x000052e00,
	0x000052e03,
	0x0080012ea,
	0x0080012eb,
	0x02468ffd0,
	0x020030030,
	0x014a30006,


@@ 3854,7 3855,7 @@ ulong bootcode[]={
	0x02003fc18,
	0x010e30003,
	0x000000027,
	0x0080012e9,
	0x0080012ea,
	0x000000027,
	0x02002002a,
	0x014a20009,


@@ 3863,9 3864,9 @@ ulong bootcode[]={
	0x02002fc18,
	0x014e20003,
	0x025290004,
	0x0080012ce,
	0x0080012cf,
	0x000053825,
	0x0080012ce,
	0x0080012cf,
	0x000055825,
	0x030a5007f,
	0x0afa90044,


@@ 3877,10 3878,10 @@ ulong bootcode[]={
	0x0afaa0028,
	0x0afaa0010,
	0x0afa50014,
	0x023c28146,
	0x023c2814a,
	0x000451021,
	0x080420000,
	0x023c381c6,
	0x023c381ca,
	0x000021600,
	0x000021603,
	0x000021080,


@@ 3898,9 3899,9 @@ ulong bootcode[]={
	0x000000027,
	0x08fa40028,
	0x000011023,
	0x0080012ce,
	0x0080012cf,
	0x000825025,
	0x008001295,
	0x008001296,
	0x001214821,
	0x023bdfff0,
	0x0afbf0000,


@@ 3918,13 3919,13 @@ ulong bootcode[]={
	0x0afa30004,
	0x0afa40008,
	0x08fa3001c,
	0x00c001432,
	0x00c001433,
	0x0afa3000c,
	0x08fa20000,
	0x000000027,
	0x000400008,
	0x023bd0010,
	0x00800134a,
	0x00800134b,
	0x000042023,
	0x023bdffa8,
	0x0afbf0000,


@@ 4017,7 4018,7 @@ ulong bootcode[]={
	0x02002fc18,
	0x0afa30008,
	0x0afa2000c,
	0x00c00133f,
	0x00c001340,
	0x0afa70010,
	0x08fa10028,
	0x08fa20000,


@@ 4036,12 4037,12 @@ ulong bootcode[]={
	0x024a5ffff,
	0x001651021,
	0x020040030,
	0x0080013a6,
	0x0080013a7,
	0x0a0440000,
	0x024a5ffff,
	0x001651021,
	0x020040078,
	0x0080013c2,
	0x0080013c3,
	0x0a0440000,
	0x030e30040,
	0x01060001e,


@@ 4063,27 4064,27 @@ ulong bootcode[]={
	0x000000027,
	0x01d000003,
	0x000000027,
	0x008001397,
	0x008001398,
	0x000000027,
	0x01d400003,
	0x000000027,
	0x008001397,
	0x008001398,
	0x000000027,
	0x030e20040,
	0x01440ffa0,
	0x024a5ffff,
	0x00149001b,
	0x00800138c,
	0x00800138d,
	0x000003010,
	0x00149001b,
	0x0080013d3,
	0x0080013d4,
	0x000005012,
	0x0200d0001,
	0x008001384,
	0x008001385,
	0x0000a5023,
	0x08caa0000,
	0x020030004,
	0x00800137f,
	0x008001380,
	0x0afa30028,
	0x08ca20000,
	0x000000027,


@@ 4095,15 4096,15 @@ ulong bootcode[]={
	0x000031c03,
	0x020020004,
	0x0afa20028,
	0x00800137f,
	0x008001380,
	0x000035025,
	0x08caa0000,
	0x020030004,
	0x00800137f,
	0x008001380,
	0x0afa30028,
	0x08caa0000,
	0x020030004,
	0x00800137f,
	0x008001380,
	0x0afa30028,
	0x020030030,
	0x01043000a,


@@ 4111,11 4112,11 @@ ulong bootcode[]={
	0x020030048,
	0x010430003,
	0x000000027,
	0x00800137c,
	0x00800137d,
	0x000000027,
	0x08ca80000,
	0x020030004,
	0x00800137f,
	0x008001380,
	0x0afa30028,
	0x08ca30000,
	0x000000027,


@@ 4125,14 4126,14 @@ ulong bootcode[]={
	0x03042ffff,
	0x020030004,
	0x0afa30028,
	0x00800137f,
	0x008001380,
	0x000025025,
	0x00800136c,
	0x00800136d,
	0x02009000a,
	0x0200e0001,
	0x00800136c,
	0x00800136d,
	0x020090010,
	0x00800136c,
	0x00800136d,
	0x020090008,
	0x020030075,
	0x011230006,


@@ 4140,20 4141,20 @@ ulong bootcode[]={
	0x020030078,
	0x01123fff7,
	0x000000027,
	0x00800136c,
	0x00800136d,
	0x000000027,
	0x02009000a,
	0x00800136c,
	0x00800136d,
	0x034e70020,
	0x023bdfff0,
	0x0afbf0000,
	0x08fa30014,
	0x00c000a3b,
	0x00c000a3c,
	0x0afa30004,
	0x08fac0014,
	0x08faa0018,
	0x08fc980da,
	0x08fc880de,
	0x08fc980de,
	0x08fc880e2,
	0x08fa7001c,
	0x08fc6805e,
	0x02002fc18,


@@ 4173,7 4174,7 @@ ulong bootcode[]={
	0x000000027,
	0x01ce00003,
	0x000000027,
	0x008001442,
	0x008001443,
	0x000000027,
	0x000c9202b,
	0x010800005,


@@ 4185,13 4186,13 @@ ulong bootcode[]={
	0x025080001,
	0x02002000a,
	0x015620008,
	0x0afc880de,
	0x0afc880e2,
	0x000004025,
	0x0afc080de,
	0x0afc080e2,
	0x02003fc18,
	0x010e3ffe3,
	0x000000027,
	0x008001442,
	0x008001443,
	0x024e7ffff,
	0x020020009,
	0x01562fff9,


@@ 4201,8 4202,8 @@ ulong bootcode[]={
	0x0007c4024,
	0x02003fc18,
	0x010e3ffd8,
	0x0afc880de,
	0x008001442,
	0x0afc880e2,
	0x008001443,
	0x024e7ffff,
	0x02002fc18,
	0x011420003,


@@ 4227,8 4228,8 @@ ulong bootcode[]={
	0x0a0640000,
	0x025080001,
	0x024a50001,
	0x008001477,
	0x0afc880de,
	0x008001478,
	0x0afc880e2,
	0x000aa202a,
	0x01080ffba,
	0x000000027,


@@ 4242,8 4243,8 @@ ulong bootcode[]={
	0x0a0440000,
	0x025080001,
	0x024a50001,
	0x008001486,
	0x0afc880de,
	0x008001487,
	0x0afc880e2,
	0x023bdffec,
	0x0afbf0000,
	0x02002002a,


@@ 4257,7 4258,7 @@ ulong bootcode[]={
	0x0afa30004,
	0x0afa00008,
	0x02002fc18,
	0x00c001432,
	0x00c001433,
	0x0afa2000c,
	0x08fa20000,
	0x023bd0014,


@@ 4275,7 4276,7 @@ ulong bootcode[]={
	0x08fa3001c,
	0x02002fc18,
	0x0afa30008,
	0x00c001432,
	0x00c001433,
	0x0afa2000c,
	0x08fa20000,
	0x023bd0014,


@@ 4295,14 4296,14 @@ ulong bootcode[]={
	0x000000027,
	0x0afa3000c,
	0x08fa20024,
	0x00c00133f,
	0x00c001340,
	0x0afa20010,
	0x08fa20000,
	0x023bd0014,
	0x000400008,
	0x020010004,
	0x08fc5805e,
	0x08fc280da,
	0x08fc280de,
	0x000000027,
	0x000a2202b,
	0x010800005,


@@ 4369,18 4370,18 @@ ulong bootcode[]={
	0x0e7a6004c,
	0x0e7a70004,
	0x0e7a60008,
	0x00c001911,
	0x00c001912,
	0x000000027,
	0x01020000e,
	0x000000027,
	0x023c2812e,
	0x023c28132,
	0x0afa20004,
	0x08fa300a8,
	0x02002fc18,
	0x0afa30008,
	0x0afa2000c,
	0x08fa300b0,
	0x00c00133f,
	0x00c001340,
	0x0afa30010,
	0x08fa20000,
	0x023bd00a0,


@@ 4391,18 4392,18 @@ ulong bootcode[]={
	0x020030001,
	0x0e7a10004,
	0x0e7a00008,
	0x00c001941,
	0x00c001942,
	0x0afa3000c,
	0x01020000e,
	0x000000027,
	0x023c28132,
	0x023c28136,
	0x0afa20004,
	0x08fa300a8,
	0x02002fc18,
	0x0afa30008,
	0x0afa2000c,
	0x08fa300b0,
	0x00c00133f,
	0x00c001340,
	0x0afa30010,
	0x08fa20000,
	0x023bd00a0,


@@ 4413,21 4414,21 @@ ulong bootcode[]={
	0x02003ffff,
	0x0e7a10004,
	0x0e7a00008,
	0x00c001941,
	0x00c001942,
	0x0afa3000c,
	0x08fad00b4,
	0x08fac00ac,
	0x023a90050,
	0x01020000e,
	0x023ae0078,
	0x023c28137,
	0x023c2813b,
	0x0afa20004,
	0x08fa300a8,
	0x02002fc18,
	0x0afa30008,
	0x0afa2000c,
	0x08fa300b0,
	0x00c00133f,
	0x00c001340,
	0x0afa30010,
	0x08fa20000,
	0x023bd00a0,


@@ 4471,14 4472,14 @@ ulong bootcode[]={
	0x023a20034,
	0x0e7a10004,
	0x0e7a00008,
	0x00c001813,
	0x00c001814,
	0x0afa2000c,
	0x08fa20034,
	0x04444f800,
	0x044821000,
	0x034850003,
	0x0c7c580d2,
	0x0c7c480d6,
	0x0c7c580d6,
	0x0c7c480da,
	0x0468010a1,
	0x046241002,
	0x038a50002,


@@ 4495,7 4496,7 @@ ulong bootcode[]={
	0x000023043,
	0x0afa60030,
	0x000061023,
	0x00c0017be,
	0x00c0017bf,
	0x0afa20004,
	0x0c7a30048,
	0x0c7a2004c,


@@ 4507,7 4508,7 @@ ulong bootcode[]={
	0x08fa30034,
	0x000000027,
	0x000431023,
	0x00c0017be,
	0x00c0017bf,
	0x0afa20004,
	0x08fad00b4,
	0x023ae0078,


@@ 4530,7 4531,7 @@ ulong bootcode[]={
	0x08fa30034,
	0x000000027,
	0x000431023,
	0x00c0017be,
	0x00c0017bf,
	0x0afa20004,
	0x08fad00b4,
	0x08fac00ac,


@@ 4539,10 4540,10 @@ ulong bootcode[]={
	0x0c7a2003c,
	0x000000027,
	0x046201182,
	0x0080015a7,
	0x0080015a8,
	0x023ae0078,
	0x0c7c180e2,
	0x0c7c080e6,
	0x0c7c180e6,
	0x0c7c080ea,
	0x000000027,
	0x04626003e,
	0x000000027,


@@ 4556,7 4557,7 @@ ulong bootcode[]={
	0x08fa30034,
	0x000000027,
	0x000431023,
	0x00c0017be,
	0x00c0017bf,
	0x0afa20004,
	0x08fad00b4,
	0x08fac00ac,


@@ 4565,7 4566,7 @@ ulong bootcode[]={
	0x0c7a2003c,
	0x000000027,
	0x046201182,
	0x0080015be,
	0x0080015bf,
	0x023ae0078,
	0x02003fc18,
	0x015830002,


@@ 4600,7 4601,7 @@ ulong bootcode[]={
	0x0200cffff,
	0x0afac00ac,
	0x0200d0065,
	0x00800156b,
	0x00800156c,
	0x0afad00b4,
	0x0c7a70048,
	0x0c7a6004c,


@@ 4614,7 4615,7 @@ ulong bootcode[]={
	0x08fa30034,
	0x02002ffff,
	0x000431023,
	0x00c0017be,
	0x00c0017bf,
	0x0afa20004,
	0x08fad00b4,
	0x023ae0078,


@@ 4636,7 4637,7 @@ ulong bootcode[]={
	0x000671823,
	0x004600134,
	0x0afa7002c,
	0x00c0017be,
	0x00c0017bf,
	0x0afa30004,
	0x0c7a30040,
	0x0c7a20044,


@@ 4645,7 4646,7 @@ ulong bootcode[]={
	0x046201083,
	0x0e7a30004,
	0x0e7a20008,
	0x00c00177c,
	0x00c00177d,
	0x000000027,
	0x08fad00b4,
	0x023ae0078,


@@ 4703,7 4704,7 @@ ulong bootcode[]={
	0x024e70001,
	0x02484fff6,
	0x0a0440001,
	0x00800164e,
	0x00800164f,
	0x024c6ffff,
	0x010e00007,
	0x0200b0001,


@@ 4771,7 4772,7 @@ ulong bootcode[]={
	0x020030030,
	0x0a0430000,
	0x024e7ffff,
	0x008001695,
	0x008001696,
	0x024c60001,
	0x019000013,
	0x000000027,


@@ 4791,7 4792,7 @@ ulong bootcode[]={
	0x0256b0001,
	0x0a0430000,
	0x02508ffff,
	0x0080016a6,
	0x0080016a7,
	0x024c60001,
	0x08fa300b0,
	0x000000027,


@@ 4820,7 4821,7 @@ ulong bootcode[]={
	0x0afa30008,
	0x0afa2000c,
	0x08fa300b0,
	0x00c00133f,
	0x00c001340,
	0x0afa30010,
	0x08fa20000,
	0x023bd00a0,


@@ 4876,19 4877,19 @@ ulong bootcode[]={
	0x000001810,
	0x024630030,
	0x0a0430000,
	0x0080016cd,
	0x0080016ce,
	0x024c60001,
	0x000061825,
	0x001231021,
	0x02003002b,
	0x0a0430000,
	0x0080016ee,
	0x0080016ef,
	0x024c60001,
	0x000061025,
	0x001221821,
	0x020020065,
	0x0a0620000,
	0x0080016e4,
	0x0080016e5,
	0x024c60001,
	0x020030067,
	0x011a30006,


@@ 4896,7 4897,7 @@ ulong bootcode[]={
	0x020030068,
	0x011a30003,
	0x000000027,
	0x0080016c7,
	0x0080016c8,
	0x000000027,
	0x024c7ffff,
	0x004e00006,


@@ 4916,11 4917,11 @@ ulong bootcode[]={
	0x000000027,
	0x01107ff93,
	0x000073025,
	0x0080016c7,
	0x0080016c8,
	0x024c60001,
	0x00800172c,
	0x00800172d,
	0x02508ffff,
	0x008001724,
	0x008001725,
	0x024e7ffff,
	0x08fa30034,
	0x02002ffff,


@@ 4930,7 4931,7 @@ ulong bootcode[]={
	0x000003825,
	0x08fa30034,
	0x0200d0068,
	0x008001682,
	0x008001683,
	0x001835023,
	0x08fa200b0,
	0x000000027,


@@ 4941,17 4942,17 @@ ulong bootcode[]={
	0x001221821,
	0x02002002b,
	0x0a0620000,
	0x008001673,
	0x008001674,
	0x024c60001,
	0x0c7c180e2,
	0x0c7c080e6,
	0x0c7c180e6,
	0x0c7c080ea,
	0x000000027,
	0x046203182,
	0x0e7a70040,
	0x0e7a60044,
	0x0e7a70004,
	0x0e7a60008,
	0x00c00177c,
	0x00c00177d,
	0x000000027,
	0x08fad00b4,
	0x023ae0078,


@@ 4978,14 4979,14 @@ ulong bootcode[]={
	0x046222181,
	0x0e7a70040,
	0x0e7a60044,
	0x008001645,
	0x008001646,
	0x000000027,
	0x0080015e1,
	0x0080015e2,
	0x0258cffff,
	0x020020001,
	0x0afa20014,
	0x025ad0020,
	0x00800156b,
	0x00800156c,
	0x0afad00b4,
	0x023bdffe8,
	0x0afbf0000,


@@ 5002,7 5003,7 @@ ulong bootcode[]={
	0x04624c081,
	0x0e7a30004,
	0x0e7a20008,
	0x00c001861,
	0x00c001862,
	0x0afa2000c,
	0x04620c032,
	0x000000027,


@@ 5031,7 5032,7 @@ ulong bootcode[]={
	0x023a2001c,
	0x0e7a30004,
	0x0e7a20008,
	0x00c001861,
	0x00c001862,
	0x0afa2000c,
	0x0c7a1001c,
	0x0c7a00020,


@@ 5047,7 5048,7 @@ ulong bootcode[]={
	0x04624c081,
	0x0e7a30004,
	0x0e7a20008,
	0x00c00177c,
	0x00c00177d,
	0x000000027,
	0x08fa20000,
	0x023bd000c,


@@ 5060,7 5061,7 @@ ulong bootcode[]={
	0x004810008,
	0x000000027,
	0x000041023,
	0x00c0017be,
	0x00c0017bf,
	0x0afa20004,
	0x08fa20000,
	0x023bd0014,


@@ 5081,12 5082,12 @@ ulong bootcode[]={
	0x000042843,
	0x0afa50010,
	0x000851823,
	0x00c0017be,
	0x00c0017bf,
	0x0afa30004,
	0x0e7a10008,
	0x0e7a0000c,
	0x08fa20010,
	0x00c0017be,
	0x00c0017bf,
	0x0afa20004,
	0x0c7a30008,
	0x0c7a2000c,


@@ 5241,7 5242,7 @@ ulong bootcode[]={
	0x00045202a,
	0x014800013,
	0x000000027,
	0x08fc3813e,
	0x08fc38142,
	0x08fa40008,
	0x000a31807,
	0x0201cffff,


@@ 5263,7 5264,7 @@ ulong bootcode[]={
	0x00065202a,
	0x01480fff3,
	0x000000027,
	0x08fc38142,
	0x08fc38146,
	0x024a2ffea,
	0x000431007,
	0x0201cffff,


@@ 5271,7 5272,7 @@ ulong bootcode[]={
	0x08fa4000c,
	0x000000027,
	0x000821024,
	0x008001882,
	0x008001883,
	0x0afa2000c,
	0x08fa3000c,
	0x08fa40004,


@@ 5381,7 5382,7 @@ ulong bootcode[]={
	0x000000027,
	0x0a0c8ffff,
	0x024c6ffff,
	0x008001900,
	0x008001901,
	0x024e7ffff,
	0x023bdfff4,
	0x03c027ff0,


@@ 5411,7 5412,7 @@ ulong bootcode[]={
	0x000000825,
	0x0e7a50004,
	0x0e7a40008,
	0x00c001941,
	0x00c001942,
	0x0afa0000c,
	0x014200005,
	0x000000027,


@@ 5483,6 5484,7 @@ ulong bootcode[]={
	0x000000825,
	0x000000000,
	0x000000000,
	0x000000000,
	0x07072696e,
	0x074206572,
	0x0726f7273,


@@ 5516,23 5518,24 @@ ulong bootcode[]={
	0x005f5e100,
	0x03b9aca00,
	0x000000000,
	0x00000723c,
	0x000007241,
	0x000007256,
	0x00000725d,
	0x000007272,
	0x000007278,
	0x00000728d,
	0x000007295,
	0x0000072aa,
	0x000007240,
	0x000007245,
	0x00000725a,
	0x000007261,
	0x000007276,
	0x00000727c,
	0x000007291,
	0x000007299,
	0x0000072ae,
	0x0000072c3,
	0x0000072ca,
	0x0000072b2,
	0x0000072c7,
	0x0000072ce,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000007,
	0x000000000,
	0x000000000,
	0x03fd34413,
	0x055475a32,
	0x000000000,


@@ 5594,13 5597,13 @@ ulong bootcode[]={
	0x000010000,
	0x002000000,
	0x000000000,
	0x000005254,
	0x000005368,
	0x000004d5c,
	0x00000541c,
	0x0000052a0,
	0x0000052e8,
	0x000005338,
	0x000005258,
	0x00000536c,
	0x000004d60,
	0x000005420,
	0x0000052a4,
	0x0000052ec,
	0x00000533c,
	0x000000000,
	0x000000000,
	0x000000000,


@@ 5980,7 5983,8 @@ ulong bootcode[]={
	0x065617365,
	0x020726562,
	0x06f6f7400,
	0x000000000,
	0x00005d78,
	0x00005d80,
	0x0,
	0x00005d80,
	0x0,
};

M power/clock.c => power/clock.c +5 -2
@@ 115,8 115,11 @@ clock(Ureg *ur)
				else
					sched();
			}
			if(u->nnote && (ur->status&KUP))
				notify(ur);
			if(ur->status & KUP){
				(*(ulong*)(USTKTOP-BY2WD)) += TK2MS(1);	/* profiling clock */
				if(u->nnote)
					notify(ur);
			}
		}
		return;
	}

M power/main.c => power/main.c +1 -67
@@ 261,7 261,7 @@ userinit(void)
	 * Kernel Stack
	 */
	p->sched.pc = (ulong)init0;
	p->sched.sp = USERADDR+BY2PG-20;
	p->sched.sp = USERADDR+BY2PG-24;	/* BUG */
	p->upage = newpage(0, 0, USERADDR|(p->pid&0xFFFF));

	/*


@@ 381,72 381,6 @@ exit(void)
	firmware();
}

/*
 * Insert new into list after where
 */
void
insert(List **head, List *where, List *new)
{
	if(where == 0){
		new->next = *head;
		*head = new;
	}else{
		new->next = where->next;
		where->next = new;
	}
		
}

/*
 * Insert new into list at end
 */
void
append(List **head, List *new)
{
	List *where;

	where = *head;
	if(where == 0)
		*head = new;
	else{
		while(where->next)
			where = where->next;
		where->next = new;
	}
	new->next = 0;
}

/*
 * Delete old from list
 */
void
delete0(List **head, List *old)
{
	List *l;

	l = *head;
	if(l == old){
		*head = old->next;
		return;
	}
	while(l->next != old)
		l = l->next;
	l->next = old->next;
}

/*
 * Delete old from list.  where->next is known to be old.
 */
void
delete(List **head, List *where, List *old)
{
	if(where == 0){
		*head = old->next;
		return;
	}
	where->next = old->next;
}

typedef struct Conftab {
	char *sym;
	ulong *x;

M power/trap.c => power/trap.c +8 -28
@@ 449,7 449,7 @@ noted(Ureg **urp)


#undef	CHDIR	/* BUG */
#include "/sys/src/libc/mips9sys/sys.h"
#include "/sys/src/libc/9syscall/sys.h"

typedef long Syscall(ulong*);
Syscall sysbind, sysbrk_, syschdir, sysclose, syscreate, sysdeath;


@@ 542,11 542,13 @@ syscall(Ureg *aur)
			msg = "sys: odd stack";
			goto Bad;
		}
		if(((ulong*)ur->pc)[-2] != 0x23bdfffc)	/* new calling convention: look for ADD $-4, SP */
			sp -= BY2WD;
		if(sp<(USTKTOP-BY2PG) || sp>(USTKTOP-5*BY2WD))
			validaddr(sp, 5*BY2WD, 0);
		ret = (*systab[r1])((ulong*)(sp+2*BY2WD));
		if(((ulong*)ur->pc)[-2] == 0x23bdfffc){	/* old calling convention: look for ADD $-4, SP */
			pprint("old system call linkage; recompile\n");
			sp += BY2WD;
		}
		if(sp<(USTKTOP-BY2PG) || sp>(USTKTOP-6*BY2WD))
			validaddr(sp, 6*BY2WD, 0);
		ret = (*systab[r1])((ulong*)(sp+BY2WD));
	}
	ur->pc += 4;
	u->nerrlab = 0;


@@ 571,28 573,6 @@ execpc(ulong entry)
	((Ureg*)UREGADDR)->pc = entry - 4;		/* syscall advances it */
}

#include "errstr.h"

void
error(int code)
{
	strncpy(u->error, errstrtab[code], ERRLEN);
	nexterror();
}

void
errors(char *err)
{
	strncpy(u->error, err, ERRLEN);
	nexterror();
}

void
nexterror(void)
{
	gotolabel(&u->errlab[--u->nerrlab]);
}

void
novme(int v)
{

M ss/main.c => ss/main.c +0 -66
@@ 182,72 182,6 @@ exit(void)
	reset();
}

/*
 * Insert new into list after where
 */
void
insert(List **head, List *where, List *new)
{
	if(where == 0){
		new->next = *head;
		*head = new;
	}else{
		new->next = where->next;
		where->next = new;
	}
		
}

/*
 * Insert new into list at end
 */
void
append(List **head, List *new)
{
	List *where;

	where = *head;
	if(where == 0)
		*head = new;
	else{
		while(where->next)
			where = where->next;
		where->next = new;
	}
	new->next = 0;
}

/*
 * Delete old from list
 */
void
delete0(List **head, List *old)
{
	List *l;

	l = *head;
	if(l == old){
		*head = old->next;
		return;
	}
	while(l->next != old)
		l = l->next;
	l->next = old->next;
}

/*
 * Delete old from list.  where->next is known to be old.
 */
void
delete(List **head, List *where, List *old)
{
	if(where == 0){
		*head = old->next;
		return;
	}
	where->next = old->next;
}

Conf	conf;

void

M ss/screen.h => ss/screen.h +2 -0
@@ 27,3 27,5 @@ extern Mouseinfo	mouse;
extern Cursorinfo	cursor;

extern void		mouseupdate(int);
#define kbitblt 	gbitblt
#define ubitblt 	gbitblt

M ss/trap.c => ss/trap.c +1 -24
@@ 264,7 264,7 @@ noted(Ureg **urp)
}

#undef	CHDIR	/* BUG */
#include "/sys/src/libc/sparc9sys/sys.h"
#include "/sys/src/libc/9syscall/sys.h"

typedef long Syscall(ulong*);
Syscall	sysr1, sysfork, sysexec, sysgetpid, syssleep, sysexits, sysdeath, syswait;


@@ 378,26 378,3 @@ execpc(ulong entry)
{
	((Ureg*)UREGADDR)->pc = entry - 4;		/* syscall advances it */
}

#include "errstr.h"

void
error(int code)
{
	strncpy(u->error, errstrtab[code], ERRLEN);
	nexterror();
}

void
errors(char *err)
{
	strncpy(u->error, err, ERRLEN);
	nexterror();
}


void
nexterror(void)
{
	gotolabel(&u->errlab[--u->nerrlab]);
}