Specifications
System Macros Invoked by Drivers
CPUDISP
The destination parameter contains the address to which the code generated
by the invocation of the CPUDISP macro passes control to continue with CPU-
specific processing.
[environ=VMS]
Identification of the run-time environment of the code generated by the CPUDISP
macro. There is no need to change the default value of this argument.
continue=NO
Specifies whether execution should continue at the line immediately after the
CPUDISP macro if the value at EXE$GB_CPUTYPE does not correspond to
any of the values specified as the CPU-type in the addrlist argument. A fatal
bugcheck of UNSUPRTCPU occurs if the dispatching code does not find the
executing processor identified in the addrlist and the value of continue is NO.
Description
The CPUDISP macro provides a means for transferring control to a specified
destination depending on the CPU type of the executing processor. For those
processors that do not have a unique CPU type, CPUDISP also provides the
means to dispatch on a particular CPU subtype.
To accomplish this, CPUDISP builds one or two case tables. The first CASEB
instruction uses words in the first case table to set up a transfer based on each
CPU-type specified in the addrlist argument. CPUDISP constructs the second
case table in the event it encounters a CPU subtype in the addrlist.
CPUDISP constructs appropriate symbolic constants for each CPU-type listed in
addrlist, and compares them against the contents of EXE$GB_CPUTYPE. These
constants have the form PR$_SID_TYPCPU-type.
For each CPU subtype it encounters in the addrlist argument, CPUDISP also
constructs symbolic constants of the form PR$_XSID_xx_yyy, where xx is the
generic CPU type (for example CV) and yyy is the CPU subtype (420, 520, 650,
9CC, or 60 for CV). It compares the value of PR$_XSID_xx_yyy against the
contents of EXE$GB_CPUDATA+15.
2–11