Library /sys$common/syshlp/HELPLIB.HLB  —  RTL Routines, LIB$  LIB$X86_PUT_INVO_REGISTERS
    The fields of a given procedure invocation context can be
    updated with new register contents by using this function.

    Format
      LIB$X86_PUT_INVO_REGISTERS (invo_handle, invo_context
      [,gr_mask] [,xmm_mask] [,ymm_mask] [,zmm_mask] [,apr_mask]
      [,misc_mask])

    Note that if user override routines are specified in the
    invocation context block, then they are used to find and modify
    the invocation context.

1  –  Returns

 status

    A value of 1 indicates success. A value of 0 is returned (and
    nothing is changed) in the following circumstances:

    * When the invocation handle does not represent an active
      invocation context.
    * When bit 7 of the gr_mask argument is set.
    * When a scratch register has not been saved, or a register's
      save location or status cannot be determined.

2  –  Arguments

 invo_handle

    OpenVMS usage: invo_handle
    type:          quadword
    access:        read
    mechanism:     by reference

    Handle for the invocation to be updated.

 invo_context

    OpenVMS usage: invo_context_blk
    type:          structure
    access:        read
    mechanism:     by reference

    Address of a valid invocation context block that contains new
    register contents.

    At least one of the following register masks must be specified
    and contain a non-zero value. Each register that is set in the
    xx_mask argument is updated using the value found in the
    corresponding ICB field. For example, bit n set in gr_mask
    corresponds to IREG[n].

 gr_mask

    OpenVMS usage: mask_word
    type:          16-bit vector
    access:        read
    mechanism:     by reference

    Address of a 16-bit bit vector, where each bit corresponds to a
    register field in the invo_context argument.
    Bits 0 through 15 correspond to IREG[0] through IREG[15].
    Bit 0 corresponds to the argument information register (AI).
    If bit 7, which corresponds to SP, is set, then no changes are
    made.

 xmm_mask

    OpenVMS usage: mask_word
    type:          16-bit vector
    access:        read
    mechanism:     by reference

    Address of a 16-bit bit vector, where each bit corresponds to
    an SSE XMM register field in the XSAVE area, pointed to from
    the passed invo_context. Bit 7 corresponds to XMM7.

 ymm_mask

    OpenVMS usage: mask_word
    type:          16-bit vector
    access:        read
    mechanism:     by reference

    Address of a 16-bit bit vector, where each bit corresponds to
    an SSE YMM register field in the XSAVE area, pointed to from
    the passed invo_context. Bit 14 corresponds to YMM14.

 zmm_mask

    OpenVMS usage: mask_longword
    type:          32-bit vector
    access:        read
    mechanism:     by reference

    Address of a 32-bit bit vector, where each bit corresponds to
    an SSE ZMM register field in the XSAVE area, pointed to from
    the passed invo_context. Bit 21 corresponds to ZMM21.

    Note that if the same bit position is set in more than one of
    the xmm_mask, ymm_mask, and zmm_mask, the result is undefined.

 apr_mask

    OpenVMS usage: mask_longword
    type:          32-bit vector
    access:        read
    mechanism:     by reference

    Address of a 32-bit bit vector, where each bit corresponds to a
    register field in the pointed to Alpha pseudo-register area
    passed. Bits 0 through 31 correspond to Alpha registers R0
    through R31. If bit 30, which corresponds to SP, or 31, which
    corresponds to RZ are set, then no changes are made.

 apr_mask

    OpenVMS usage: mask_quadword
    type:          64-bit vector
    access:        read
    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=IP
    Bit 1=RFLAGS register
    Bit 2=FS register
    Bit 3=GS register
    Bit 4=MXCSR register
    Bit 5=FCW register
    Bit 6=FSW register
    Bits 7b63 are reserved

    Note that IP can only be updated when the invocaton in question
    has been interrupted (either by exception or by an interrupt)
    and is logically previous to an invocation with the
    OSSD$V_EXCEPTION_FRAME bit set.
    Note that MXCSR, FCW, and FSW can only be updated when there is
    a valid address and an XSAVE area in the invo_context.
Close Help