The following are examples of system support of AMODE and RMODE:
- The system obtains storage for the module as indicated by RMODE.
- ATTACH, ATTACHX, LINK, LINKX, XCTL, and XCTLX give the invoked
module control in the addressing mode specified by its AMODE.
- LOAD brings a module into storage based on its RMODE and sets
bit 0 in register 0 to indicate its AMODE.
- CALL passes control in the AMODE of the caller.
- SYNCH or SYNCHX has an AMODE parameter that you can use to specify
the AMODE of the invoked module.
- For SVCs, the system saves and sets the addressing mode.
- SRBs are dispatched in the addressing mode indicated by the SRB
specified to the SCHEDULE macro.
- The cross memory instructions PC and PT establish the addressing
mode for the target program.
- Access methods support all valid combinations of AMODE
and RMODE with these exceptions:
- AMODE 64 and RMODE 64 are not supported unless otherwise documented
for the interface.
- Some devices such as unit record devices and TSO terminals have
documented restrictions.
- Dumping is based on the AMODE specified in the error-related PSW.
- Program Fetch
- The system uses RMODE information from the PDS to determine
whether to obtain storage above or below 16 megabytes.
- ATTACH, ATTACHX, LINK, LINKX, XCTL, and XCTLX
- Issuing an ATTACH or ATTACHX macro causes the control program
to create a new task and indicates the entry point to be given control
when the new task becomes active. If the entry point is a member
name or an alias in the PDS. ATTACH or ATTACHX gives it control in
the addressing mode specified in the PDS or in the mode specified
by the loader. If the invoked program has the AMODE ANY attribute,
it gets control in the AMODE of its caller.
The LINK, LINKX, XCTL,
and XCTLX macros also give the invoked program control in the addressing
mode indicated by its PDS for programs brought in by fetch or in the
AMODE specified by the loader. The entry point specified must be a
member name or an alias in the PDS passed by the loader, or specified
in an IDENTIFY macro. If the entry point is an entry name specified
in an IDENTIFY macro, IDENTIFY sets the addressing mode of the entry
name equal to the addressing mode of the main entry point.
- LOAD
- Issuing the LOAD macro causes MVS™ to bring
the load module containing the specified entry point name into virtual
storage (if a usable copy is not already there). LOAD sets the high-order
bit of the entry point address in register 0 to indicate the module's
AMODE (0 for 24, 1 for 31), which LOAD obtains from the module's PDS
entry. If the module's AMODE is ANY, LOAD sets the high-order bit
in register 0 to correspond to the caller's AMODE.
LOAD places
the module in virtual storage either above or below 16 megabytes as
indicated by the module's RMODE, which is specified in the PDS for
the module.
Specifying the ADDR parameter indicates that you
want the module loaded at a particular location. If you specify an
address above 16 megabytes, be sure that the module being loaded has
the RMODE ANY attribute. If you do not know the AMODE and RMODE attributes
of the module, specify an address below 16 megabytes or omit the ADDR
parameter.
- CALL
- The CALL macro passes control to an entry point via BALR. Thus
control is transferred in the AMODE of the caller. CALL does not
change AMODE.
- SYNCH or SYNCHX
- Using the AMODE parameter on the SYNCH or SYNCHX macro, you
can specify the addressing mode in which the invoked module is to
get control. Otherwise, SYNCH or SYNCHX passes control in the caller's
addressing mode.
- SVC
- For SVCs (supervisor calls), the system saves and restores the
issuer's addressing mode and makes sure that the invoked service gets
control in the specified addressing mode.
- SRB
- When an SRB (service request block) is dispatched, the system
sets the addressing mode based on the high-order bit of the SRBEP
field. This bit, set by the issuer of the SCHEDULE macro, indicates
the addressing mode of the routine operating under the dispatched
SRB.
- PC and PT
- For a program call (PC), the entry table indicates the target
program's addressing mode. The address field in the entry table must
be initialized by setting the high-order bit to 0 for 24-bit addressing
mode or to 1 for 31-bit addressing mode.
The PC instruction sets
up register 14 with the return address and AMODE for use with the
PT (program transfer) instruction. If PT is not preceded by a PC instruction,
the PT issuer must set the high-order bit of the second operand register
to indicate the AMODE of the program being entered (0 for 24-bit addressing
mode or 1 for 31-bit addressing mode).
- Data Management Access Methods
- User programs can be in AMODE 24 or AMODE 31 when
invoking access methods except with certain devices. The non-VSAM
access methods require certain parameter lists, control blocks and
user exit routines to reside in virtual storage below 16 megabytes.
Some interfaces support only AMODE 24 and some support AMODE 64. See z/OS DFSMS Using Data Sets and z/OS DFSMS Macro Instructions for Data Sets.
- AMODE's Effect on Dumps
- The only time AMODE has an effect on dumps is when data on either
side of the address in each register is dumped. If the addresses in
registers are treated as 24-bit addresses, the data dumped may come
from a different storage location than when the addresses are treated
as 31-bit addresses. If a dump occurs shortly after an addressing
mode switch, some registers may contain 31-bit addresses and some
may contain 24 bit addresses, but dumping services does not distinguish
among them. Dumping services uses the AMODE from the error-related
PSW. For example, in dumping the area related to the registers saved
in the SDWA, dumping services uses the AMODE from the error PSW stored
in the SDWA.