Specifications
PCI Bus Support
13.13 Configuring a PCI Device and Loading A Driver
explained earlier. Therefore, this qualifier is not useful for PCI and should be
specified as /CSR=0.
• /NODE The /NODE qualifier identifies the PCI device to the PCI bus support
routines. The value specified in the /NODE qualifier is copied to CRB$L_
NODE by the driver loading program. Use the Node value from the IO
SHOW BUS display that is associated with your device.
• /VECTOR The /VECTOR qualifier is used by the driver loading program to
hook up your driver interrupt service routine to a hardware interrupt vector.
There is no vector information in the IO SHOW BUS display. And because
of the wide latitude in system interrupt logic design for PCI, there is no
convenient rule you can use for figuring out the interrupt vector associated
with your device. You must run SDA on a running system to find the
interrupt vector for your device. The ADP list and bus arrays are set up as
shown in the following diagram. You must find the bus array entry for your
PCI device. The bus array entry contains the interrupt vector offset that
should be used as the value for the /VECTOR qualifier.
The ADP list on a platform with a PCI bus is as follows: (Note that there may be
intervening ADPs between the System ADP and the PCI ADP)
System ADP
+-----+
ioc$gl_adplist--->| | PCI ADP
| | adp$l_link +-----+
| |------------>| | adp$l_tr
+-----+ | |
| |-----+ adp$ps_bus_array
+-----+ |
|
V
+--------------+
|bus array |
|header |
+--------------+
| entry 0 |
||
+--------------+
| entry 1 |
||
+--------------+
| entry 2 |
||
+--------------+
| etc |
||
System global cell ioc$gl_adplist points to a list of ADPs. An ADP is an OpenVMS
AXP data structure that represents an adapter. The PCI interface is an example
of an adapter. The System ADP is always the first ADP in the list. Each ADP
has a Bus Array, pointed to by ADP cell adp$ps_bus_array. A Bus Array consists
of a header and a number of entries. There is an entry in the Bus Array for each
device connected to the bus.
The structure definition of the ADP is available in [syslib]sys$lib_c.tlb, lib.r64,
and lib.mlb. You can use the Librarian utility to extract its definition if you want
to see it. For example:
libr /alpha /extract=adpdef /out=adpdef.h sys$lib_c.tlb
or
13–11