If you are using EXCPVR to execute a channel program and your channel
program does not already contain real addresses, translate the virtual
addresses in the operands of your channel program to central storage
addresses. This should be done in the SIO appendage. If indirect data
addressing is required, use the SIO appendage to build the indirect
address lists (IDALs, MIDALs, or TIDALs) and turn on
the appropriate indirect address list flag for the channel program.
You can use EXCPVR for VIO data sets with the following considerations
for the SIO appendage:
- The use of IDAWs and an IDAL is not required.
- MIDALs and zHPF channel programs are not supported
for VIO.
- Addresses in the CSWs and IDAWs must be virtual. They must not
be converted to central storage addresses.
The UCBVRDEB bit in the
UCBJBNR byte can be checked to determine if the data set is being
processed with VIO.
When building an IDAL for CCW channel programs consider the following:
- Bit IOBEEIDA, described in Input/Output Block Common Extension (IOBE) Fields, specifies whether
you are using 31-bit or 64-bit IDAWs. With 31-bit IDAWs, use 2 KB
boundaries when determining whether a storage boundary is crossed
for a CCW. With 64-bit IDAWs, use 4 KB boundaries.
- The LRA instruction returns a 31-bit central storage address regardless
of whether you are in 24-bit or 31-bit addressing mode, but fails
in those addressing modes if the central storage address is above
2 GB. If the central storage address is above 2 GB, you must either
use the LRAG or STRAG instruction to convert the virtual address to
a real address or use the LRA instruction (after first switching to
64-bit addressing mode). If your program switches to 64-bit addressing
mode, you must ensure that you save and restore the high 32 bits of
any register that you modify. If you fail to do this, unpredictable
results can occur for other 64-bit programs in your address space.
See IDAW Requirements for EXCP Requests for more information on creating IDAWs
for EXCPVR requests.