Specifications
Operating System Routines
IOC$LOADMBAMAP
IOC$LOADMBAMAP
Loads MASSBUS map registers.
Module
LOADMREG
Macro
LOADMBA
Input
Location Contents
R4 Address of MBA configuration register
(MBA$L_CSR)
R5 Address of UCB
UCB$W_BCNT Number of bytes in transfer
UCB$W_BOFF Byte offset in first page of transfer
UCB$L_SVAPTE System virtual address of PTE for first page of
transfer
MBA$L_MAP Address of first MASSBUS map register
Output
Location Contents
R0, R1, R2 Destroyed
Synchronization
A driver fork process calls IOC$LOADMBAMAP at fork IPL.
IOC$LOADMBAMAP returns control to its caller at the caller’s IPL.
Description
Driver fork processes for DMA transfers call IOC$LOADMBAMAP to load
MASSBUS adapter map registers with page-frame numbers (PFNs).
IOC$LOADMBAMAP uses the contents of UCB$L_SVAPTE, UCB$W_BCNT, and
UCB$W_BOFF to determine the number of pages involved in the transfer. It then
copies the page frame numbers from the page-table entries associated with this
buffer into map registers, starting with map register 0. IOC$LOADMBAMAP
also loads the negated transfer size into the MASSBUS adapter’s byte count
register (MBA$L_BCR) and the byte offset of the transfer into the MASSBUS
adapter’s virtual address register (MBA$L_VAR). It clears the last map register.
This last invalid register prevents a transfer overrun.
The driver must own the MASSBUS adapter, and thus its map registers, before it
calls this routine.
3–98