64-bit clean 8169 driver Reference: /n/atom/patch/applied2013/nix8169clean Date: Fri Aug 23 05:01:52 CES 2013 Signed-off-by: quanstro@quanstro.net --- /sys/src/nix/k10/ether8169.c Fri Aug 23 05:01:32 2013 +++ /sys/src/nix/k10/ether8169.c Fri Aug 23 05:01:33 2013 @@ -521,8 +521,8 @@ nexterror(); } - csr32w(ctlr, Dtccr+4, 0); - csr32w(ctlr, Dtccr, PCIWADDR(ctlr->dtcc)|Cmd); + csr32w(ctlr, Dtccr+4, Pciwaddrh(ctlr->dtcc)); + csr32w(ctlr, Dtccr, Pciwaddrl(ctlr->dtcc)|Cmd); for(timeo = 0; timeo < 1000; timeo++){ if(!(csr32r(ctlr, Dtccr) & Cmd)) break; @@ -651,8 +651,8 @@ break; } ctlr->rb[rdt] = bp; - d->addrlo = PCIWADDR(bp->rp); - d->addrhi = 0; + d->addrlo = Pciwaddrl(bp->rp); + d->addrhi = Pciwaddrh(bp->rp); }else iprint("i8169: rx overrun\n"); coherence(); @@ -801,10 +801,10 @@ */ csr32w(ctlr, Mpc, 0); csr8w(ctlr, Etx, 0x3f); - csr32w(ctlr, Tnpds+4, 0); - csr32w(ctlr, Tnpds, PCIWADDR(ctlr->td)); - csr32w(ctlr, Rdsar+4, 0); - csr32w(ctlr, Rdsar, PCIWADDR(ctlr->rd)); + csr32w(ctlr, Tnpds+4, Pciwaddrh(ctlr->td)); + csr32w(ctlr, Tnpds, Pciwaddrl(ctlr->td)); + csr32w(ctlr, Rdsar+4, Pciwaddrh(ctlr->rd)); + csr32w(ctlr, Rdsar, Pciwaddrl(ctlr->rd)); csr16w(ctlr, Rms, Mtu); /* was Mps; see above comment */ r = csr16r(ctlr, Mulint) & 0xF000; /* no early rx interrupts */ csr16w(ctlr, Mulint, r); @@ -964,8 +964,8 @@ break; d = &ctlr->td[x]; - d->addrlo = PCIWADDR(bp->rp); - d->addrhi = 0; + d->addrlo = Pciwaddrl(bp->rp); + d->addrhi = Pciwaddrh(bp->rp); ctlr->tb[x] = bp; coherence(); d->control |= Own | Fs | Ls | BLEN(bp);