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: - 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.
- 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.
- 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.