Browse Source

Plan 9 from Bell Labs 2007-11-09

David du Colombier 16 years ago
parent
commit
67ae522cac

+ 5 - 5
dist/replica/_plan9.db

@@ -8067,7 +8067,7 @@ sys/src/9/pc/audio.h - 664 sys sys 1015014513 343
 sys/src/9/pc/bios32.c - 664 sys sys 1173287378 3029
 sys/src/9/pc/cga.c - 664 sys sys 1015014513 1843
 sys/src/9/pc/dat.h - 664 sys sys 1190268296 7549
-sys/src/9/pc/devarch.c - 664 sys sys 1191886206 19667
+sys/src/9/pc/devarch.c - 664 sys sys 1194556823 19867
 sys/src/9/pc/devether.c - 664 sys sys 1178823613 10489
 sys/src/9/pc/devfloppy.c - 664 sys sys 1142958305 20139
 sys/src/9/pc/devi82365.c - 664 sys sys 1146318335 20504
@@ -8110,7 +8110,7 @@ sys/src/9/pc/etherrhine.c - 664 sys sys 1081706478 13799
 sys/src/9/pc/ethersink.c - 664 sys sys 1048644103 1076
 sys/src/9/pc/ethersmc.c - 664 sys sys 1162951986 15116
 sys/src/9/pc/ethervgbe.c - 664 sys sys 1160066496 26838
-sys/src/9/pc/ethervt6102.c - 664 sys sys 1175105554 22333
+sys/src/9/pc/ethervt6102.c - 664 sys sys 1194556833 22388
 sys/src/9/pc/etherwavelan.c - 664 sys sys 1131290380 3747
 sys/src/9/pc/floppy.h - 664 sys sys 1055700609 3835
 sys/src/9/pc/fns.h - 664 sys sys 1190268439 4738
@@ -9145,7 +9145,7 @@ sys/src/boot/pc/bootld.c - 664 sys sys 1015007948 1801
 sys/src/boot/pc/bootp.c - 664 sys sys 1168307225 12478
 sys/src/boot/pc/cga.c - 664 sys sys 1015007948 1362
 sys/src/boot/pc/cis.c - 664 sys sys 1144961189 9232
-sys/src/boot/pc/clock.c - 664 sys sys 1103641772 6425
+sys/src/boot/pc/clock.c - 664 sys sys 1194556585 6622
 sys/src/boot/pc/conf.c - 664 sys sys 1094674484 10217
 sys/src/boot/pc/console.c - 664 sys sys 1094674483 3388
 sys/src/boot/pc/dat.h - 664 sys sys 1190921443 3637
@@ -9184,13 +9184,13 @@ sys/src/boot/pc/etherif.h - 664 sys sys 1174077279 1338
 sys/src/boot/pc/etherigbe.c - 664 sys sys 1191446222 41284
 sys/src/boot/pc/ethermii.c - 664 sys sys 1103641771 4413
 sys/src/boot/pc/ethermii.h - 664 sys sys 1071175087 3259
-sys/src/boot/pc/etherrhine.c - 664 sys sys 1144961190 12383
+sys/src/boot/pc/etherrhine.c - 664 sys sys 1194556608 12640
 sys/src/boot/pc/fns.h - 664 sys sys 1193171343 4880
 sys/src/boot/pc/fs.c - 664 sys sys 1094674483 1509
 sys/src/boot/pc/fs.h - 664 sys sys 1094674488 653
 sys/src/boot/pc/ilock.c - 664 sys sys 1015007952 303
 sys/src/boot/pc/inflate.c - 664 sys sys 1021579984 2802
-sys/src/boot/pc/io.h - 664 sys sys 1144961190 6821
+sys/src/boot/pc/io.h - 664 sys sys 1194556593 8134
 sys/src/boot/pc/ip.h - 664 sys sys 1094674489 2461
 sys/src/boot/pc/kbd.c - 664 sys sys 1015007952 10188
 sys/src/boot/pc/kfs.h - 664 sys sys 1032215924 861

