(Alpha and I64 only.) The Put Invocation Registers routine
modifies specified values in a procedure's invocation context.
A procedure's invocation context consists of the values stored in
the integer and floating-point registers as well as the program
counter and the processor status registers.
LIB$PUT_INVO_REGISTERS updates internal register save areas with
the new values. These values are written to the active register
set by the time control returns to the procedure asociated with
the specified invocation handle.
Format
LIB$PUT_INVO_REGISTERS invo_handle, invo_context, invo_mask
1 – Returns
OpenVMS usage:longword_unsigned
type: longword (unsigned)
access: write only
mechanism: by value
Status value. A value of 1 indicates success. When the initial
context represents the bottom of the call chain, a value of 0 is
returned.
2 – Arguments
invo_handle
OpenVMS usage:invo_handle
type: longword (unsigned)
access: read only
mechanism: by value
Handle for the invocation to be updated.
invo_context
OpenVMS usage:invo_context_blk
type: structure
access: read only
mechanism: by reference
Address of an invocation context block that contains the values
to be written to the registers.
Each register that is set in the invo_mask parameter is updated
using the value found in the corresponding IREG or FREG field of
the invocation context block. The program counter and processor
status of the given invocation can also be updated in this way.
No other fields of the invocation context block are used.
invo_mask
OpenVMS usage:mask_quadword
type: quadword (unsigned)
access: read only
mechanism: by reference
Address of a 64-bit vector, where each bit corresponds to a
register field in the passed invo_context. Bits 0 through 29
correspond to IREG[0] through IREG[29], bit 30 corresponds
to STACK_POINTER and cannot be changed, bit 31 corresponds to
PROGRAM_COUNTER, bits 32 through 62 correspond to FREG[0] through
FREG[30], and bit 63 corresponds to PROCESSOR_STATUS.