Skip to content

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.

  1. Require LPA.A to be zero, then evaluate the target operand in the old architectural context and validate the target under the current CS.

  2. Probe the 8-byte return-address store through the old SS:SP context.

  3. 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>

Format: Instruction format for CALL <imm16s>

2.75in CALL <imm32s>

Format: Instruction format for CALL <imm32s>

Format: Instruction format for CALL <imm32s>

2.75in CALL <ea>(e)

Format: Instruction format for CALL <ea>(e)

Format: Instruction format for CALL <ea>(e)

targetexcluded: immediate [canonical_form_reclaim]

2.75in CALL Rn(r)

Format: Instruction format for CALL Rn(r)

Format: Instruction format for CALL Rn(r)