Use the IARR2V macro to convert a central storage address to a virtual storage address. This conversion can be useful when you have the central storage address from handling I/O or doing diagnostic support and need to know the corresponding virtual address.
When the input storage address is a central storage address that backs a single page, the system returns the ASID that indicates the address space that owns the central storage, and the STOKEN that indicates the address space or data space that uses the central storage. When a central storage address does not back any page, or backs a read-only nucleus page, the system returns a non-zero return code and reason code.
For more information on the use of the IARR2V macro, see z/OS MVS Programming: Authorized Assembler Services Guide. IARR2V is also described in the z/OS MVS Programming: Assembler Services Guide with the exception of the LINKAGE parameter.
The requirements for the caller are:
Environmental factor | Requirement |
---|---|
Minimum authorization: | Problem state with any PSW key. For the LINKAGE parameter, supervisor state with any PSW key. |
Dispatchable unit mode: | Task or SRB |
Cross memory mode: | Any PASN, any HASN, any SASN |
AMODE: | 24-, 31- or 64-bit. |
ASC mode: | Primary or access register (AR) |
Interrupt status: | Enabled or disabled for I/O and external interrupts |
Locks: | The caller may hold the local or CPU lock, but is not required to hold any locks. |
Control parameters: | None. |
None.
None.
Before issuing the IARR2V 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.
Some callers depend on register contents remaining the same before and after issuing a service. If the system changes the contents of registers on which the caller depends, the caller must save them before issuing the service, and restore them after the system returns control.
None.
The standard form of the IARR2V macro is written as follows:
Syntax | Description |
---|---|
name | name: symbol. Begin name in column 1. |
␢ | One or more blanks must precede IARR2V. |
IARR2V | |
␢ | One or more blanks must follow IARR2V. |
RSA=rsa_addr | rsa_addr: RS-type address, or register (2) - (12). |
RSA64=rsa_addr64 | rsa_addr64: RS-type address, or register (2) - (12). |
,VSA=vsa_addr | vsa_addr: RS-type address, or register (2) - (12). |
,VSA64=vsa_addr64 | vsa_addr64: RS-type address, or register (2) - (12). |
,ASID=asid_addr | asid_addr: RS-type address, or register (2) - (12). |
,STOKEN=stoken_addr | stoken_addr: RS-type address, or register (2) - (12). |
,WORKREG=work_reg | work_reg: RS-type address, or register (2) - (12). |
,WORKREG=NONE | Default: WORKREG=NONE |
,NUMVIEW=view_addr | view_addr: RS-type address, or register (2) - (12). |
,NUMVALID=val_addr | val_addr: RS-type address, or register (2) - (12). |
,LINKAGE=SYSTEM | Default: LINKAGE=SYSTEM |
,LINKAGE=BRANCH | |
,RETCODE=retcode | retcode: RS-type address, or register (2) - (12). |
,RSNCODE=rsncode | rsncode: RS-type address, or register (2) - (12). |
The parameters are explained as follows:
WORKREG=NONE is the default and specifies that the system is not to return the sharing count.
None.
When the IARR2V macro returns control to your program, GPR 15 (and retcode if you coded RETCODE) contains the return code. If the return code is not 0 or 4, GPR 0 (and rsncode if you coded RSNCODE) contains the reason code.
Hexadecimal Return Code | Hexadecimal Reason Code | Meaning and Action |
---|---|---|
00 | None | Meaning: The IARR2V request completed successfully.
The address returned in the VSA parameter represents an address space
page. Action: None required. |
04 | None | Meaning: The IARR2V request completed successfully.
The address returned in the VSA parameter represents a data space
page. Action: None required. |
08 | xx0001xx | Meaning: Program error. The IARR2V request
was unsuccessful because the input central storage address was not
within the bounds of central storage. Action: Check your input central storage address and rerun the program. |
08 | xx0002xx | Meaning: Program error. The IARR2V request
was unsuccessful because the frame corresponding to the input central
storage address was not assigned to a page. Action: Check your input central storage address and rerun the program. |
08 | xx0003xx | Meaning: Program error. The IARR2V request
was unsuccessful because the frame corresponding to the input central
storage address contains shared data, but no virtual address for any
accessible address space (either home, primary, or secondary) corresponds
to the frame. Action: Check your input central storage address and rerun the program. |
08 | xx0004xx | Meaning: System error. The IARR2V request
was recursively invoked. Action: Record the return code and reason code and supply them to the appropriate IBM support personnel. |
08 | xx0005xx | Meaning: Program error. The IARR2V request
was unsuccessful because the frame corresponding to the input central
storage address was assigned, but the data space STOKEN could not
be found. Action: Check your input central storage address and rerun the program. |
08 | xx0006xx | Meaning: Program error. The IARR2V request
was unsuccessful because the virtual address is above 2G and the
caller did not specify VSA64. Action: Specify VSA64 on the IARR2V invocation. |
LRA 1,VSA
LR 5,1
INVOKE1 IARR2V RSA=(5),VSA=VSAOUT
.
.
VSA DS F
VSAOUT DS F
INVOKE2 IARR2V RSA=(5),ASID=ASIDO
.
.
ASIDO DS F
INVOKE3 IARR2V RSA=(5),STOKEN=STOKO
.
.
STOKO DS F
INVOKE4 IARR2V RSA=(5),WORKREG=(6),NUMVIEW=VIEWS,NUMVALID=VALS
.
.
VIEWS DS F
VALS DS F