As shown in 1, there are eight DAT-OFF
indexes that users can define. These indexes are INDUSR1, INDUSR2,
INDUSR3, INDUSR4, INDUSR641, INDUSR642, INDUSR643, and INDUSR644. The entry points corresponding
to these indexes are IEAVEUR1, IEAVEUR2, IEAVEUR3, IEAVEUR4, IEAV64U1,
IEAV64U2, IEAV64U3, and IEAV64U4, respectively.
User written DAT-OFF routines are restricted as follows:
- The user of the DATOFF macro must be in key 0, supervisor state,
and executing with DAT turned on.
- DAT-OFF routines INDUSR1, INDUSR2, INDUSR3, and INDUSR4 must
have the attributes AMODE=31 and RMODE=ANY.
- DAT-OFF routines INDUSR641, INDUSR642, INDUSR643, and INDUSR644
must have the attributes AMODE=64 and RMODE=ANY.
- The DAT-OFF routine must preserve register 0 because register
0 contains the return address of the module that issued the DATOFF
macro.
- The DAT-OFF routine must use branch instructions to link to other
DAT-OFF routines.
- The DAT-OFF function must use BSM 0,14 to return from INDUSR1,
INDUSR2, INDUSR3, and INDUSR4.
- The DAT-OFF function must return via BR 14 from INDUSR641, INDUSR642,
INDUSR643, and INDUSR644.