Browse Source

Plan 9 from Bell Labs 2013-06-29

David du Colombier 10 years ago
parent
commit
9b51870ad1

File diff suppressed because it is too large
+ 142 - 89
lib/pci


+ 2 - 0
sys/man/8/mk9660

@@ -255,3 +255,5 @@ disk/mk9660 -9cj -s /sys/src \e
 .IR dossrv (4)),
 .IR cdfs (4),
 .IR mkfs (8)
+.br
+.B http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-119.pdf

+ 0 - 4
sys/src/9/bcm/devusb.c

@@ -104,10 +104,6 @@ struct Hcitype
 
 #define QID(q)	((int)(q).path)
 
-static char Edetach[] = "device is detached";
-static char Enotconf[] = "endpoint not configured";
-char Estalled[] = "endpoint stalled";
-
 static Cmdtab usbctls[] =
 {
 	{CMdebug,	"debug",	2},

+ 1 - 2
sys/src/9/bcm/usbdwc.c

@@ -61,7 +61,6 @@ static Ctlr dwc;
 static int debug;
 
 static char Ebadlen[] = "bad usb request length";
-static char Enotconfig[] = "usb endpoint not configured";
 
 static void clog(Ep *ep, Hostchan *hc);
 static void logdump(Ep *ep);
@@ -708,7 +707,7 @@ epopen(Ep *ep)
 		ep->dev->nb, ep->nb, ep->ttype);
 	switch(ep->ttype){
 	case Tnone:
-		error(Enotconfig);
+		error(Enotconf);
 	case Tintr:
 		assert(ep->pollival > 0);
 		/* fall through */

+ 0 - 4
sys/src/9/kw/devusb.c

@@ -104,10 +104,6 @@ struct Hcitype
 
 #define QID(q)	((int)(q).path)
 
-static char Edetach[] = "device is detached";
-static char Enotconf[] = "endpoint not configured";
-char Estalled[] = "endpoint stalled";
-
 static Cmdtab usbctls[] =
 {
 	{CMdebug,	"debug",	2},

+ 0 - 4
sys/src/9/omap/devusb.c

@@ -104,10 +104,6 @@ struct Hcitype
 
 #define QID(q)	((int)(q).path)
 
-static char Edetach[] = "device is detached";
-static char Enotconf[] = "endpoint not configured";
-char Estalled[] = "endpoint stalled";
-
 static Cmdtab usbctls[] =
 {
 	{CMdebug,	"debug",	2},

+ 0 - 4
sys/src/9/pc/devusb.c

@@ -104,10 +104,6 @@ struct Hcitype
 
 #define QID(q)	((int)(q).path)
 
-static char Edetach[] = "device is detached";
-static char Enotconf[] = "endpoint not configured";
-char Estalled[] = "endpoint stalled";
-
 static Cmdtab usbctls[] =
 {
 	{CMdebug,	"debug",	2},

+ 14 - 8
sys/src/9/pc/ether82563.c

@@ -437,15 +437,15 @@ enum {
 static int rbtab[] = {
 	0,
 	9014,
-	1514,
-	1514,
+	ETHERMAXTU,
+	ETHERMAXTU,
 	9234,
 	9234,
 	8192,				/* terrible performance above 8k */
-	1514,
-	1514,
-	1514,
-	1514,
+	ETHERMAXTU,
+	ETHERMAXTU,
+	ETHERMAXTU,
+	ETHERMAXTU,
 	9018,
 };
 
@@ -1432,7 +1432,7 @@ i82563detach(Ctlr* ctlr)
 		r += ctlr->pba & 0xffff;
 		r >>= 1;
 		csr32w(ctlr, Pba, r);
-	} else if(ctlr->type == i82573 && ctlr->rbsz > 1514)
+	} else if(ctlr->type == i82573 && ctlr->rbsz > ETHERMAXTU)
 		csr32w(ctlr, Pba, 14);
 	ctlr->pba = csr32r(ctlr, Pba);
 
@@ -1684,7 +1684,13 @@ i82563pci(void)
 		ctlr->port = io;
 		ctlr->pcidev = p;
 		ctlr->type = type;
-		ctlr->rbsz = rbtab[type];
+		/*
+		 * on the assumption that allowing jumbo packets makes
+		 * the controller much slower (as is true of the 82579),
+		 * never allow jumbos.
+		 */
+		// ctlr->rbsz = rbtab[type];
+		ctlr->rbsz = ETHERMAXTU;
 		ctlr->nic = mem;
 
 		if(i82563reset(ctlr)){

+ 0 - 4
sys/src/9/pc/usbohci.c

@@ -363,10 +363,6 @@ static Edpool edpool;
 static Tdpool tdpool;
 static Ctlr* ctlrs[Nhcis];
 
-static	char	EnotWritten[] = "usb write unfinished";
-static	char	EnotRead[] = "usb read unfinished";
-static	char	Eunderrun[] = "usb endpoint underrun";
-
 static	QLock	usbhstate;	/* protects name space state */
 
 static int	schedendpt(Ctlr *ub, Ep *ep);

+ 0 - 3
sys/src/9/port/aoe.h

@@ -73,6 +73,3 @@ typedef struct {
 } Aoeqc;
 
 #define AOEQCSZ		offsetof(Aoeqc, payload[0])
-
-extern char Echange[];
-extern char Enotup[];

+ 6 - 9
sys/src/9/port/devaoe.c

@@ -257,9 +257,6 @@ static int	debug;
 static int	autodiscover	= 1;
 static int	rediscover;
 
-char 	Enotup[] 	= "aoe device is down";
-char	Echange[]	= "media or partition has changed";
-
 static Srb*
 srballoc(ulong sz)
 {
@@ -433,7 +430,7 @@ downdev(Aoedev *d, char *err)
 	f = d->frames;
 	e = f + d->nframes;
 	for(; f < e; f->tag = Tfree, f->srb = nil, f++)
-		frameerror(d, f, Enotup);
+		frameerror(d, f, Eaoedown);
 	d->inprocess = nil;
 	eventlog("%æ: removed; %s\n", d, err);
 }
@@ -945,7 +942,7 @@ aoeopen(Chan *c, int omode)
 		nexterror();
 	}
 	if(!UP(d))
-		error(Enotup);
+		error(Eaoedown);
 	c = devopen(c, omode, 0, 0, aoegen);
 	d->nopen++;
 	poperror();
@@ -1275,11 +1272,11 @@ unitread(Chan *c, void *db, long len, vlong off)
 		return rw(d, Read, db, len, off);
 	case Qconfig:
 		if (!UP(d))
-			error(Enotup);
+			error(Eaoedown);
 		return readmem(off, db, len, d->config, d->nconfig);
 	case Qident:
 		if (!UP(d))
-			error(Enotup);
+			error(Eaoedown);
 		return readmem(off, db, len, d->ident, sizeof d->ident);
 	}
 }
@@ -1394,7 +1391,7 @@ configwrite(Aoedev *d, void *db, long len)
 	Srb *srb;
 
 	if(!UP(d))
-		error(Enotup);
+		error(Eaoedown);
 	if(len > ETHERMAXTU - AOEQCSZ)
 		error(Etoobig);
 	srb = srballoc(len);
@@ -2418,7 +2415,7 @@ removeaoedev(Aoedev *d)
 	d->ndl = 0;
 	qunlock(d);
 	for(i = 0; i < d->nframes; i++)
-		frameerror(d, d->frames+i, Enotup);
+		frameerror(d, d->frames+i, Eaoedown);
 
 	if(p)
 		p->next = d->next;

+ 0 - 2
sys/src/9/port/devsd.c

@@ -15,8 +15,6 @@
 extern Dev sddevtab;
 extern SDifc* sdifc[];
 
-static char Echange[] = "media or partition has changed";
-
 static char devletters[] = "0123456789"
 	"abcdefghijklmnopqrstuvwxyz"
 	"ABCDEFGHIJKLMNOPQRSTUVWXYZ";

+ 5 - 0
sys/src/9/port/error.h

@@ -51,3 +51,8 @@ extern char Enegoff[];		/* negative i/o offset */
 extern char Ecmdargs[];		/* wrong #args in control message */
 extern char Ebadip[];		/* bad ip address syntax */
 extern char Edirseek[];		/* seek in directory */
+extern char Echange[];		/* media or partition has changed */
+extern char Estalled[];		/* endpoint stalled */
+extern char Edetach[];		/* device is detached */
+extern char Enotconf[];		/* endpoint not configured */
+extern char Eaoedown[];		/* aoe device is down */

+ 1 - 4
sys/src/9/port/sdaoe.c

@@ -13,9 +13,6 @@
 #include "../port/netif.h"
 #include "../port/aoe.h"
 
-extern	char	Echange[];
-extern	char	Enotup[];
-
 #define uprint(...)	snprint(up->genbuf, sizeof up->genbuf, __VA_ARGS__);
 
 enum {
@@ -500,7 +497,7 @@ aoerio(SDreq *r)
 
 	if(waserror()){
 		if(strcmp(up->errstr, Echange) == 0 ||
-		    strcmp(up->errstr, Enotup) == 0)
+		    strcmp(up->errstr, Eaoedown) == 0)
 			unit->sectors = 0;
 		nexterror();
 	}

+ 0 - 1
sys/src/9/port/usb.h

@@ -191,6 +191,5 @@ struct Udev
 void	addhcitype(char *type, int (*reset)(Hci*));
 
 extern char *usbmodename[];
-extern char Estalled[];
 
 extern char *seprintdata(char*,char*,uchar*,int);

+ 0 - 1
sys/src/9/port/usbehci.c

@@ -365,7 +365,6 @@ union Ed
 int ehcidebug = 0;
 
 static Edpool edpool;
-static char Ebug[] = "not yet implemented";
 static char* qhsname[] = { "idle", "install", "run", "done", "close", "FREE" };
 
 Ecapio* ehcidebugcapio;

+ 1 - 1
sys/src/cmd/disk/9660/cdrdwr.c

@@ -275,7 +275,7 @@ setvolsize(Cdimg *cd, uvlong block, ulong size)
 	assert(block != 0);
 
 	Cwseek(cd, block * Blocksize + offsetof(Cvoldesc, volsize[0]));
-	Cputn(cd, size, 4);
+	Cputn(cd, size, 4);			/* size in blocks */
 }
 
 void

