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). 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" routines, which use 64-bit registers, use an SVGBK instead of a SAVBK. See the prolog of HCPSVGBK for more details. Note that the SAVBK is 512 bytes long. The first 128 bytes are laid out with the register slots containing the low-order words of the registers. The remainder 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 routine to a shortreg one, so as to preserve the caller's high halves across deeper calls to longreg 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. RELOCATION CONSIDERATIONS : None 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 0000 0 Bitstring 1 SAVEHEAD (0) Savearea header 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. Eventually, all header fields are to be SVHxxxx. 0000 0 Address 4 SAVEFPNT General forward pointer 0004 4 Address 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' SAVENOFR Do not fret savearea on dispatch .1.. .... SAVESKCR X'40' SAVESKCR This is a stacked return ..1. .... SAVESKCL X'20' SAVESKCL This is a stacked call ...1 .... SAVERTNF X'10' SAVERTNF "Return" with no fret .... 1... SAVEUCFM X'08' SAVEUCFM Stack as console function work .... .1.. SAVEURGT X'04' SAVEURGT Stack as urgent work .... ...1 SAVEDMCO X'01' SAVEDMCO Dispatch on the master CPU only 0011 17 Bitstring 1 SAVECALC Block usage status 1... .... SVHOPEN X'80' SVHOPEN *!* .1.. .... SAVEGET X'40' SAVEGET Savearea obtained via GET ..1. .... SAVECSAV X'20' SAVECSAV FPNT is ptr to C savearea chain .... .1.. SVHSVA X'04' SVHSVA *!* .... ..1. SVHIS2W X'02' SVHIS2W *!* .... ...1 SVHHF2W X'01' SVHHF2W *!* 0012 18 Bitstring 1 SAVEIAC Address mode when we HCPCALL 0013 19 Bitstring 1 SAVEFORM Savearea format/content 1... .... SAVESTAM X'80' SAVESTAM For STATIC entry pt, TmodeSTD or TmodeINT: ARs saved by HCPENTER, and should be restored by HCPEXIT. Also, set by HCPSTK and others, tested by HCPDSB, indicating ARs should be restored at CPEBK unstack time. .1.. .... SAVECREG X'40' SAVECREG Savearea has contiguous 64-bit register fields (SVGBK) ..1. .... SAVERG64 X'20' SAVERG64 Savearea accommodates 64 bits per register (SVGBK, or SAVBK with SAVEHIRG extension) .11. .... SAVEREGF SAVECREG+SAVERG64 SAVEREGF Mask for register-layout bits above; has value: 00 for SAVBK 01 for SAVBK with SAVEHIRG 11 for SVGBK 0014 20 Address 4 SAVERETN Return linkage routine address 0018 24 Bitstring 1 SAVEBODY (0) Savearea body 0018 24 Bitstring 232 SAVEAREA (0) Register and working storage 0018 24 Bitstring 64 SAVEREGS (0) Caller's registers 0018 24 Signed 4 SAVER0 (0) Caller's saved register 0 0018 24 Bitstring 1 SAVER0B0 byte 0 0019 25 Bitstring 1 SAVER0B1 byte 1 001A 26 Bitstring 1 SAVER0B2 byte 2 001B 27 Bitstring 1 SAVER0B3 byte 3 001C 28 Signed 4 SAVER1 (0) Caller's saved register 1 001C 28 Bitstring 1 SAVER1B0 byte 0 001D 29 Bitstring 1 SAVER1B1 byte 1 001E 30 Bitstring 1 SAVER1B2 byte 2 001F 31 Bitstring 1 SAVER1B3 byte 3 0020 32 Signed 4 SAVER2 (0) Caller's saved register 2 THE FOLLOWING BYTE DEFINITIONS OF SAVER2 ARE FOR TESTING PARAMETERS PASSED BETWEEN MODULES. 0020 32 Bitstring 1 SAVER2B0 byte 0 0021 33 Bitstring 1 SAVER2B1 byte 1 0022 34 Bitstring 1 SAVER2B2 byte 2 0023 35 Bitstring 1 SAVER2B3 byte 3 0024 36 Signed 4 SAVER3 Caller's saved register 3 0028 40 Signed 4 SAVER4 Caller's saved register 4 002C 44 Signed 4 SAVER5 Caller's saved register 5 0030 48 Signed 4 SAVER6 Caller's saved register 6 0034 52 Signed 4 SAVER7 Caller's saved register 7 0038 56 Signed 4 SAVER8 Caller's saved register 8 003C 60 Signed 4 SAVER9 Caller's saved register 9 0040 64 Signed 4 SAVER10 Caller's saved register 10 0044 68 Signed 4 SAVER11 Caller's saved register 11; ALSO VMDBK ADDRESS OF USER ON WHICH SAVBK IS SCHEDULED 0048 72 Bitstring 16 SAVERCF (0) Caller's saved register 12-15 0048 72 Signed 4 SAVER12 Caller's saved register 12 004C 76 Signed 4 SAVER13 Caller's saved register 13; ALSO PREVIOUS SAVBK ADDRESS ON CALL 0050 80 Signed 4 SAVER14 Caller's saved register 14; ALSO RETURN ADDRESS ON CALL OR STACKED SAVBK RETURN 0054 84 Signed 4 SAVER15 Caller's 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 005C 92 Signed 4 SAVEWRK1 0060 96 Signed 4 SAVEWRK2 0064 100 Signed 4 SAVEWRK3 0068 104 Signed 4 SAVEWRK4 006C 108 Signed 4 SAVEWRK5 0070 112 Signed 4 SAVEWRK6 0074 116 Signed 4 SAVEWRK7 0078 120 Signed 4 SAVEWRK8 007C 124 Signed 4 SAVEWRK9 SAVBK extension: Saveareas in the SAVBK 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 * (4) Reserved for future use 0090 144 Signed 4 * (4) Reserved for future use The SAVBK SAVEAARP and the SVGBK SVGAARP fields must be at the same offset into each control block. The only available area in both that satisfies this requirement is, unfortunately, here in the middle of the control block. 00A0 160 Address 4 SAVEOPNR A(who set SVHOPEN) 00A4 164 Signed 4 * Reserved for IBM use 00A8 168 Address 4 SAVEAARP A(AR sidecar) for PFX saveareas 00AC 172 Bitstring 1 SAVEIACA Caller actual IAC 00AD 173 Bitstring 1 SAVEAMDE Amode of callee at entry. 00AE 174 Bitstring 1 SAVEIACR Caller "should be" IAC 00AF 175 Bitstring 1 SAVEIACE Callee "should be" IAC 00B0 176 Signed 4 * (4) Reserved for future use 00C0 192 Bitstring 64 SAVEHIRG (0) 00C0 192 Signed 4 SAVEH0 High word of zArch general reg 0 00C4 196 Signed 4 SAVEH1 High word of zArch general reg 1 00C8 200 Signed 4 SAVEH2 High word of zArch general reg 2 00CC 204 Signed 4 SAVEH3 High word of zArch general reg 3 00D0 208 Signed 4 SAVEH4 High word of zArch general reg 4 00D4 212 Signed 4 SAVEH5 High word of zArch general reg 5 00D8 216 Signed 4 SAVEH6 High word of zArch general reg 6 00DC 220 Signed 4 SAVEH7 High word of zArch general reg 7 00E0 224 Signed 4 SAVEH8 High word of zArch general reg 8 00E4 228 Signed 4 SAVEH9 High word of zArch general reg 9 00E8 232 Signed 4 SAVEH10 High word of zArch general reg 10 00EC 236 Signed 4 SAVEH11 High word of zArch general reg 11 00F0 240 Signed 4 SAVEH12 High word of zArch general reg 12 00F4 244 Signed 4 SAVEH13 High word of zArch general reg 13 00F8 248 Signed 4 SAVEH14 High word of zArch general reg 14 00FC 252 Signed 4 SAVEH15 High word of zArch general reg 15 0100 256 Bitstring 64 SAVEARS (0) Access Registers 0100 256 Signed 4 SAVEAR0 AR0 0104 260 Signed 4 SAVEAR1 AR1 0108 264 Signed 4 SAVEAR2 AR2 010C 268 Signed 4 SAVEAR3 AR3 0110 272 Signed 4 SAVEAR4 AR4 0114 276 Signed 4 SAVEAR5 AR5 0118 280 Signed 4 SAVEAR6 AR6 011C 284 Signed 4 SAVEAR7 AR7 0120 288 Signed 4 SAVEAR8 AR8 0124 292 Signed 4 SAVEAR9 AR9 0128 296 Signed 4 SAVEAR10 AR10 012C 300 Signed 4 SAVEAR11 AR11 0130 304 Signed 4 SAVEAR12 AR12 0134 308 Signed 4 SAVEAR13 AR13 0138 312 Signed 4 SAVEAR14 AR14 013C 316 Signed 4 SAVEAR15 AR15 0140 320 Signed 4 SAVE2ARS (16) AR storage for TmINT routines 0180 384 Bitstring 44 SAVETSK (0) Fields copied from TSKBK in 1 MVC 0180 384 Bitstring 1 * - TSKFLAGS 0181 385 Bitstring 1 * (3) - Reserved for IBM use 0184 388 Signed 4 * - TSKCR0SAV 0188 392 Address 4 * - TSKSPIEA 018C 396 Bitstring 4 * - TSKSPIEM 0190 400 Dbl-Word 8 * - Reserved for IBM use 0198 408 Address 4 * - TSKEXPIR 019C 412 Address 4 * - TSKSTERR 01A0 416 Address 4 * - TSKINVAD 01A4 420 Signed 4 * - Reserved for IBM use 01A8 424 Bitstring 1 * - TSKEVENT 01A9 425 Bitstring 1 * (3) - Reserved for IBM use 01AC 428 Bitstring 1 * (84) Reserved for future use 00000200 SAVE_END *
SAVBK Storage Layout
*** SAVBK - CALL WITH SAVEAREA BLOCK * * +---------------------------+---------------------------+ * 0 | SAVEFPNT | SAVEBPNT | * +---------------------------+---------------------------+ * 8 | SAVESFQP | SAVECPRQ | * +------+------+------+------+---------------------------+ * 10 |:ESCHC|:ECALC|:EIAC |: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 |///////////////////////////////////////////////////////| * |///////////////////////////////////////////////////////| * +-------------------------------------------------------+ * 90 |///////////////////////////////////////////////////////| * |///////////////////////////////////////////////////////| * +---------------------------+---------------------------+ * A0 | SAVEOPNR |///////////////////////////| * +---------------------------+------+------+------+------+ * A8 | SAVEAARP |:EIACA|:EAMDE|:EIACR|:EIACE| * +---------------------------+------+------+------+------+ * B0 |///////////////////////////////////////////////////////| * |///////////////////////////////////////////////////////| * +---------------------------+---------------------------+ * 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 | SAVEAR0 | SAVEAR1 | * +---------------------------+---------------------------+ * 108 | SAVEAR2 | SAVEAR3 | * +---------------------------+---------------------------+ * 110 | SAVEAR4 | SAVEAR5 | * +---------------------------+---------------------------+ * 118 | SAVEAR6 | SAVEAR7 | * +---------------------------+---------------------------+ * 120 | SAVEAR8 | SAVEAR9 | * +---------------------------+---------------------------+ * 128 | SAVEAR10 | SAVEAR11 | * +---------------------------+---------------------------+ * 130 | SAVEAR12 | SAVEAR13 | * +---------------------------+---------------------------+ * 138 | SAVEAR14 | SAVEAR15 | * +---------------------------+---------------------------+ * 140 | | * = SAVE2ARS = * | | * +------+--------------------+---------------------------+ * 180 |//////|////////////////////|///////////////////////////| * +------+--------------------+---------------------------+ * 188 |///////////////////////////|///////////////////////////| * +---------------------------+---------------------------+ * 190 |///////////////////////////////////////////////////////| * +---------------------------+---------------------------+ * 198 |///////////////////////////|///////////////////////////| * +---------------------------+---------------------------+ * 1A0 |///////////////////////////|///////////////////////////| * +------+--------------------+---------------------------+ * 1A8 |//////|////////////////////|///////////////////////////| * +------+--------------------+///////////////////////////| * 1B0 |///////////////////////////////////////////////////////| * =///////////////////////////////////////////////////////= * |///////////////////////////////////////////////////////| * +-------------------------------------------------------+ * 200 * *** SAVBK - CALL WITH SAVEAREA BLOCK
SAVBK Cross Reference
Symbol Dspl Value -------------- ---- ----- SAVE_END 01AC 00000200 SAVEAARP 00A8 SAVEAMDE 00AD SAVEAREA 0018 SAVEARS 0100 SAVEAR0 0100 SAVEAR1 0104 SAVEAR10 0128 SAVEAR11 012C SAVEAR12 0130 SAVEAR13 0134 SAVEAR14 0138 SAVEAR15 013C SAVEAR2 0108 SAVEAR3 010C SAVEAR4 0110 SAVEAR5 0114 SAVEAR6 0118 SAVEAR7 011C SAVEAR8 0120 SAVEAR9 0124 SAVEBODY 0018 SAVEBPNT 0004 SAVECALC 0011 SAVECPRQ 000C SAVECREG 0013 40 SAVECSAV 0011 20 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 SAVEIAC 0012 SAVEIACA 00AC SAVEIACE 00AF SAVEIACR 00AE SAVENOFR 0010 80 SAVEOPNR 00A0 SAVERCF 0048 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 SAVESTAM 0013 80 SAVETSK 0180 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 SAVE2ARS 0140 SVHHF2W 0011 01 SVHIS2W 0011 02 SVHOPEN 0011 80 SVHSVA 0011 04
Copyright IBM Corporation, 1990, 2011