- add ilockdepth to Mach structure, - add pause, rdtsc, - correct the misnamed ISAConf, - remove ethercfgmatch from ether82598.c Reference: /n/atom/patch/applied/fspcfixes Date: Wed Apr 16 04:17:52 CES 2014 Signed-off-by: quanstro@quanstro.net --- /sys/src/fs/pc/scsi.c Wed Apr 16 04:17:10 2014 +++ /sys/src/fs/pc/scsi.c Wed Apr 16 04:17:11 2014 @@ -77,7 +77,7 @@ if((ctlr->io = (*scsictlr[n].reset)(ctlrno, ctlr)) == 0) break; - print("scsi#%d: %s: port 0x%lux irq %lud", + print("scsi#%d: %s: port %#P irq %d", ctlrno, ctlr->type, ctlr->port, ctlr->irq); if(ctlr->mem) --- /sys/src/fs/pc/l.s Wed Apr 16 04:17:13 2014 +++ /sys/src/fs/pc/l.s Wed Apr 16 04:17:14 2014 @@ -294,6 +294,17 @@ CPUID RET +TEXT pause(SB), 1, $-4 + PAUSE + RET + +TEXT rdtsc(SB), 1, $-4 + MOVL .ret+0(FP), CX + RDTSC + MOVL AX, 0(CX) + MOVL DX, 4(CX) + RET + /* * routines to load/read various system registers */ --- /sys/src/fs/pc/io.h Wed Apr 16 04:17:17 2014 +++ /sys/src/fs/pc/io.h Wed Apr 16 04:17:18 2014 @@ -64,8 +64,6 @@ MaxScsi = 4, NTarget = 16, - - MaxEther = 6, }; #define DMAOK(x, l) ((ulong)(((ulong)(x))+(l)) < (ulong)(KZERO+16*1024*1024)) @@ -258,11 +256,12 @@ typedef struct ISAConf { char type[NAMELEN]; ulong port; - ulong irq; + uint irq; ulong dma; ulong mem; ulong size; ulong freq; + int tbdf; /* type+bus+device+function */ int nopt; char opt[NISAOPT][ISAOPTLEN]; --- /sys/src/fs/pc/fns.h Wed Apr 16 04:17:19 2014 +++ /sys/src/fs/pc/fns.h Wed Apr 16 04:17:20 2014 @@ -1,6 +1,8 @@ #include "../port/portfns.h" void aamloop(int); +int adec(int*); +int ainc(int*); int atainit(void); void cgaputc(int); void cgaputs(char*, int); @@ -45,6 +47,7 @@ void outs(int, ushort); void outsl(int, void*, int); void outss(int, void*, int); +void pause(void); void printcpufreq(void); void putcr3(ulong); void putcr4(ulong); @@ -52,6 +55,7 @@ void putidt(Segdesc*, int); void puttr(ulong); void rdmsr(int, vlong*); +u64int rdtsc(void); void setvec(int, void (*)(Ureg*, void*), void*); Mpl splhi(void); Mpl spllo(void); --- /sys/src/fs/pc/ether82598.c Wed Apr 16 04:17:22 2014 +++ /sys/src/fs/pc/ether82598.c Wed Apr 16 04:17:23 2014 @@ -994,16 +994,6 @@ } int -ethercfgmatch(Ether *e, Pcidev *p, uintmem port) -{ - if(e->port == 0 || e->port == port) - if(1 || e->tbdf == BUSUNKNOWN || p == nil || e->tbdf == p->tbdf){ - return 0; - } - return -1; -} - -int i82598pnp(Ether *e) { Ctlr *c; --- /sys/src/fs/pc/archdat.h Wed Apr 16 04:17:25 2014 +++ /sys/src/fs/pc/archdat.h Wed Apr 16 04:17:26 2014 @@ -59,6 +59,7 @@ ulong cause; /* arg to intr */ // Ureg* ureg; /* arg to intr */ int loopconst; + int ilockdepth; int cpumhz; uvlong cpuhz; --- /sys/src/fs/pc/etherif.c Wed Apr 16 04:17:27 2014 +++ /sys/src/fs/pc/etherif.c Wed Apr 16 04:17:28 2014 @@ -323,7 +323,8 @@ e->irq = 9; memmove(e->ifc.ea, e->ea, sizeof e->ea); snprint(buf, sizeof buf, "ether%d", ctlrno); - intrenable(e->irq, e->interrupt, e, e->tbdf, buf); +// intrenable(e->irq, e->interrupt, e, e->tbdf, buf); + setvec(Int0vec + e->irq, e->interrupt, e); print("ether%d: %s: %dMbps port %#p irq %d mtu %d: %E\n", ctlrno, e->type, e->mbps, e->port, e->irq, e->ifc.maxmtu, e->ea);