+ 4 - 6
sys/src/cmd/disk/9660/dump9660.c

@@ -322,11 +322,10 @@ Dofix:
 		 * Patch in root directories.
 		 */
 		setroot(cd, cd->iso9660pvd, iroot.block, iroot.length);
-		setvolsize(cd, cd->iso9660pvd, (vlong)cd->nextblock * Blocksize);
+		setvolsize(cd, cd->iso9660pvd, cd->nextblock);
 		if(cd->flags & CDjoliet){
 			setroot(cd, cd->jolietsvd, jroot.block, jroot.length);
-			setvolsize(cd, cd->jolietsvd,
-				(vlong)cd->nextblock * Blocksize);
+			setvolsize(cd, cd->jolietsvd, cd->nextblock);
 		}
 	}else{
 		/*
@@ -356,11 +355,10 @@ Dofix:
 		 * Patch in new root directory entry.
 		 */
 		setroot(cd, cd->iso9660pvd, idumproot.block, idumproot.length);
-		setvolsize(cd, cd->iso9660pvd, (vlong)cd->nextblock * Blocksize);
+		setvolsize(cd, cd->iso9660pvd, cd->nextblock);
 		if(cd->flags & CDjoliet){
 			setroot(cd, cd->jolietsvd, jdumproot.block, jdumproot.length);
-			setvolsize(cd, cd->jolietsvd,
-				(vlong)cd->nextblock * Blocksize);
+			setvolsize(cd, cd->jolietsvd, cd->nextblock);
 		}
 	}
 	writepathtables(cd);	

