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