VTOPHYS
#define wbinv(adr, siz) _wbinv(VTOPHYS(adr), (uint32_t)(siz))
#define inv(adr, siz) _inv(VTOPHYS(adr), (uint32_t)(siz))
rxd[i].xd3 = htole32(VTOPHYS(&rxd[NEXT_RXBUF(i)]));
rxd[i].xd2 = htole32(VTOPHYS(l->rxstore[i]));
txd[i].xd3 = htole32(VTOPHYS(&txd[NEXT_TXBUF(i)]));
txd->xd2 = htole32(VTOPHYS(l->txstore));
CSR_WRITE(l, TLP_RRBA, VTOPHYS(rxd));
CSR_WRITE(l, TLP_TRBA, VTOPHYS(txd));
txd->xd2 = htole32(VTOPHYS(buf));
#define wbinv(adr, siz) _wbinv(VTOPHYS(adr), (uint32_t)(siz))
#define inv(adr, siz) _inv(VTOPHYS(adr), (uint32_t)(siz))
CSR_WRITE_4(sc, FXP_CSR_SCB_GENERAL, VTOPHYS(cbp));
CSR_WRITE_4(sc, FXP_CSR_SCB_GENERAL, VTOPHYS(cb_ias));
rfa->link_addr = htole32(VTOPHYS(rfa));
CSR_WRITE_4(sc, FXP_CSR_SCB_GENERAL, VTOPHYS(rfa));
txd->tbd_array_addr = htole32(VTOPHYS(&txd->tx_buf_addr0));
txd->tx_buf_addr0 = htole32(VTOPHYS(buf));
CSR_WRITE_4(l, FXP_CSR_SCB_GENERAL, VTOPHYS(txd));
#define wbinv(adr, siz) _wbinv(VTOPHYS(adr), (uint32_t)(siz))
#define inv(adr, siz) _inv(VTOPHYS(adr), (uint32_t)(siz))
rxd[0].xd2 = htole32(VTOPHYS(l->rxstore[0]));
rxd[0].xd3 = htole32(VTOPHYS(&rxd[1]));
rxd[1].xd2 = htole32(VTOPHYS(l->rxstore[1]));
rxd[1].xd3 = htole32(VTOPHYS(&rxd[0]));
CSR_WRITE_4(l, TDLB, VTOPHYS(txd));
CSR_WRITE_4(l, RDLB, VTOPHYS(rxd));
txd->xd2 = htole32(VTOPHYS(buf));
#define wbinv(adr, siz) _wbinv(VTOPHYS(adr), (uint32_t)(siz))
#define inv(adr, siz) _inv(VTOPHYS(adr), (uint32_t)(siz))
rxd[0].xd2 = htole32(VTOPHYS(l->rxstore[0]));
rxd[0].xd3 = htole32(VTOPHYS(&rxd[1]));
rxd[1].xd1 = htole32(VTOPHYS(l->rxstore[1]));
rxd[1].xd3 = htole32(VTOPHYS(&rxd[0]));
CSR_WRITE_4(l, VR_RDBA, VTOPHYS(rxd));
CSR_WRITE_4(l, VR_TDBA, VTOPHYS(txd));
txd->xd2 = htole32(VTOPHYS(buf));
#define wbinv(adr, siz) _wbinv(VTOPHYS(adr), (uint32_t)(siz))
#define inv(adr, siz) _inv(VTOPHYS(adr), (uint32_t)(siz))
rxd[0].xd0 = htole32(VTOPHYS(l->rxstore[0]));
rxd[1].xd0 = htole32(VTOPHYS(l->rxstore[1]));
ib->init_rdra = htole32(VTOPHYS(rxd));
ib->init_tdra = htole32(VTOPHYS(txd));
pcn_csr_write(l, PCN_CSR1, VTOPHYS(&initblock) & 0xffff);
pcn_csr_write(l, PCN_CSR2, (VTOPHYS(&initblock) >> 16) & 0xffff);
txd->xd0 = htole32(VTOPHYS(buf));
#define wbinv(adr, siz) _wbinv(VTOPHYS(adr), (uint32_t)(siz))
#define inv(adr, siz) _inv(VTOPHYS(adr), (uint32_t)(siz))
rxd[0].xd2 = htole32(VTOPHYS(l->rxstore[0]));
rxd[1].xd2 = htole32(VTOPHYS(l->rxstore[1]));
CSR_WRITE_4(l, RGE_TNPDS, VTOPHYS(txd));
CSR_WRITE_4(l, RGE_RDSAR, VTOPHYS(rxd));
txd->xd2 = htole32(VTOPHYS(buf));
#define wbinv(adr, siz) _wbinv(VTOPHYS(adr), (uint32_t)(siz))
#define inv(adr, siz) _inv(VTOPHYS(adr), (uint32_t)(siz))
txd->xd0 = htole32(VTOPHYS(txd));
rxd[0].xd0 = htole32(VTOPHYS(&rxd[1]));
rxd[0].xd2 = htole32(VTOPHYS(l->store[0]));
rxd[1].xd0 = htole32(VTOPHYS(&rxd[0]));
rxd[1].xd2 = htole32(VTOPHYS(l->store[1]));
CSR_WRITE(l, SIP_TXDP, VTOPHYS(txd));
CSR_WRITE(l, SIP_RXDP, VTOPHYS(rxd));
txd->xd2 = htole32(VTOPHYS(buf));
#define wbinv(adr, siz) _wbinv(VTOPHYS(adr), (uint32_t)(siz))
#define inv(adr, siz) _inv(VTOPHYS(adr), (uint32_t)(siz))
txd[0].xd1 = htole32(VTOPHYS(&txd[1]));
txd[1].xd1 = htole32(VTOPHYS(&txd[0]));
rxd[0].xd1 = htole32(VTOPHYS(&rxd[1]));
rxd[0].xd2 = htole32(VTOPHYS(l->rxstore[0]));
rxd[1].xd1 = htole32(VTOPHYS(&rxd[0]));
rxd[1].xd2 = htole32(VTOPHYS(l->rxstore[1]));
CSR_WRITE_4(l, SK_RXQ1_CURADDR_LO, VTOPHYS(rxd));
CSR_WRITE_4(l, SK_TXQS1_CURADDR_LO, VTOPHYS(txd));
txd->xd2 = htole32(VTOPHYS(buf));
#define wbinv(adr, siz) _wbinv(VTOPHYS(adr), (uint32_t)(siz))
#define inv(adr, siz) _inv(VTOPHYS(adr), (uint32_t)(siz))
rxd[0].xd2 = htole32(VTOPHYS(l->rxstore[0]));
rxd[0].xd3 = htole32(VTOPHYS(&rxd[1]));
rxd[1].xd2 = htole32(VTOPHYS(l->rxstore[1]));
CSR_WRITE(l, TXDBASE, VTOPHYS(txd));
CSR_WRITE(l, RXDBASE, VTOPHYS(rxd));
txd->xd2 = htole32(VTOPHYS(buf));
#define wbinv(adr, siz) _wbinv(VTOPHYS(adr), (uint32_t)(siz))
#define inv(adr, siz) _inv(VTOPHYS(adr), (uint32_t)(siz))
txd[0].xd0 = htole64(VTOPHYS(&txd[1]));
txd[1].xd0 = htole64(VTOPHYS(&txd[0]));
rxd[0].xd0 = htole64(VTOPHYS(&rxd[1]));
rxd[0].xd2 = htole64(VTOPHYS(l->rxstore[0]) |
rxd[1].xd0 = htole64(VTOPHYS(&rxd[0]));
rxd[1].xd2 = htole64(VTOPHYS(l->rxstore[1]) |
CSR_WRITE_4(l, STGE_TFDListPtrLo, VTOPHYS(txd));
CSR_WRITE_4(l, STGE_RFDListPtrLo, VTOPHYS(rxd));
txd->xd2 = htole64(VTOPHYS(buf) | ((uint64_t)len << 48));
#define wbinv(adr, siz) _wbinv(VTOPHYS(adr), (uint32_t)(siz))
#define inv(adr, siz) _inv(VTOPHYS(adr), (uint32_t)(siz))
rxd[0].xd2 = htole32(VTOPHYS(l->rxstore[0]));
rxd[1].xd2 = htole32(VTOPHYS(l->rxstore[1]));
CSR_WRITE(l, TDB_CSR4, VTOPHYS(txd));
CSR_WRITE(l, RDB_CSR3, VTOPHYS(rxd));
txd->xd2 = htole32(VTOPHYS(buf));
#define wbinv(adr, siz) _wbinv(VTOPHYS(adr), (uint32_t)(siz))
#define inv(adr, siz) _inv(VTOPHYS(adr), (uint32_t)(siz))
rxd[i].r2 = htole32(VTOPHYS(l->rxstore[i]));
CSR_WRITE_4(l, VR_RDB, VTOPHYS(rxd));
CSR_WRITE_4(l, VR_TDB0, VTOPHYS(txd));
txd->tf[0].lo = htole32(VTOPHYS(buf));
#define wbinv(adr, siz) _wbinv(VTOPHYS(adr), (uint32_t)(siz))
#define inv(adr, siz) _inv(VTOPHYS(adr), (uint32_t)(siz))
rxd[0].lo = htole32(VTOPHYS(l->rxstore[0]));
rxd[1].lo = htole32(VTOPHYS(l->rxstore[1]));
CSR_WRITE(l, WMREG_TDBAL, VTOPHYS(txd));
CSR_WRITE(l, WMREG_RDBAL, VTOPHYS(rxd));
txd->lo = htole32(VTOPHYS(buf));
#define wbinv(adr, siz) _wbinv(VTOPHYS(adr), (uint32_t)(siz))
#define inv(adr, siz) _inv(VTOPHYS(adr), (uint32_t)(siz))