+ 12 - 14
sys/src/cmd/vl/asm.c

@@ -172,7 +172,7 @@ void
 asmb(void)
 {
 	Prog *p;
-	long t, etext;
+	vlong t, etext;
 	Optab *o;
 
 	if(debug['v'])
@@ -187,8 +187,7 @@ asmb(void)
 			autosize = p->to.offset + 4;
 		}
 		if(p->pc != pc) {
-			diag("phase error %lux sb %lux",
-				p->pc, pc);
+			diag("phase error %llux sb %llux", p->pc, pc);
 			if(!debug['a'])
 				prasm(curp);
 			pc = p->pc;
@@ -445,6 +444,9 @@ asmb(void)
 		break;
 	case 6:
 		break;
+	case 7:
+		elf64(MIPSR4K, little? ELFDATA2LSB: ELFDATA2MSB, 0, nil);
+		break;
 	}
 	cflush();
 }
@@ -599,9 +601,9 @@ putsymb(char *s, int t, long v, int ver)
 void
 asmlc(void)
 {
-	long oldpc, oldlc;
+	long oldlc, v, s;
+	vlong oldpc;
 	Prog *p;
-	long v, s;
 
 	oldpc = INITTEXT;
 	oldlc = 0;
@@ -610,8 +612,7 @@ asmlc(void)
 			if(p->as == ATEXT)
 				curtext = p;
 			if(debug['V'])
-				Bprint(&bso, "%6lux %P\n",
-					p->pc, p);
+				Bprint(&bso, "%6llux %P\n", p->pc, p);
 			continue;
 		}
 		if(debug['V'])