+ 5 - 5
dist/replica/plan9.db

@@ -8067,7 +8067,7 @@ sys/src/9/pc/audio.h - 664 sys sys 1015014513 343
 sys/src/9/pc/bios32.c - 664 sys sys 1173287378 3029
 sys/src/9/pc/cga.c - 664 sys sys 1015014513 1843
 sys/src/9/pc/dat.h - 664 sys sys 1190268296 7549
-sys/src/9/pc/devarch.c - 664 sys sys 1191886206 19667
+sys/src/9/pc/devarch.c - 664 sys sys 1194556823 19867
 sys/src/9/pc/devether.c - 664 sys sys 1178823613 10489
 sys/src/9/pc/devfloppy.c - 664 sys sys 1142958305 20139
 sys/src/9/pc/devi82365.c - 664 sys sys 1146318335 20504
@@ -8110,7 +8110,7 @@ sys/src/9/pc/etherrhine.c - 664 sys sys 1081706478 13799
 sys/src/9/pc/ethersink.c - 664 sys sys 1048644103 1076
 sys/src/9/pc/ethersmc.c - 664 sys sys 1162951986 15116
 sys/src/9/pc/ethervgbe.c - 664 sys sys 1160066496 26838
-sys/src/9/pc/ethervt6102.c - 664 sys sys 1175105554 22333
+sys/src/9/pc/ethervt6102.c - 664 sys sys 1194556833 22388
 sys/src/9/pc/etherwavelan.c - 664 sys sys 1131290380 3747
 sys/src/9/pc/floppy.h - 664 sys sys 1055700609 3835
 sys/src/9/pc/fns.h - 664 sys sys 1190268439 4738
@@ -9145,7 +9145,7 @@ sys/src/boot/pc/bootld.c - 664 sys sys 1015007948 1801
 sys/src/boot/pc/bootp.c - 664 sys sys 1168307225 12478
 sys/src/boot/pc/cga.c - 664 sys sys 1015007948 1362
 sys/src/boot/pc/cis.c - 664 sys sys 1144961189 9232
-sys/src/boot/pc/clock.c - 664 sys sys 1103641772 6425
+sys/src/boot/pc/clock.c - 664 sys sys 1194556585 6622
 sys/src/boot/pc/conf.c - 664 sys sys 1094674484 10217
 sys/src/boot/pc/console.c - 664 sys sys 1094674483 3388
 sys/src/boot/pc/dat.h - 664 sys sys 1190921443 3637
@@ -9184,13 +9184,13 @@ sys/src/boot/pc/etherif.h - 664 sys sys 1174077279 1338
 sys/src/boot/pc/etherigbe.c - 664 sys sys 1191446222 41284
 sys/src/boot/pc/ethermii.c - 664 sys sys 1103641771 4413
 sys/src/boot/pc/ethermii.h - 664 sys sys 1071175087 3259
-sys/src/boot/pc/etherrhine.c - 664 sys sys 1144961190 12383
+sys/src/boot/pc/etherrhine.c - 664 sys sys 1194556608 12640
 sys/src/boot/pc/fns.h - 664 sys sys 1193171343 4880
 sys/src/boot/pc/fs.c - 664 sys sys 1094674483 1509
 sys/src/boot/pc/fs.h - 664 sys sys 1094674488 653
 sys/src/boot/pc/ilock.c - 664 sys sys 1015007952 303
 sys/src/boot/pc/inflate.c - 664 sys sys 1021579984 2802
-sys/src/boot/pc/io.h - 664 sys sys 1144961190 6821
+sys/src/boot/pc/io.h - 664 sys sys 1194556593 8134
 sys/src/boot/pc/ip.h - 664 sys sys 1094674489 2461
 sys/src/boot/pc/kbd.c - 664 sys sys 1015007952 10188
 sys/src/boot/pc/kfs.h - 664 sys sys 1032215924 861

+ 5 - 0
dist/replica/plan9.log

