Use this system macro to convert a valid address in the entry control block
(ECB) virtual memory (EVM) into the corresponding address in the system
virtual memory (SVM).
Format
- ADDRESS=Rw
- This parameter specifies the general register that contains the 31-bit EVM
address, in the EVM of the ECB pointed to by R9, to be converted. On
return, it contains the corresponding SVM address.
- ERROR=label
- This parameter specifies a label identifying the error routine receiving
control if an error condition is raised. An error will occur when the
EVM address specified in the ADDRESS parameter is invalid.
- INLINE
- This parameter specifies whether inline code or a call to the service
routine is generated.
- NO
- Linkage to the service routine is generated.
- YES
- The conversion code is generated inline.
The default is NO. NO should be coded for all call
invocations.
- 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 either EVM or SVM.
- R9 must point to a valid ECB in the address space which is currently
active.
Return Conditions
- Following a successful address conversion, control is returned to the next
sequential instruction (NSI).
- If the address can not be converted then the ADDRESS parameter will
contain the input address with the high order bit set on to indicate a
conversion error. On errors, control is returned to the NSI, except
when the ERROR parameter designates an error routine.
- The condition code is not preserved.
- This macro checks whether the virtual system heap address is backed by
real storage. If it is not, an error is returned.
Programming Considerations
- This macro can be run on any I-stream, however, the ECB specified by R9
must be processed from the I-stream on which this macro is issued.
- No label is allowed on this macro.
- R13 cannot be used; it is assumed to contain the stack
address.
- This macro can be run in either SVM or EVM.
- This macro will not detect all invalid addresses, and it must be noted
that passing an invalid address to this routine can result in an invalid
address being returned to the user without any indication from this
macro. The caller should ensure only valid addresses are converted by
this routine. The $VALEC macro should be used to validate the EVA
before using the $GSVAC macro to convert the EVA to an SVA.
- If INLINE=YES is coded, the following restrictions apply:
- R1, R2, R3 and R14 cannot be the base of the calling routine.
- R15 cannot be used as the Frame Control Table base.
- Must have access to CAPT tags CPMPRIVMEG, CPMPRIVEND, and
CPMGMNMEG.
Examples
None.