@@ -643,8 +644,7 @@ asmlc(void)
 				else
 					Bprint(&bso, " lc%ld(%d,%ld)\n",
 						s, 0, s);
-				Bprint(&bso, "%6lux %P\n",
-					p->pc, p);
+				Bprint(&bso, "%6llux %P\n", p->pc, p);
 			}
 			lcsize += 5;
 			continue;
@@ -653,15 +653,13 @@ asmlc(void)
 			CPUT(0+s);	/* 1-64 +lc */
 			if(debug['V']) {
 				Bprint(&bso, " lc+%ld(%ld)\n", s, 0+s);
-				Bprint(&bso, "%6lux %P\n",
-					p->pc, p);
+				Bprint(&bso, "%6llux %P\n", p->pc, p);
 			}
 		} else {
 			CPUT(64-s);	/* 65-128 -lc */
 			if(debug['V']) {
 				Bprint(&bso, " lc%ld(%ld)\n", s, 64-s);
-				Bprint(&bso, "%6lux %P\n",
-					p->pc, p);
+				Bprint(&bso, "%6llux %P\n", p->pc, p);
 			}
 		}
 		lcsize++;
@@ -954,7 +952,7 @@ asmout(Prog *p, Optab *o, int aflag)
 			if(o2) {
 				o1 += 1;
 				if(debug['a'])
-					Bprint(&bso, " %.8lux: %.8lux %.8lux%P\n",
+					Bprint(&bso, " %.8llux: %.8lux %.8lux%P\n",
 						p->pc, o1, o2, p);
 				LPUT(o1);
 				LPUT(o2);

+ 11 - 11
sys/src/cmd/vl/l.h

@@ -60,7 +60,7 @@ struct	Prog
 	} u0;
 	Prog*	cond;
 	Prog*	link;
-	long	pc;
+	vlong	pc;
 	long	line;
 	uchar	mark;
 	uchar	optab;
@@ -77,7 +77,7 @@ struct	Sym
 	short	version;
 	short	become;
 	short	frame;
-	long	value;
+	vlong	value;
 	Sym*	link;
 };
 struct	Autom
