Use this system macro to disconnect a storage block from the entry control
block (ECB) virtual memory (EVM). The macro is used by the TPF system
for data that should no longer be accessible to the ECB (such as output
messages after the ROUTC macro). The TPF system also uses this macro to
support macros (such as the CREEC macro) that pass main storage blocks from
one ECB to another.
Format
- BLOCK=Rn
- This required parameter specifies the register containing the 31-bit EVM
address of the block to be disconnected. R13 can not be specified for
this register. The block must be of a type that can be attached to ECB
core block reference words (CBRWs) (128, 381, 1055, or 4095 bytes).
On return, the register contains the 31-bit SVM address of the disconnected
block.
- 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
- This macro can be run in the EVM or the SVM.
- R9 must point to the ECB defining the EVM in whatever address space this
macro is called.
Return Conditions
- Control is returned to the next sequential instruction (NSI).
- The condition code is not preserved.
Programming Considerations
- This macro must be processed on the same I-stream as the ECB which
provides the address space for the EVA address.
- This macro is for use in the control program (CP) only.
- The SVM address of the disconnected block may not be the same
as the SVM address of the block before $DISBC.
- If the block contains imbedded pointers (for example, the first fullword
in the block points to the start of a parameter list in the block), then once
$DISBC has been issued, these pointers must be relocated to be useful.
For example, before the $DISBC, the EVM block address might be
X'10000' and the SVM block address might be X'1FE3000'.
After $DISBC, the SVM block address might be X'2301000' and the block
does not have an EVM address. Therefore, in this example, an imbedded
pointer of X'100008' (EVM address) or X'1FE3008' (SVM address)
would need relocation to an SVM address of X'2301008'.
- System error dumps can occur when servicing a $DISBC request.
See Messages (System Error and Offline) for more
information.
Examples
None.