use shorts to move data
[unix-history] / usr / src / sys / vax / stand / mba.c
CommitLineData
99fe9747 1/* mba.c 4.3 81/03/15 */
6810489f
BJ
2
3#include "../h/param.h"
4#include "../h/inode.h"
5#include "../h/pte.h"
99fe9747 6#include "../h/mbareg.h"
6810489f
BJ
7#include "../h/mtpr.h"
8#include "../h/vm.h"
9#include "saio.h"
99fe9747 10#include "savax.h"
6810489f 11
99fe9747
BJ
12mbastart(io, func)
13 register struct iob *io;
14 int func;
6810489f 15{
99fe9747
BJ
16 struct mba_regs *mba = mbamba(io->i_unit);
17 struct mba_drv *drv = mbadrv(io->i_unit);
18 register struct pte *pte = mba->mba_map;
6810489f
BJ
19 int npf;
20 unsigned v;
6810489f
BJ
21 int o;
22 int vaddr;
6810489f 23
6810489f
BJ
24 v = btop(io->i_ma);
25 o = (int)io->i_ma & PGOFSET;
26 npf = btoc(io->i_cc + o);
99fe9747 27 vaddr = o;
6810489f
BJ
28 while (--npf >= 0)
29 *(int *)pte++ = v++ | PG_V;
99fe9747
BJ
30 mba->mba_sr = -1;
31 mba->mba_bcr = -io->i_cc;
32 mba->mba_var = vaddr;
33 if (func == WRITE)
34 drv->mbd_cs1 = MB_WCOM | MB_GO;
35 else
36 drv->mbd_cs1 = MB_RCOM | MB_GO;
6810489f 37}
56a904c5
BJ
38
39mbainit(mbanum)
40 int mbanum;
41{
99fe9747 42 register struct mba_regs *mba = mbaddr[mbanum];
56a904c5 43
99fe9747
BJ
44 /* SHOULD BADADDR IT */
45 if (mbaact & (1<<mbanum))
46 return;
47 mba->mba_cr = MBCR_INIT;
56a904c5
BJ
48 mbaact |= 1<<mbanum;
49}