* Copyright (c) 1982 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
* @(#)uba.c 6.3 (Berkeley) %G%
#include "../machine/pte.h"
#include "../vaxuba/ubareg.h"
* Note... this routine does not
* really allocate; unless bdp == 2
* you always get the same space.
* When bdp == 2 you get some other space.
register struct pte
*pte
;
static int lastreg
= 128+64;
o
= (int)io
->i_ma
& PGOFSET
;
npf
= btoc(io
->i_cc
+ o
) +1;
pte
= &ubauba(io
->i_unit
)->uba_map
[reg
];
temp
= (bdp
<< 21) | UBAMR_MRV
;
v
&= 0x1fffff; /* drop to physical addr */
*(int *)pte
++ = v
++ | temp
;
return ((bdp
<< 28) | (reg
<< 9) | o
);
ubauba(io
->i_unit
)->uba_dpr
[bdp
] |= UBADPR_BNE
;
ubauba(io
->i_unit
)->uba_dpr
[bdp
] |=
UBADPR_PURGE
|UBADPR_NXM
|UBADPR_UCE
;