initblock
struct pcninit initblock, *ib;
ib = &initblock;
wbinv(&initblock, sizeof(initblock));
pcn_csr_write(l, PCN_CSR1, VTOPHYS(&initblock) & 0xffff);
pcn_csr_write(l, PCN_CSR2, (VTOPHYS(&initblock) >> 16) & 0xffff);
if (initblock == NULL) {
initblock = (struct initblock *)
(QW_ALLOC(sizeof(struct initblock)) + addoff);
initblock->ib_mode = LE_MODE_NORMAL;
memcpy(initblock->ib_padr, eaddr, 6);
initblock->ib_ladrf1 = 0;
initblock->ib_ladrf2 = 0;
initblock->ib_rdr = (RLEN << 29) | (int)rdesc;
initblock->ib_rdr -= (int)initblock;
initblock->ib_tdr = (TLEN << 29) | (int)tdesc;
initblock->ib_tdr -= (int)initblock;
copyout(initblock, 0, sizeof(struct initblock));
rdesc[i].bd_adrflg -= (int)initblock;
copyout((void *)rdesc, (int)rdesc - (int)initblock,
tdesc[i].bd_adrflg -= (int)initblock;
copyout((void *)tdesc, (int)tdesc - (int)initblock,
LEWRCSR(LE_CSR1, (int)initblock & 0xffff);
LEWRCSR(LE_CSR2, ((int)initblock >> 16) & 0xff);
copyin((int)&rdesc[next_rdesc] - (int)initblock,
(int)initblock, sizeof(struct buffdesc));
copyin((int)&tdesc[next_tdesc] - (int)initblock,
(int)initblock, sizeof(struct buffdesc));
} *initblock = NULL;
struct leinit initblock;
error = bus_dmamap_create(va->va_dmat, sizeof(initblock), 1,
sizeof(initblock), 0, BUS_DMA_NOWAIT, &map);
error = bus_dmamap_load(va->va_dmat, map, &initblock,
sizeof(initblock), NULL, BUS_DMA_NOWAIT|BUS_DMA_COHERENT);
memset(&initblock, 0, sizeof(initblock));