Retry from an ESTAE-type recovery routine

When an ESTAE-type recovery routine attempts a retry, the contents of the registers on entry to the retry routine depend on whether an SDWA is present, and depend on what the recovery routine specifies on SETRP. The parameters on SETRP that affect register contents on entry to the retry routine from an ESTAE-type recovery routine are the following:
  • The RETREGS parameter controls whether registers are restored from the SDWA. If you specify RETREGS=NO, registers are not restored from the SDWA.

    If you specify RETREGS=YES, GPRs are restored from SDWASRSV, and ARs are restored from SDWAARSV. If you specify RETREGS=YES,RUB, you can manipulate the contents of SDWASRSV to whatever you wish the GPRs to be before they are restored. Or, you can directly manipulate the contents of both SDWASRSV and SDWAARSV. When you specify RETREGS=YES and are running in z/Architecture® mode, the upper halves of the 64–bit registers at retry will contain the upper halves of the 64–bit registers from the time of error.

    If you are running in z/Architecture mode and specify RETREGS=64, the 64–bit GPRs at retry are restored from SDWAG64 and the ARs are restored from SDWAARSV.

    See the description of the SETRP macro in z/OS MVS Programming: Authorized Assembler Services Reference SET-WTO for complete details.

  • The FRESDWA parameter controls whether the system frees the SDWA before giving control to the retry routine. FRESDWA=YES instructs the system to free the SDWA; FRESDWA=NO instructs the system not to free the SDWA. This has an affect on the register contents on entry to the retry routine.

The following tables describe the register contents under various circumstances on entry to a retry routine from an ESTAE-type recovery routine:

Table 1. Register Contents—Retry from an ESTAE-Type Recovery Routine Without an SDWA (General Purpose Registers)
Register Contents
GPR 0 12 (X'0C').
GPR 1 For ARRs, a copy of the current contents of the first 4 bytes of the 8-byte modifiable area in the linkage stack entry that was current when the ARR''s stacking PC was entered.

For IEAARR issued in AMODE 31, the 31-bit address of the parameter area specified on the ARRPARAMPTR parameter of IEAARR.

For IEAARR issued in AMODE 64, the 64-bit address of the parameter area specified on the ARRPARAMPTR64 parameter of IEAARR.

For other ESTAE-type recovery routines where the PARAM parameter was specified, the address of the user-supplied parameter area. Note that when ESTAEX was issued in AMODE 64, GPR 1 contains a 64-bit value.

For other ESTAE-type routines where the PARAM parameter was not specified, zero.

GPR 2 Address of the purged I/O restore list if I/O was quiesced and is restorable; otherwise, zero.
GPRs 3 - 14 Do not contain any information for use by the routine.
GPR 15 Entry point address of the retry routine, except for when ESTAEX was issued in AMODE 64, in which case the low order bit is set on.
Table 2. Register Contents—Retry from an ESTAE-Type Recovery Routine Without an SDWA (Access Registers)
Register Contents
AR 0 Zero.
AR 1 One of the following:
  • If you issued the ESTAEX macro in AR ASC mode and not AMODE 64, an ALET that qualifies the address in GPR 1.
  • For ARRs, the system uses the linkage stack entry that was current when the ARR's stacking PC routine was entered, and from that entry, provides a copy of the current contents of the second 4 bytes of the 8-byte modifiable area.
  • Otherwise, this register does not contain any information for use by the routine.
ARs 2 - 13 Do not contain any information for use by the routine.
ARs 14 - 15 Zero.
Table 3. Register Contents—Retry from an ESTAE-Type Recovery Routine With an SDWA, RETREGS=NO, and FRESDWA=NO (General Purpose Registers)
Register Contents
GPR 0 Zero.
GPR 1 Address of the SDWA.
GPRs 2 - 14 Do not contain any information for use by the routine.
GPR 15 Entry point address of the retry routine, except for when ESTAEX was issued in AMODE 64, in which case the low order bit is set on.
Table 4. Register Contents—Retry from an ESTAE-Type Recovery Routine With an SDWA, RETREGS=NO, and FRESDWA=NO (Access Registers)
Register Contents
ARs 0 - 1 Zero.
ARs 2 - 13 Do not contain any information for use by the routine.
ARs 14 - 15 Zero.
Table 5. Register Contents—Retry from an ESTAE-Type Recovery Routine With an SDWA, RETREGS=NO, and FRESDWA=YES (General Purpose Registers)
Register Contents
GPR 0 20 (X'14').
GPR 1 For ARRs, a copy of the current contents of the first 4 bytes of the 8-byte modifiable area in the linkage stack entry that was current when the ARR''s stacking PC was entered.

For IEAARR issued in AMODE 31, the 31-bit address of the parameter area specified on the ARRPARAMPTR parameter of IEAARR.

For IEAARR issued in AMODE 64, the 64-bit address of the parameter area specified on the ARRPARAMPTR64 parameter of IEAARR.

For other ESTAE-type recovery routines where the PARAM parameter was specified, the address of the user-supplied parameter area. Note that when ESTAEX was issued in AMODE 64, GPR 1 contains a 64-bit value.

For other ESTAE-type recovery routines where the PARAM parameter was not specified, zero.

GPR 2 Address of the purged I/O restore list, if I/O was quiesced and is restorable; otherwise, zero.
GPRs 3 - 14 Do not contain any information for use by the routine.
GPR 15 Entry point address of the retry routine, except for when ESTAEX was issued in AMODE 64, in which case the low order bit is set on.
Table 6. Register Contents—Retry from an ESTAE-Type Recovery Routine With an SDWA, RETREGS=NO, and FRESDWA=YES (Access Registers)
Register Contents
AR 0 Zero.
AR 1 One of the following:
  • If you issued the ESTAEX macro in AR ASC mode and not AMODE 64, an ALET that qualifies the address in GPR 1.
  • For ARRs, the system uses the linkage stack entry that was current when the ARR's stacking PC routine was entered, and from that entry, provides a copy of the current contents of the second 4 bytes of the 8-byte modifiable area.
  • Otherwise, this register does not contain any information for use by the routine.
ARs 2 - 13 Do not contain any information for use by the routine.
ARs 14 - 15 Zero.
Table 7. Register Contents—Retry from an ESTAE-Type Recovery Routine With an SDWA and RETREGS=YES (General Purpose Registers)
Register Contents
GPRs 0 - 15 Restored from SDWASRSV, regardless of whether the recovery routine specified FRESDWA=NO or FRESDWA=YES.

Note that register 15 does not contain the entry point address of the retry routine unless the recovery routine sets it up that way.

Table 8. Register Contents—Retry from an ESTAE-Type Recovery Routine With an SDWA and RETREGS=YES (Access Registers)
Register Contents
ARs 0 - 15 Restored from SDWAARSV, regardless of whether the recovery routine specified FRESDWA=NO or FRESDWA=YES.
Table 9. Register Contents—Retry from an ESTAE-Type Recovery Routine With an SDWA and RETREGS=64 in z/Architecture mode (General Purpose Registers)
Register Contents
GPRs 0 - 15 Restored from SDWAG64, regardless of whether the recovery routine specified FRESDWA=NO or FRESDWA=YES.

Note that register 15 does not contain the entry point address of the retry routine unless the recovery routine sets it up that way.

Table 10. Register Contents—Retry from an ESTAE-Type Recovery Routine With an SDWA and RETREGS=64 in z/Architecture mode (Access Registers)
Register Contents
ARs 0 - 15 Restored from SDWAARSV, regardless of whether the recovery routine specified FRESDWA=NO or FRESDWA=YES.