@@ -187,10 +187,10 @@ EXTERN union
 
 EXTERN	long	HEADR;			/* length of header */
 EXTERN	int	HEADTYPE;		/* type of header */
-EXTERN	long	INITDAT;		/* data location */
-EXTERN	long	INITRND;		/* data round above text location */
-EXTERN	long	INITTEXT;		/* text location */
-EXTERN	long	INITTEXTP;		/* text location (physical) */
+EXTERN	vlong	INITDAT;		/* data location */
+EXTERN	vlong	INITRND;		/* data round above text location */
+EXTERN	vlong	INITTEXT;		/* text location */
+EXTERN	vlong	INITTEXTP;		/* text location (physical) */
 EXTERN	char*	INITENTRY;		/* entry point */
 EXTERN	long	autosize;
 EXTERN	Biobuf	bso;
@@ -231,11 +231,11 @@ EXTERN	long	instoffset;
 EXTERN	Opcross	opcross[10];
 EXTERN	Oprang	oprange[ALAST];
 EXTERN	char*	outfile;
-EXTERN	long	pc;
+EXTERN	vlong	pc;
 EXTERN	uchar	repop[ALAST];
 EXTERN	long	symsize;
 EXTERN	Prog*	textp;
-EXTERN	long	textsize;
+EXTERN	vlong	textsize;
 EXTERN	long	thunk;
 EXTERN	int	version;
 EXTERN	char	xcmp[32][32];
@@ -279,7 +279,7 @@ void	asmb(void);
 void	asmlc(void);
 int	asmout(Prog*, Optab*, int);
 void	asmsym(void);
-long	atolwhex(char*);
+vlong	atolwhex(char*);
 Prog*	brloop(Prog*);
 void	buildop(void);
 void	buildrep(int, int);
@@ -319,6 +319,7 @@ void*	mysbrk(ulong);
 void	names(void);
 void	nocache(Prog*);
 void	noops(void);
+void	nopstat(char*, Count*);
 void	nuxiinit(void);
 void	objfile(char*);
 int	ocmp(const void*, const void*);
@@ -333,7 +334,7 @@ int	pseudo(Prog*);
 void	putsymb(char*, int, long, int);
 long	regoff(Adr*);
 int	relinv(int);
-long	rnd(long, long);
+vlong	rnd(vlong, long);
 void	sched(Prog*, Prog*);
 void	span(void);
 void	strnput(char*, int);
@@ -343,4 +344,3 @@ void	wputl(long);
 void	xdefine(char*, int, long);
 void	xfol(Prog*);
 void	xfol(Prog*);
-void	nopstat(char*, Count*);

+ 15 - 5
sys/src/cmd/vl/obj.c

@@ -22,7 +22,8 @@ static	int	maxlibdir = 0;
  *	-H3 -T0x80020000 -R8		is bootp() format for 4k
  *	-H4 -T0x400000 -R4		is sgi unix coff executable
  *	-H5 -T0x4000A0 -R4		is sgi unix elf executable
- *	-H6						is headerless
+ *	-H6				is headerless
+ *	-H7				is 64-bit elf executable
  */
 
 int little;
@@ -196,14 +197,23 @@ main(int argc, char *argv[])
 		if(INITRND == -1)
 			INITRND = 4096;
 		break;
+	case 7:	/* 64-bit elf executable */
+		HEADR = rnd(Ehdr64sz+3*Phdr64sz, 16);
+		if(INITTEXT == -1)
+			INITTEXT = 0x00400000L+HEADR;
+		if(INITDAT == -1)
+			INITDAT = 0x10000000;
+		if(INITRND == -1)
+			INITRND = 0;
+		break;
 	}
 	if (INITTEXTP == -1)
 		INITTEXTP = INITTEXT;
 	if(INITDAT != 0 && INITRND != 0)
