CEE3SMS — set machine state

This CWI interface dynamically builds a machine state block that contains the necessary machine state information for use with CEEMRCM.

Syntax

void (*CEECELVBSMS) (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];
TOKEN      *machine_state;
FEED_BACK  *fc;
CEECELVBSMS
Call this CWI interface as follows:
L     R15,CEECAACELV-CEECAA(,R12)     CAA address is in R12
L     R15,3464(,R15)
BALR  R14,R15
CEECELVBSMS
A field in the Language Environment LIBVEC that points to the set machine state routine (CEE3SMS).
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 this label_var. 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. When omitted, the access registers are assumed inconsequential for this state block.
machine_state (output)
A token that represents the machine state block. The machine state block is allocated by Language Environment from heap storage. The machine state block is automatically freed by Language Environment when the code associated with the stackframe returns to its caller.
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 completed successfully.
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 token returned by this routine can be used as input to CEEMRCM.
  2. Language Environment automatically frees the heap storage for the machine state block when the routine that is associated with the stackframe returns to its caller. Attempts to use the machine state block after it is freed result in unpredictable behavior.
  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. In other words, the routine owning the DSA cannot have done any alloca() requests since the value of register 4 was captured.