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 * SAVESIZE hardcoded definition in HCPEQUAT
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, 2001