-		print("warning: -D0x%lux is ignored because of -R0x%lux\n",
+		print("warning: -D%#llux is ignored because of -R%#llux\n",
 			INITDAT, INITRND);
 	if(debug['v'])
-		Bprint(&bso, "HEADER = -H0x%d -T0x%lux -D0x%lux -R0x%lux\n",
+		Bprint(&bso, "HEADER = -H%d -T%#llux -D%#llux -R%#llux\n",
 			HEADTYPE, INITTEXT, INITDAT, INITRND);
 	Bflush(&bso);
 	zprg.as = AGOK;
@@ -746,7 +756,7 @@ readsome(int f, uchar *buf, uchar *good, uchar *stop, int max)
 void
 ldobj(int f, long c, char *pn)
 {
-	long ipc;
+	vlong ipc;
 	Prog *p, *t;
 	uchar *bloc, *bsize, *stop;
 	Sym *h[NSYM], *s, *di;
@@ -776,7 +786,7 @@ loop:
 	}
 	o = bloc[0];		/* as */
 	if(o <= AXXX || o >= ALAST) {
-		diag("%s: line %ld: opcode out of range %d", pn, pc-ipc, o);
+		diag("%s: line %lld: opcode out of range %d", pn, pc-ipc, o);
 		print("	probably not a .%c file\n", thechar);
 		errorexit();
 	}

+ 9 - 8
sys/src/cmd/vl/pass.c

@@ -22,7 +22,7 @@ dodata(void)
 				s->type, s->name, p);
 		v = p->from.offset + p->reg;
 		if(v > s->value)
-			diag("initialize bounds (%ld): %s\n%P",
+			diag("initialize bounds (%lld): %s\n%P",
 				s->value, s->name, p);
 	}
 
@@ -135,7 +135,8 @@ dodata(void)
 			if(strlen(s->name) >= 10)	/* has loader address */ 
 				sprint(literal, "$%p.%lux", s, p->from.offset);
 			else
-				sprint(literal, "$%s.%d.%lux", s->name, s->version, p->from.offset);
+				sprint(literal, "$%s.%d.%lux", s->name,
+					s->version, p->from.offset);
 		} else {
 			if(p->from.name != D_NONE)
 				continue;
@@ -338,7 +339,7 @@ loop:
 void
 patch(void)
 {
-	long c, vexit;
+	vlong c, vexit;
 	Prog *p, *q;
 	Sym *s;
 	int a;
@@ -378,7 +379,7 @@ patch(void)
 			q = q->link;
 		}
 		if(q == P) {
-			diag("branch out of range %ld\n%P", c, p);
+			diag("branch out of range %lld\n%P", c, p);
 			p->to.type = D_NONE;
 		}
 		p->cond = q;
@@ -449,10 +450,10 @@ brloop(Prog *p)
 	return P;
 }
 
-long
+vlong
 atolwhex(char *s)
 {
-	long n;
+	vlong n;
 	int f;
 
 	n = 0;
@@ -489,8 +490,8 @@ atolwhex(char *s)
 	return n;
 }
 
-long
-rnd(long v, long r)
+vlong
+rnd(vlong v, long r)
 {
 	long c;
 

+ 2 - 2
sys/src/cmd/vl/span.c

@@ -37,7 +37,7 @@ span(void)
 	Sym *setext, *s;
 	Optab *o;
 	int m, bflag, i;
-	long c, otxt, v;
+	vlong c, otxt, v;
 
 	if(debug['v'])
 		Bprint(&bso, "%5.2f span\n", cputime());
@@ -154,7 +154,7 @@ span(void)
 	if(INITRND)
 		INITDAT = rnd(c, INITRND);
 	if(debug['v'])
-		Bprint(&bso, "tsize = %lux\n", textsize);
+		Bprint(&bso, "tsize = %llux\n", textsize);
 	Bflush(&bso);
 }
 		

Some files were not shown because too many files changed in this diff