The FESTAE macro allows an SVC to define and activate, or to deactivate and no longer define, an ESTAE-type recovery routine with minimal overhead and no locking requirements. The ESTAE-type recovery routine activated by FESTAE receives control in the same sequence and under the same conditions as it would if it were activated by the ESTAE macro. The FESTAE macro can be issued in cross memory mode as long as the currently addressable address space is the home address space. For more information, see z/OS MVS Programming: Authorized Assembler Services Guide. To delete a FESTAE recovery routine that was established by the FESTAE macro, use the FESTAE macro rather than macros such as ESTAE, ESTAEX, or STAE.
The FESTAE macro expansion has no external linkage.
The requirements for the caller are:
Environmental factor | Requirement |
---|---|
Minimum authorization: | Supervisor state and PSW key 0 |
Dispatchable unit mode: | Task |
Cross memory mode: | Any PASN, any HASN, any SASN |
AMODE: | 24- or 31-bit |
ASC mode: | Primary |
Interrupt status: | Enabled for I/O and external interrupts |
Locks: | The caller may hold locks, but is not required to hold any. |
Control parameters: | Must be in the primary address space Except for the TCB, all input parameters to this macro can reside in storage above 16 megabytes if the issuer is executing in 31-bit addressing mode. |
FESTAE users executing in 31-bit addressing mode must recompile using the FESTAE macro expansion so that the exit routine gets control in 31-bit addressing mode.
Before issuing the FESTAE macro, the caller does not have to place any information into any register unless using it in register notation for a particular parameter, or using it as a base register. Register notation is required for the following FESTAE macro parameters: EXITADR, WRKREG, RBADDR, TCBADDR, and PARAM.
Specification of the TCBADDR keyword results in more efficient code.
The FESTAE macro is written as follows:
Syntax | Description |
---|---|
name | name: Symbol. Begin name in column 1. |
␢ | One or more blanks must precede FESTAE. |
FESTAE | |
␢ | One or more blanks must follow FESTAE. |
EXITADR=exit addr | exit addr: Register (1) - (14). |
0,WRKREG=work reg | work reg addr: Register (1) - (14). |
,RBADDR=svrb addr | svrb addr: Register (1) - (14). |
,TCBADDR=tcb addr | tcb addr: Register (1) - (14). |
,PARAM=list addr | list addr: Register (1) - (14). |
,XCTL=NO | Default: XCTL=NO |
,XCTL=YES | |
,PURGE=NONE | Default: PURGE=NONE |
,PURGE=HALT | |
,PURGE=QUIESCE | |
,ASYNCH=YES | Default: ASYNCH=YES |
,ASYNCH=NO | |
,TERM=NO | Default: TERM=NO |
,TERM=YES | |
,RECORD=NO | Default: RECORD=NO |
,RECORD=YES | |
,ERRET=label | label: Any valid assembler name. |
,SDWALOC31=NO | Default: SDWALOC31=NO |
,SDWALOC31=YES | |
The parameters are explained as follows:
If you specify 0,WRKREG=work reg, the current ESTAE-type recovery routine is deactivated and no longer defined if it was defined by the FESTAE macro. An error occurs if the current ESTAE-type recovery routine was not created by FESTAE. You do not have to initialize the register you specify for work reg; the system uses it as a work register.
All the other FESTAE parameters have the same meaning as their ESTAE counterparts.
None.
When control is returned to the instruction following the FESTAE macro, GPR 15 contains one of the following return codes.
Hexadecimal Return Code | Meaning and Action |
---|---|
00 | Meaning: Successful completion of the
FESTAE request. Action None. |
08 | Meaning: Program error. A previous create
has been issued with FESTAE for this SVRB; the request has been ignored. Action: None; do not reissue this macro. |
0C | Meaning: Program error. Cancel has been
specified under one of the following conditions:
Action: Ensure that the current recovery routine was established using the FESTAE macro. |
FESTAE EXITADR=(REG2),RBADDR=(REG3),TCBADDR=(REG6), X
PARAM=(REG7),ASYNCH=YES,TERM=NO