CALL
Operation
Pushes the continuation PC and atomically transfers control to the validated target.
Assembler Syntax
CALL <imm16s>
CALL <imm32s>
CALL <ea>(e)
CALL Rn(r)
Privilege
Unprivileged
Pushes the following instruction's continuation PC as one 64-bit stack value and transfers control to the target. An EA memory operand reads a 64-bit target; an EA register operand supplies its 64-bit value directly. The stack update and control transfer use the ordinary SS:SP and target-validation rules. An active resident link raises INVALID_CONTROL_TRANSITION before target or stack access.
-
Require LPA.A to be zero, then evaluate the target operand in the old architectural context and validate the target under the current CS.
-
Probe the 8-byte return-address store through the old SS:SP context.
-
Commit the return-address store, decremented SP, and new PC as one successful control-transfer operation.
For CALLcc, a false condition is evaluated before target-memory or stack access and suppresses both. Encoding, extension, privilege, and control-state validation still occur. A fault before the final commit changes neither the stack nor PC.
2.75in
Encodings
CALL <imm16s>
Format: Instruction format for CALL <imm16s>
2.75in CALL <imm32s>
Format: Instruction format for CALL <imm32s>
2.75in CALL <ea>(e)
Format: Instruction format for CALL <ea>(e)
target — excluded: immediate [canonical_form_reclaim]
2.75in CALL Rn(r)
Format: Instruction format for CALL Rn(r)