@@ -53331,3 +53331,8 @@
 1194381004 0 c sys/src/boot/pc/bcom.c - 664 sys sys 1194380248 6462
 1194480004 0 c sys/man/3/bridge - 664 sys sys 1194478365 3370
 1194480004 1 c sys/man/3/ip - 664 sys sys 1194478359 26321
+1194557404 0 c sys/src/9/pc/devarch.c - 664 sys sys 1194556823 19867
+1194557404 1 c sys/src/9/pc/ethervt6102.c - 664 sys sys 1194556833 22388
+1194557404 2 c sys/src/boot/pc/clock.c - 664 sys sys 1194556585 6622
+1194557404 3 c sys/src/boot/pc/etherrhine.c - 664 sys sys 1194556608 12640
+1194557404 4 c sys/src/boot/pc/io.h - 664 sys sys 1194556593 8134

+ 5 - 1
sys/src/9/pc/devarch.c

@@ -609,10 +609,13 @@ static X86type x86amd[] =
 	{ 5,	1,	23,	"AMD-K5", },	/* guesswork */
 	{ 5,	2,	23,	"AMD-K5", },	/* guesswork */
 	{ 5,	3,	23,	"AMD-K5", },	/* guesswork */
+	{ 5,	4,	23,	"AMD Geode GX1", },	/* guesswork */
+	{ 5,	5,	23,	"AMD Geode GX2", },	/* guesswork */
 	{ 5,	6,	11,	"AMD-K6", },	/* trial and error */
 	{ 5,	7,	11,	"AMD-K6", },	/* trial and error */
 	{ 5,	8,	11,	"AMD-K6-2", },	/* trial and error */
 	{ 5,	9,	11,	"AMD-K6-III", },/* trial and error */
+	{ 5,	0xa,	23,	"AMD Geode LX", },	/* guesswork */
 
 	{ 6,	1,	11,	"AMD-Athlon", },/* trial and error */
 	{ 6,	2,	11,	"AMD-Athlon", },/* trial and error */
@@ -694,7 +697,8 @@ cpuidentify(void)
 	vlong mca, mct;
 
 	cpuid(m->cpuidid, &m->cpuidax, &m->cpuiddx);
-	if(strncmp(m->cpuidid, "AuthenticAMD", 12) == 0)
+	if(strncmp(m->cpuidid, "AuthenticAMD", 12) == 0 ||
+	   strncmp(m->cpuidid, "Geode by NSC", 12) == 0)
 		tab = x86amd;
 	else if(strncmp(m->cpuidid, "CentaurHauls", 12) == 0)
 		tab = x86winchip;

+ 1 - 0
sys/src/9/pc/ethervt6102.c

