CEE3SMS2 — set machine state 2

This CWI interface dynamically builds a machine state block that contains the necessary machine state information for use with CEEMRCM. It builds the machine state block at a storage location provided by the caller.

Syntax

void (*CEECELVBSMS2) (gprs, float0, float2, float4, float6, stackframe, psw, [ars], machine_state, [fc])
INT        *gprs[16];
FLOAT      *float0;
FLOAT      *float2;
FLOAT      *float4;
FLOAT      *float6;
POINTER    *stackframe;
CHAR       *psw[8];
INT        *ars[16];
POINTER      *machine_state;
FEED_BACK  *fc;
CEECELVBSMS2
Call this CWI interface as follows:
L     R15,CEECAACELV-CEECAA(,R12)     CAA address is in R12
L     R15,4076(,R15)
BALR  R14,R15
CEECELVBSMS2
A field in the Language Environment LIBVEC that points to the set machine state routine 2 (CEE3SMS2).
gprs (input)
An array of the 16 general purpose registers arranged in the order of gpr 0 through gpr 15.
float0 (input)
The value of the floating-point register 0 associated with the machine state.
float2 (input)
The value of the floating-point register 2 associated with the machine state.
float4 (input)
The value of the floating-point register 4 associated with the machine state.
float6 (input)
The value of the floating-point register 6 associated with the machine state.
stackframe (input)
The stack frame for which this machine state block is built. It must be a stack frame that is active on the call chain.
psw (input)
The program status word that contains information for the code point that gains control. In particular, it contains the code address that is to gain control and the program mask that is to be restored. The PSW must be complete and correct for execution at the indicated address. The instruction address must contain the correct high-order bit indicating the addressing mode.
ars (input/optional)
An array of the 16 access registers arranged in the order of AR 0 through AR 15. This parameter is optional and is ignored by this service. The access registers are not affected..
machine_state (output)
A pointer containing the address of storage into which the machine state block is built. Storage for the machine state block is allocated by the caller of CEE3SMS2. It must be large enough to contain a machine state block and mapped by CEEMCH.
fc (output/optional)
The parameter in which the callable service feedback code is placed. The following conditions can result from this service.
Condition  
CEE000 Severity 0
Msg_No N/A
Message The service was successful.
CEE390 Severity 3
Msg_No 3360
Message The stack frame was not found on the call chain.
Usage Notes:
  1. This is intended for building a machine state for use by the CEEMRCM routine. The machine state block returned by this routine can be used as input to CEEMRCM.
  2. It is the responsibility of the calling application to ensure that the storage for the machine state block is not freed prematurely but it is freed when it is no longer required. This helps to prevent memory leaks.
  3. If the saved machine state points into an XPLINK routine that does alloca(), the value of register 4 in the gprs parameter must point to the DSA currently on the Language Environment stack for that routine. The routine owning the DSA cannot have done any alloca() requests since the value of register 4 was captured.