AMODESW CALL (Addressing Mode Switch) Macro

The macro calls a subroutine and switches the addressing mode.

Format

Read syntax diagramSkip visual syntax diagramnameAMODESW CALL,AMODE=2431( r1),ADDRESS=addr( r2),REGS=(14,15),REGS=( return_reg, link_reg)

Requirements for the caller

AMODE:
24 or 31
RMODE:
24 or ANY
ASC Mode:
Primary

Parameters

CALL
Indicates that a subroutine is to be called and that the addressing mode is to be switched.
AMODE=24 | 31 | (r1)
Calls the subroutine and switches either to 24-bit or 31-bit addressing mode or sets the addressing mode according to the value of bit 0 of the specified register. The register must not be the same as the one used with the ADDRESS operand or the register used as the return register. If you do not specify AMODE, z/VSE sets the addressing mode as follows:
  • If you specify ADDRESS=(reg), z/VSE obtains the new addressing mode from bit 0 of (reg). If you specify ADDRESS=addr, z/VSE obtains the new addressing mode from attributes declared with the AMODE assembler pseudo-op.
  • If you do not specify the AMODE or the ADDRESS operand, z/VSE obtains the new addressing mode from bit 0 of the linkage register (specified in the REGS operand).
ADDRESS=addr | (r2)
Specifies the address, either directly or in a register (1-15), where control is to be transferred. If you omit the ADDRESS operand, z/VSE passes control to the address in the linkage register (specified in the REGS operand).
REGS=(return_reg|14,link_reg|15)
Specifies the linkage registers for this call. Valid registers are 1-15. If you do not specify REGS, z/VSE uses register 14 as return_reg and register 15 as link_reg: REGS=(14,15).