(I64 only.) The Put Invocation Registers routine updates the
fields of a given procedure invocation context.
Note that if user override routines are specified in the
invocation context block, then they are used to find and modify
the invocation context.
Format
LIB$I64_PUT_INVO_REGISTERS invo_handle, invo_context,
[,gr_mask] [,fr_mask]
[,br_mask] [,pr_mask] [,misc_mask]
1 – Returns
OpenVMS usage:cond_value
type: longword (unsigned)
access: write only
mechanism: by value
2 – Arguments
invo_handle
OpenVMS usage:invo_handle
type: quadword (unsigned)
access: read only
mechanism: by reference
Handle for the invocation to be updated.
invo_context
OpenVMS usage:invo_context_blk
type: structure
access: read only
mechanism: by reference
Address of a valid invocation context block that contains new
register contents.
Each register that is set in the xx_mask argument (along with
its NaT bit, if any) is updated using the value found in the
corresponding IREG[n], FREG[n], BRANCH[n], or PRED[n] field. GP,
TP, and AI can also be updated in this way.
No other fields of the invocation context block are used.
gr_mask
OpenVMS usage:mask_octaword
type: 128-bit vector
access: read only
mechanism: by reference
Address of a 128-bit bit vector, where each bit corresponds to a
register field in the invo_context argument. Bits 0 through 127
correspond to IREG[0] through IREG[127].
Bit 0 corresponds to R0, which cannot be written, and is ignored.
Bit 1 corresponds to the global data pointer (GP).
Bit 13 corresponds to the thread pointer (TP).
Bit 25 corresponds to the argument information register (AI).
If bit 12, which corresponds to SP, is set, then no changes are
made.
fr_mask
OpenVMS usage:mask_octaword
type: 128-bit vector
access: read only
mechanism: by reference
Address of a 128-bit bit vector, where each bit corresponds to a
register field in the passed invo_context.
To update floating-point registers F32-F127, provide a pointer to
an array of 96 octawords in LIBICB$PH_F32_F127.
Bits 0 through 127 correspond to FREG[0] through FREG[127].
Bit 0 corresponds to F0, which cannot be written, and is ignored.
Bit 1 corresponds to F1, which cannot be written, and is ignored.
br_mask
OpenVMS usage:mask_byte
type: 8-bit vector
access: read only
mechanism: by reference
Address of a 8-bit bit vector, where each bit corresponds to
a register field in the passed invo_context. Bits 0 through 7
correspond to BRANCH[0] through BRANCH[7].
pr_mask
OpenVMS usage:mask_quadword
type: 64-bit vector
access: read only
mechanism: by reference
Address of a 64-bit bit vector, where each bit corresponds to
a register field in the passed invo_context. Bits 0 through 63
correspond to PRED[0] through PRED[63].
misc_mask
OpenVMS usage:mask_quadword
type: 64-bit vector
access: read only
mechanism: by reference
Address of a 64-bit bit vector, where each bit corresponds to a
register field in the passed invo_context as follows:
Bit 0=PC.
Bit 1=FPSR.
Bits 2-63 are reserved.