1*7446Sroot /* mba.c 4.4 82/07/15 */ 2323Sbill 3323Sbill #include "../h/param.h" 4323Sbill #include "../h/inode.h" 5323Sbill #include "../h/pte.h" 63262Swnj #include "../h/mbareg.h" 7*7446Sroot #include "../h/fs.h" 8323Sbill #include "../h/mtpr.h" 9323Sbill #include "../h/vm.h" 10323Sbill #include "saio.h" 113262Swnj #include "savax.h" 12323Sbill 133262Swnj mbastart(io, func) 143262Swnj register struct iob *io; 153262Swnj int func; 16323Sbill { 173262Swnj struct mba_regs *mba = mbamba(io->i_unit); 183262Swnj struct mba_drv *drv = mbadrv(io->i_unit); 193262Swnj register struct pte *pte = mba->mba_map; 20323Sbill int npf; 21323Sbill unsigned v; 22323Sbill int o; 23323Sbill int vaddr; 24323Sbill 25323Sbill v = btop(io->i_ma); 26323Sbill o = (int)io->i_ma & PGOFSET; 27323Sbill npf = btoc(io->i_cc + o); 283262Swnj vaddr = o; 29323Sbill while (--npf >= 0) 30323Sbill *(int *)pte++ = v++ | PG_V; 313262Swnj mba->mba_sr = -1; 323262Swnj mba->mba_bcr = -io->i_cc; 333262Swnj mba->mba_var = vaddr; 343262Swnj if (func == WRITE) 353262Swnj drv->mbd_cs1 = MB_WCOM | MB_GO; 363262Swnj else 373262Swnj drv->mbd_cs1 = MB_RCOM | MB_GO; 38323Sbill } 39415Sbill 40415Sbill mbainit(mbanum) 41415Sbill int mbanum; 42415Sbill { 433262Swnj register struct mba_regs *mba = mbaddr[mbanum]; 44415Sbill 453262Swnj /* SHOULD BADADDR IT */ 463262Swnj if (mbaact & (1<<mbanum)) 473262Swnj return; 483262Swnj mba->mba_cr = MBCR_INIT; 49415Sbill mbaact |= 1<<mbanum; 50415Sbill } 51