Specifications

Futurebus+ Bus Support
15.8 Futurebus+ System Routines
15.8 Futurebus+ System Routines
The Initial Node Space base address of a Futurebus+ adapter is determined by
the backplane slot into which the adapter is installed. For most adapters, device
control functions can be accomplished through registers located in the adapter
Initial Unit Space. However, some adapters require additional Futurebus+
address space for their operation. An example of such an adapter may be a bus
bridge, which may require a large chunk of Futurebus+ address space to serve
as a window to a remote bus. OpenVMS/AXP provides two routines to manage
the allocation of Futurebus+ address space. These routines are IOC$RESERVE_
FBUS_A32, which manages Futurebus+ A32 space, and IOC$RESERVE_FBUS_
A64, which manages Futurebus+ A64 space. A driver which requires Futurebus+
address space in addition to its Initial Node Space may call one of these routines
to reserve a region of Futurebus+ address space. The operation of these routines
is explained below.
15.8.1 IOC$RESERVE_FBUS_A32
IOC$RESERVE_FBUS_A32 may be called by a driver that requires a region of
Futurebus+ A32 space. A bus bridge, which requires address space for a window
to a remote bus, is an example of an adapter that may require Futurebus+
address space in addition to its registers. The minimum granularity of A32 space
address allocation is 16 MB (that is, the smallest possible request for A32 address
space is for a 16 MB region). The reason for this granularity is to reduce the
management overhead in keeping track of the allocated space. An example call is
given below:
status = ioc$reserve_fbus_a32 (fbus_adp,
request_amt,
buffer_addr);
Inputs
fbus_adp : address of Futurebus+ ADP
request_amt : Amount of requested A32 space in 16 MB
chunks.
15.8.2 IOC$RESERVE_FBUS_A64
IOC$RESERVE_FBUS_A64 is similar in operation to IOC$RESERVE_FBUS_
A32. The minimum granularity of A64 space address allocation is 4 GB (that is,
the smallest possible request for A64 address space is for a 4 GB region). The
reason for this granularity is to reduce the management overhead in keeping
track of the allocated space. An example call is given below:
status = ioc$reserve_fbus_a64 (fbus_adp,
request_amt,
buffer_addr);
Inputs
fbus_adp : address of Futurebus+ ADP
request_amt : Amount of requested A64 space in 4 GB chunks.
15–8