Use this system macro to add a block to the top of the specified system
task dispatcher list.
The block added through this macro will be the first block dispatched the
next time the specified system task dispatcher list is processed.
Required Authorizations
|
Key0
| Restricted
| System
| Common Storage
|
| X
|
|
|
Format
- BLOCK=R1|Rx
- The register specified on this parameter contains the EVM address of the
storage block to be added to the specified system task dispatcher list.
If the parameter is omitted, the default assignment is R1.
The ADDRESS and BLOCK parameters are mutually exclusive.
- ADDRESS=Rw
- The register specified on this parameter contains the SVA address of the
storage block to be added to the specified System Task Dispatcher list as
indicated by the LIST parameter. There is no default.
The ADDRESS and BLOCK parameters are mutually exclusive.
- LIST=R0|Rx
- The register specified on this input parameter contains a dispatch list
equate value as defined in the CLHEQ macro. If the parameter is
omitted, the default assignment is R0.
Valid equate values are:
- #CLHRDY
- Ready List
- #CLHINP
- Input List
- #CLHDEF
- Defer List
- PIADDR=Rx
- The register specified on this parameter contains the address of the
postinterrupt routine to be given control when dispatched from the
list. If the parameter is omitted, it is assumed that displacements 6-7
in the specified block will contain the postinterrupt address.
- SAVREG
- The specified volatile registers will be saved by the macro in
the stack area or in the registers specified by the WKREG parameter. Up
to 3 registers can be specified. Those registers are R0, R1, R2.
If this keyword is omitted, none of the 3 registers will be saved. You
should not save a volatile register if you expect it to contain an output
parameter. The register will be overwritten with its original contents,
since the reload is the last thing performed by the macro.
- WKREG
- The specified symbolic register names are free to be used by the macro to
save the volatile registers coded on the SAVREG parameter.
Up to 3 registers can be specified, but the standard linkage registers R13
through R2 cannot be used here. This parameter is used in conjunction
with the SAVREG parameter to generate efficient code and enhance the
performance of the macro. The number of registers specified by WKREG
should be less than or equal to the number of registers specified by
SAVREG. If this parameter is omitted or not used to its maximum
capacity, code optimization is sacrificed.
Entry Requirements
- If the macro is coded in a real-time segment, R9 must contain the address
of the ECB being processed.
- If the macro is coded in the control program (CP), the routine invoking
this macro must be running in a privileged mode of operation and with a
storage protect key of zero.
- The block address passed in the BLOCK parameter must be a valid EVM
address and the block address passed in the ADDRESS parameter must be a valid
SVM address.
- The ADDRESS and BLOCK parameters are mutually exclusive. If neither
is coded, the default is BLOCK=R1.
- If the PIADDR parameter is not used, the postinterrupt status halfword at
relative location 6 and 7 in the block must contain a valid branch vector
address.
Return Conditions
- Control is returned to the next sequential instruction.
- When invoked from a real-time segment, the contents of all user registers
are preserved across this macro call. When invoked from the control
program (CP), the registers specified on the WKREG parameter will be used to
save the contents of any volatile registers specified on the SAVREG
parameter. All other registers will be returned intact.
- The condition code is not saved across this macro call.
Programming Considerations
Examples
None.