@@ -931,6 +931,7 @@ vt6102pci(void)
 		switch((p->did<<16)|p->vid){
 		default:
 			continue;
+		case (0x3053<<16)|0x1106:	/* Rhine III in Soekris */
 		case (0x3065<<16)|0x1106:	/* Rhine II */
 		case (0x3106<<16)|0x1106:	/* Rhine III */
 			break;

+ 5 - 1
sys/src/boot/pc/clock.c

@@ -115,10 +115,13 @@ static X86type x86amd[] =
 	{ 5,	1,	23,	"AMD-K5", },	/* guesswork */
 	{ 5,	2,	23,	"AMD-K5", },	/* guesswork */
 	{ 5,	3,	23,	"AMD-K5", },	/* guesswork */
+	{ 5,	4,	23,	"AMD Geode GX1", },	/* guesswork */
+	{ 5,	5,	23,	"AMD Geode GX2", },	/* guesswork */
 	{ 5,	6,	11,	"AMD-K6", },	/* trial and error */
 	{ 5,	7,	11,	"AMD-K6", },	/* trial and error */
 	{ 5,	8,	11,	"AMD-K6-2", },	/* trial and error */
 	{ 5,	9,	11,	"AMD-K6-III", },/* trial and error */
+	{ 5,	0xa,	23,	"AMD Geode LX", },	/* guesswork */
 
 	{ 6,	1,	11,	"AMD-Athlon", },/* trial and error */
 	{ 6,	2,	11,	"AMD-Athlon", },/* trial and error */
@@ -164,7 +167,8 @@ cpuidentify(void)
 	int cpuidax, cpuiddx;
 
 	cpuid(cpuidid, &cpuidax, &cpuiddx);
-	if(strncmp(cpuidid, "AuthenticAMD", 12) == 0)
+	if(strncmp(cpuidid, "AuthenticAMD", 12) == 0 ||
+	   strncmp(cpuidid, "Geode by NSC", 12) == 0)
 		t = x86amd;
 	else
 		t = x86intel;

+ 13 - 3
sys/src/boot/pc/etherrhine.c

@@ -625,12 +625,22 @@ rhinematch(ulong)
 	int nfound = 0;
 	Pcidev *p = nil;
 
-	while (p = pcimatch(p, 0x1106, 0))
-		if (p->did == 0x3065)
+	while(p = pcimatch(p, 0x1106, 0)){
+		if(p->ccrb != Pcibcnet || p->ccru != Pciscether)
+			continue;
+		switch((p->did<<16)|p->vid){
+		default:
+			continue;
+		case (0x3053<<16)|0x1106:	/* Rhine III in Soekris */
+		case (0x3065<<16)|0x1106:	/* Rhine II */
+		case (0x3106<<16)|0x1106:	/* Rhine III */
 			if (++nfound > nrhines) {
 				nrhines++;
-				break;
+				return p;
 			}
+			break;
+		}
+	}
 	return p;
 }
 

+ 48 - 0
sys/src/boot/pc/io.h

@@ -85,6 +85,54 @@ enum {					/* type 0 and type 1 pre-defined header */
 	PciINTP		= 0x3D,		/* interrupt pin */
 };
 
+/* ccrb (base class code) values; controller types */
+enum {
+	Pcibcpci1	= 0,		/* pci 1.0; no class codes defined */
+	Pcibcstore	= 1,		/* mass storage */
+	Pcibcnet	= 2,		/* network */
+	Pcibcdisp	= 3,		/* display */
+	Pcibcmmedia	= 4,		/* multimedia */
+	Pcibcmem	= 5,		/* memory */
+	Pcibcbridge	= 6,		/* bridge */
+	Pcibccomm	= 7,		/* simple comms (e.g., serial) */
+	Pcibcbasesys	= 8,		/* base system */
+	Pcibcinput	= 9,		/* input */
+	Pcibcdock	= 0xa,		/* docking stations */
+	Pcibcproc	= 0xb,		/* processors */
+	Pcibcserial	= 0xc,		/* serial bus (e.g., USB) */
+	Pcibcwireless	= 0xd,		/* wireless */
+	Pcibcintell	= 0xe,		/* intelligent i/o */
+	Pcibcsatcom	= 0xf,		/* satellite comms */
+	Pcibccrypto	= 0x10,		/* encryption/decryption */
+	Pcibcdacq	= 0x11,		/* data acquisition & signal proc. */
+};
+
+/* ccru (sub-class code) values; common cases only */
+enum {
+	/* mass storage */
+	Pciscscsi	= 0,		/* SCSI */
+	Pciscide	= 1,		/* IDE (ATA) */
+
+	/* network */
+	Pciscether	= 0,		/* Ethernet */
+
+	/* display */
+	Pciscvga	= 0,		/* VGA */
+	Pciscxga	= 1,		/* XGA */
+	Pcisc3d		= 2,		/* 3D */
+
+	/* bridges */
+	Pcischostpci	= 0,		/* host/pci */
+	Pciscpcicpci	= 1,		/* pci/pci */
+
+	/* simple comms */
+	Pciscserial	= 0,		/* 16450, etc. */
+	Pciscmultiser	= 1,		/* multiport serial */
+
+	/* serial bus */
+	Pciscusb	= 3,		/* USB */
+};
+
 enum {					/* type 0 pre-defined header */
 	PciBAR2		= 0x18,
 	PciBAR3		= 0x1C,