|
|
1.1 root 1: /*
2: * Copyright (c) 1982, 1986, 1988 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: *
6: * @(#)uba.c 7.4 (Berkeley) 7/9/88
7: */
8:
9: #include "param.h"
10: #include "inode.h"
11: #include "vm.h"
12: #include "fs.h"
13:
14: #include "../vax/pte.h"
15: #include "../vax/cpu.h"
16: #include "../vaxuba/ubareg.h"
17:
18: #include "saio.h"
19: #include "savax.h"
20:
21: /*
22: * Note... this routine does not
23: * really allocate; unless bdp == 2
24: * you always get the same space.
25: * When bdp == 2 you get some other space.
26: */
27: ubasetup(io, bdp)
28: register struct iob *io;
29: int bdp;
30: {
31: int npf;
32: unsigned int v;
33: register struct pte *pte;
34: int o, temp, reg;
35: static int lastreg = 128+64;
36:
37: v = btop(io->i_ma);
38: o = (int)io->i_ma & PGOFSET;
39: npf = btoc(io->i_cc + o) +1;
40: if (bdp == 2) {
41: reg = lastreg;
42: lastreg += npf;
43: bdp = 0;
44: } else
45: reg = 0;
46: pte = &ubauba(io->i_adapt)->uba_map[reg];
47: temp = (bdp << 21) | UBAMR_MRV;
48: if (bdp && (o & 01))
49: temp |= UBAMR_BO;
50: v &= 0x1fffff; /* drop to physical addr */
51: while (--npf != 0)
52: *(int *)pte++ = v++ | temp;
53: *(int *)pte++ = 0;
54: return ((bdp << 28) | (reg << 9) | o);
55: }
56:
57: ubafree(io, mr)
58: struct iob *io;
59: int mr;
60: {
61: register int bdp;
62:
63: bdp = (mr >> 28) & 0x0f;
64: if (bdp == 0)
65: return;
66: switch (cpu) {
67:
68: #if VAX8200
69: case VAX_8200:
70: UBA_PURGEBUA(ubauba(io->i_adapt), bdp);
71: break;
72: #endif
73:
74: #if VAX780 || VAX8600
75: case VAX_8600:
76: case VAX_780:
77: ubauba(io->i_adapt)->uba_dpr[bdp] |= UBADPR_BNE;
78: break;
79: #endif
80:
81: #if VAX750
82: case VAX_750:
83: ubauba(io->i_adapt)->uba_dpr[bdp] |=
84: UBADPR_PURGE|UBADPR_NXM|UBADPR_UCE;
85: break;
86: #endif
87:
88: default:
89: break;
90: }
91: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.