|
Programming Interface Information:
This information is NOT intended to be used as Programming Interfaces of z/VM. |
SAVBK
Control Block Contents
SAVBK DSECT
Cross Reference (Contains links to field and bit definitions)
SAVBK Prolog
NAME : HCPSAVBK
DESCRIPTION: CALL WITH SAVEAREA BLOCK
DSECT : SAVBK
FUNCTION : The SAVBK is used in the call-with-dynamic-savearea
linkage to a "short-register", or "shortreg",
routine (one which treats registers as 32 bits in
both the ESA/390 and ESAME gens.) The caller does
not supply the savearea. Instead, the linkage
assistance routines (HCPSVC/SVD) allocate the SAVBK
and the called routine then saves the caller's
registers in the SAVBK.
"Longreg" or "fullreg" routines, which use 64-bit
registers in ESAME, use an SVGBK instead of an
SAVBK. (In the ESA/390 gen, longreg routines may
not be called. Fullreg routines in ESA/390 will
use 32-bit registers, but will refer to their save-
areas via the SVGBK, which in ESA/390 is laid out
like a SAVBK.) See the prolog of HCPSVGBK for more
details.
Note that the SAVBK is different in the ESA/390 and
ESAME gens. In the ESA/390 gen, it is 128 bytes
long and contains 16 contiguous words for registers.
In the ESAME gen, it is 256 bytes long. The first
128 bytes are laid out as in ESA/390, with the
register slots containing the low-order words of
the registers. The second half includes another
16 words which *may* be used for the high-order
words of the registers. This is done only on a
call from a longreg or fullreg routine to a shortreg
one, so as to preserve the caller's high halves
across deeper calls to long/fullreg routines or
across losses of control. The SAVEFORM byte in
the header contains flags indicating the size of
the block and whether the high halves are filled in.
The SAVBK DSECT may also be used as a map of the
fixed saveareas, such as PFXBALSV and PFXTMPSV,
when they are used by shortreg routines.
Notes : The SAVBK and the CPEBK have the same format,
and occasionally a SAVBK is converted into a CPEBK or
vice versa. The formats are identical intentionally
so that these conversions can be made.
LOCATED BY : R13 WHEN RUNNING IN ANY ROUTINE WHICH IS CALLED
USING A CALL-WITH-DYNAMIC-SAVEAREA LINKAGE.
POINTS TO CURRENT (ALREADY FILLED UP) SAVEAREA.
SAVER13 THIS FIELD IN CALLEE'S SAVEAREA POINTS BACK TO
THE CALLER'S SAVEAREA. (THIS ASSUMES THAT THE
CALLER HAD A SAVEAREA OF HIS OWN AND THAT HE
HAD ITS ADDRESS IN R13 AT THE TIME OF THE CALL.
SEE ALSO SAVECSAV FOR ANOTHER BACKWARD POINTER.)
SAVEFPNT FORWARD CHAINING POINTER. THE CHAIN OF AVAILABLE
/SVGFPNT SAVBK'S USES THIS POINTER. WHEN THE SAVBK
IS IN
USE AS A SAVEAREA, SAVEFPNT IS NORMALLY NOT USED
FOR ANYTHING (SAVER13 POINTS BACK TO PRECEDING
SAVBK IF THE CALLER HAD ONE).
SAVEBPNT THIS POINTER IS AVAILABLE FOR BACKWARD CHAINING,
/SVGBPNT BUT IS NOT NORMALLY USED.
VMDVOSAV SIMULATION SAVBK STACK ANCHOR.
CREATED BY : HCPSVC WHEN NO FREE SAVBKS ARE AVAILABLE
HCPSAM DURING PROCESSOR ONLINE STORAGE ALLOCATION
DELETED BY : HCPSVC DURING SAVBK RECLAIM PROCESSING
HCPSAM DURING PROCESSOR OFFLINE STORAGE DEALLOCATIO
SERIALIZED : SERIALIZATION IS PROVIDED BY THE DISPATCH LOCK EXCEPT
FOR SAVECPRQ WHICH IS SERIALIZED BY TRQBK AND BY THE
MP DEFER FUNCTION.
COMMENTS : SAVEFPNT AND SAVEBPNT ARE USED TO MAINTAIN VARIOUS
SAVBK QUEUES AND STACKS. ROUTINES MAY USE THESE
FIELDS IF THE SAVBK IS NOT CURRENTLY ON A QUEUE OR
STACK. AN EXAMPLE IS THE SAVBK USED ON A DYNAMIC
CALL.
IF A ROUTINE CALLS ANOTHER ROUTINE TO STACK A SAVBK
ONTO A QUEUE, THE CALLING ROUTINE SHOULD BE AWARE
THAT THE SAVEFPNT AND SAVEBPNT FIELDS MAY HAVE BEEN
CHANGED AS A RESULT OF THE CALL. THE CALLING
ROUTINES SHOULD REFRAIN FROM USING THESE FIELDS.
SAVBK Control Block Content
SAVBK DSECT
Hex Dec Type/Val Lng Label (dup) Comments
---- ---- --------- ---- -------------- --------
0000 0 Structure SAVBK CALL WITH SAVEAREA BLOCK
The header of the SAVBK includes queue pointers, status flags, and a
type code. This header must be laid out the same in the SAVBK, CPEBK,
and SVGBK, since a single queue or savearea chain may contain a mix of
such blocks. This mapping is defined as the SVHBK; equivalent symbols
are included here.
0000 0 Bitstring 1 SAVEHEAD (0) Savearea header common to all
formats
The header of the savearea includes queue pointers, status flags, and a
type code. This header must be laid out the same in all savearea
formats, since a single queue or savearea chain may contain a mix of
both blocks.
0000 0 Signed 4 SAVEFPNT General forward pointer
0004 4 Signed 4 SAVEBPNT General backward pointer
(backward pointer not used for
single-thread lists)
0008 8 Address 4 SAVESFQP Savearea frame queue pointer
000C 12 Address 4 SAVECPRQ Cross processor return queue addr
0010 16 Bitstring 1 SAVESCHC Savearea dispatching controls
1... .... SAVENOFR X'80' Do not fret savearea on
dispatch
.1.. .... SAVESKCR X'40' This is a stacked return
..1. .... SAVESKCL X'20' This is a stacked call
...1 .... SAVERTNF X'10' "Return" with no fret
.... 1... SAVEUCFM X'08' Stack as console function
work
.... .1.. SAVEURGT X'04' Stack as urgent work
.... ...1 SAVEDMCO X'01' Dispatch on the master CPU
only
0011 17 Bitstring 1 SAVECALC Block usage status
1... .... SAVEOPEN X'80' Savearea in use for a call
.1.. .... SAVEGET X'40' Savearea obtained via GET
..1. .... SAVEPGLK X'20' Callee module is pageable,
and was locked
...1 .... SAVEPGWT X'10' Call waiting on pageable
module to be paged in
.... 1... SAVESPAR X'08' Savearea is not active
0012 18 Bitstring 1 * Reserved
0013 19 Bitstring 1 SAVEFORM Savearea format/content
1... .... SAVELARG X'80' Savearea is large
allocation size
.1.. .... SAVECREG X'40' Savearea has contiguous
64-bit register fields (SVGBK)
..1. .... SAVERG64 X'20' Savearea accommodates 64
bits per register (SVGBK or SAVBK
with SAVEHIRG extension)
.11. .... SAVEREGF SAVECREG+SAVERG64 Mask for
register-layout bits above; has
value: noformat 00 for SAVBK 01
for SAVBK with SAVEHIRG 11 for
SVGBK enoformat
0014 20 Address 4 SAVERETN Return linkage routine address
0018 24 Bitstring 104 SAVEAREA (0) Register and working storage
0018 24 Bitstring 64 SAVEREGS (0) CALLERS REGISTERS - R0 TO R15
0018 24 Signed 4 SAVER0 (0) CALLER'S SAVED REGISTER 0
0018 24 Bitstring 1 SAVER0B0 CALLER'S SAVED REGISTER 0 BYTE 0
0019 25 Bitstring 1 SAVER0B1 CALLER'S SAVED REGISTER 0 BYTE 1
001A 26 Bitstring 1 SAVER0B2 CALLER'S SAVED REGISTER 0 BYTE 2
001B 27 Bitstring 1 SAVER0B3 CALLER'S SAVED REGISTER 0 BYTE 3
001C 28 Signed 4 SAVER1 (0) CALLERS SAVED REGISTER 1
001C 28 Bitstring 1 SAVER1B0 CALLER'S SAVED REGISTER 1 BYTE 0
001D 29 Bitstring 1 SAVER1B1 CALLER'S SAVED REGISTER 1 BYTE 1
001E 30 Bitstring 1 SAVER1B2 CALLER'S SAVED REGISTER 1 BYTE 2
001F 31 Bitstring 1 SAVER1B3 CALLER'S SAVED REGISTER 1 BYTE 3
0020 32 Signed 4 SAVER2 (0) CALLERS SAVED REGISTER 2 THE
FOLLOWING BYTE DEFINITIONS OF
SAVER2 ARE FOR TESTING PARAMETERS
PASSED BETWEEN MODULES.
0020 32 Bitstring 1 SAVER2B0 CALLERS SAVED REGISTER 2 BYTE 0
0021 33 Bitstring 1 SAVER2B1 CALLERS SAVED REGISTER 2 BYTE 1
0022 34 Bitstring 1 SAVER2B2 CALLERS SAVED REGISTER 2 BYTE 2
0023 35 Bitstring 1 SAVER2B3 CALLERS SAVED REGISTER 2 BYTE 3
0024 36 Signed 4 SAVER3 CALLERS SAVED REGISTER 3
0028 40 Signed 4 SAVER4 CALLERS SAVED REGISTER 4
002C 44 Signed 4 SAVER5 CALLERS SAVED REGISTER 5
0030 48 Signed 4 SAVER6 CALLERS SAVED REGISTER 6
0034 52 Signed 4 SAVER7 CALLERS SAVED REGISTER 7
0038 56 Signed 4 SAVER8 CALLERS SAVED REGISTER 8
003C 60 Signed 4 SAVER9 CALLERS SAVED REGISTER 9
0040 64 Signed 4 SAVER10 CALLERS SAVED REGISTER 10
0044 68 Signed 4 SAVER11 CALLERS SAVED REGISTER 11; ALSO
VMDBK ADDRESS OF USER ON WHICH
SAVBK IS SCHEDULED
0048 72 Signed 4 SAVER12 CALLERS SAVED REGISTER 12
004C 76 Signed 4 SAVER13 CALLERS SAVED REGISTER 13; ALSO
PREVIOUS SAVBK ADDRESS ON CALL
0050 80 Signed 4 SAVER14 CALLERS SAVED REGISTER 14; ALSO
RETURN ADDRESS ON CALL OR STACKED
SAVBK RETURN
0054 84 Signed 4 SAVER15 CALLERS SAVED REGISTER 15; ALSO
GOTO ADDRESS ON SCHEDULED SAVBK
EXECUTION; ALSO REGISTER 15
RETURN CODE ON HCPEXIT OR STACKED
SAVBK RETURN
0058 88 Bitstring 40 SAVEWRK (0) WORKAREA FOR CALLEE
0058 88 Signed 4 SAVEWRK0 WORKAREA FOR CALLEE
005C 92 Signed 4 SAVEWRK1 WORKAREA FOR CALLEE
0060 96 Signed 4 SAVEWRK2 WORKAREA FOR CALLEE
0064 100 Signed 4 SAVEWRK3 WORKAREA FOR CALLEE
0068 104 Signed 4 SAVEWRK4 WORKAREA FOR CALLEE
006C 108 Signed 4 SAVEWRK5 WORKAREA FOR CALLEE
0070 112 Signed 4 SAVEWRK6 WORKAREA FOR CALLEE
0074 116 Signed 4 SAVEWRK7 WORKAREA FOR CALLEE
0078 120 Signed 4 SAVEWRK8 WORKAREA FOR CALLEE
007C 124 Signed 4 SAVEWRK9 WORKAREA FOR CALLEE
SAVBK extension for ESAME: In the ESAME gen of CP, all saveareas are
256 bytes. Saveareas in the SAVBK (as opposed to SVGBK) format *may*
have the high halves of registers stored in the tail end. Bit SAVERG64
in the savearea header indicates that these fields are valid.
0080 128 Signed 4 * (16) Reserved for future use
00C0 192 Bitstring 64 SAVEHIRG (0)
00C0 192 Signed 4 SAVEH0 High word of ESAME general reg 0
00C4 196 Signed 4 SAVEH1 High word of ESAME general reg 1
00C8 200 Signed 4 SAVEH2 High word of ESAME general reg 2
00CC 204 Signed 4 SAVEH3 High word of ESAME general reg 3
00D0 208 Signed 4 SAVEH4 High word of ESAME general reg 4
00D4 212 Signed 4 SAVEH5 High word of ESAME general reg 5
00D8 216 Signed 4 SAVEH6 High word of ESAME general reg 6
00DC 220 Signed 4 SAVEH7 High word of ESAME general reg 7
00E0 224 Signed 4 SAVEH8 High word of ESAME general reg 8
00E4 228 Signed 4 SAVEH9 High word of ESAME general reg 9
00E8 232 Signed 4 SAVEH10 High word of ESAME general reg 10
00EC 236 Signed 4 SAVEH11 High word of ESAME general reg 11
00F0 240 Signed 4 SAVEH12 High word of ESAME general reg 12
00F4 244 Signed 4 SAVEH13 High word of ESAME general reg 13
00F8 248 Signed 4 SAVEH14 High word of ESAME general reg 14
00FC 252 Signed 4 SAVEH15 High word of ESAME general reg 15
00000100 SAVE_END *
SAVBK Storage Layout
*** SAVBK - CALL WITH SAVEAREA BLOCK
*
* +---------------------------+---------------------------+
* 0 | SAVEFPNT | SAVEBPNT |
* +---------------------------+---------------------------+
* 8 | SAVESFQP | SAVECPRQ |
* +------+------+------+------+---------------------------+
* 10 |:ESCHC|:ECALC|//////|:EFORM| SAVERETN |
* +------+------+------+------+------+------+------+------+
* 18 |:ER0B0|:ER0B1|:ER0B2|:ER0B3|:ER1B0|:ER1B1|:ER1B2|:ER1B3|
* +------+------+------+------+------+------+------+------+
* 20 |:ER2B0|:ER2B1|:ER2B2|:ER2B3| SAVER3 |
* +------+------+------+------+---------------------------+
* 28 | SAVER4 | SAVER5 |
* +---------------------------+---------------------------+
* 30 | SAVER6 | SAVER7 |
* +---------------------------+---------------------------+
* 38 | SAVER8 | SAVER9 |
* +---------------------------+---------------------------+
* 40 | SAVER10 | SAVER11 |
* +---------------------------+---------------------------+
* 48 | SAVER12 | SAVER13 |
* +---------------------------+---------------------------+
* 50 | SAVER14 | SAVER15 |
* +---------------------------+---------------------------+
* 58 | SAVEWRK0 | SAVEWRK1 |
* +---------------------------+---------------------------+
* 60 | SAVEWRK2 | SAVEWRK3 |
* +---------------------------+---------------------------+
* 68 | SAVEWRK4 | SAVEWRK5 |
* +---------------------------+---------------------------+
* 70 | SAVEWRK6 | SAVEWRK7 |
* +---------------------------+---------------------------+
* 78 | SAVEWRK8 | SAVEWRK9 |
* +---------------------------+---------------------------+
* 80 |///////////////////////////////////////////////////////|
* =///////////////////////////////////////////////////////=
* |///////////////////////////////////////////////////////|
* +---------------------------+---------------------------+
* C0 | SAVEH0 | SAVEH1 |
* +---------------------------+---------------------------+
* C8 | SAVEH2 | SAVEH3 |
* +---------------------------+---------------------------+
* D0 | SAVEH4 | SAVEH5 |
* +---------------------------+---------------------------+
* D8 | SAVEH6 | SAVEH7 |
* +---------------------------+---------------------------+
* E0 | SAVEH8 | SAVEH9 |
* +---------------------------+---------------------------+
* E8 | SAVEH10 | SAVEH11 |
* +---------------------------+---------------------------+
* F0 | SAVEH12 | SAVEH13 |
* +---------------------------+---------------------------+
* F8 | SAVEH14 | SAVEH15 |
* +---------------------------+---------------------------+
* 100
*
*** SAVBK - CALL WITH SAVEAREA BLOCK
SAVBK Cross Reference
Symbol Dspl Value -------------- ---- ----- SAVE_END 00FC 00000100 SAVEAREA 0018 SAVEBPNT 0004 SAVECALC 0011 SAVECPRQ 000C SAVECREG 0013 40 SAVEDMCO 0010 01 SAVEFORM 0013 SAVEFPNT 0000 SAVEGET 0011 40 SAVEHEAD 0000 SAVEHIRG 00C0 SAVEH0 00C0 SAVEH1 00C4 SAVEH10 00E8 SAVEH11 00EC SAVEH12 00F0 SAVEH13 00F4 SAVEH14 00F8 SAVEH15 00FC SAVEH2 00C8 SAVEH3 00CC SAVEH4 00D0 SAVEH5 00D4 SAVEH6 00D8 SAVEH7 00DC SAVEH8 00E0 SAVEH9 00E4 SAVELARG 0013 80 SAVENOFR 0010 80 SAVEOPEN 0011 80 SAVEPGLK 0011 20 SAVEPGWT 0011 10 SAVEREGF 0013 60 SAVEREGS 0018 SAVERETN 0014 SAVERG64 0013 20 SAVERTNF 0010 10 SAVER0 0018 SAVER0B0 0018 SAVER0B1 0019 SAVER0B2 001A SAVER0B3 001B SAVER1 001C SAVER1B0 001C SAVER1B1 001D SAVER1B2 001E SAVER1B3 001F SAVER10 0040 SAVER11 0044 SAVER12 0048 SAVER13 004C SAVER14 0050 SAVER15 0054 SAVER2 0020 SAVER2B0 0020 SAVER2B1 0021 SAVER2B2 0022 SAVER2B3 0023 SAVER3 0024 SAVER4 0028 SAVER5 002C SAVER6 0030 SAVER7 0034 SAVER8 0038 SAVER9 003C SAVESCHC 0010 SAVESFQP 0008 SAVESKCL 0010 20 SAVESKCR 0010 40 SAVESPAR 0011 08 SAVEUCFM 0010 08 SAVEURGT 0010 04 SAVEWRK 0058 SAVEWRK0 0058 SAVEWRK1 005C SAVEWRK2 0060 SAVEWRK3 0064 SAVEWRK4 0068 SAVEWRK5 006C SAVEWRK6 0070 SAVEWRK7 0074 SAVEWRK8 0078 SAVEWRK9 007C
Copyright IBM Corporation, 1990, 2002