z/OS MVS Programming: Extended Addressability Guide
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Coding to allow use of reusable ASIDs

z/OS MVS Programming: Extended Addressability Guide
SA23-1394-00

Look for instances in your code where any of the following macros are specified in cross memory mode (that is, when Primary ASID (PASID) ^= Secondary ASID (SASID)): ATSET, AXEXT, AXFRE, AXRES, AXSET, CPOOL, CPUTIMER, DIV, ETCON, ETCRE, ETDES, ETDIS, GQSCAN, LXFRE, LXRES, SYMREC, VSMLIST, VSMLOC.

Prior to z/OS® 1.6, these services used a Basic PC, and the macros generated a SSAR to restore SASID upon return from the PC. If the macro is issued when PASID ^= SASID and SASID is a reusable ASID, the SSAR causes a program check code x’0013’, which results in a 0D3 abend.

In z/OS 1.6, these services were changed to use a Stacking PC, so the SSAR generated by the macros is unnecessary when the code is executed on z/OS 1.6 (or a higher release of z/OS). The macros avoid generating the SSAR if SYSSTATE OSREL=ZOSV1R6 has been used to indicate that the code can assume it is running on a z/OS1.6 or higher level system. If the code could run on lower levels, then it is necessary to generate two expansions of the macro – one with SYSSTATE OSREL=ZOSV1R6 , and one without, and then test CVTH7709 at execution time and execute the appropriate expansion.

Note: GQSCAN was changed to a stacking PC in OS/390® V1R2, but the GQSCAN macro continued to generate a SSAR so that the expansion would be compatible with lower releases. In z/OS 1.6, the GSCAN macro was changed to avoid generating SSAR regardless of SYSSTATE OSREL, since the the SSAR was required only when executing on a release older than OS/390 V1R2.

Look for instances in your code where you code a SSAR instruction. If PASID ^= the target SASID and the target SASID is a reusable ASID, the SSAR gets a program check code x’0013’, which results in a 0D3 abend. You must obtain the instance number of the intended target address space (the EPAIR, ESAIR, or ESTA code 5 instructions may be useful for this), and use SSAIR instead of SSAR. Note that your code might be executing on a processor or old level (pre-1.6) level of z/OS where these instructions are not available. CVTALR or PSAALR should be tested to see if the new instructions are available. Continue to use SSAR when CVTALR or PSAALR is off.

Look for instances in your code where you code a PT instruction, where the target PASID is not the current PASID. In most cases, this would be a PT to return to the issuer of a space switching Basic PC. For these cases, the preferred solution is to convert to a Stacking PC, and return via PR instead of PT. This solution can be used regardless of the setting of CVTALR/PSAALR. For other uses of PT, if CVTALR or PSAALR is on, obtain the instance number of the intended target address space at an appropriate time, and use PTI instead of PT.

Make sure that your code does not cause 0D3 abends when other products exploit reusable ASIDs. Look at code that can be invoked in other address spaces. Be especially aware of code that runs in all address spaces, like a task termination resource manager established through RESMGR TYPE=TASK,ASID=ALL or an SSI EOT function routine.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014