SAVBK Back to Index page
 
Prolog 
Control Block Contents 
   SAVBK DSECT
Storage Layout 
Cross Reference (Contains links to field and bit definitions)
Programming Interface Information:
This information is NOT intended to be
used as Programming Interfaces of z/VM.


  SAVBK Prolog Top of page
 
 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 Top of page
 

 SAVBK DSECT Top of page
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 0080 128 Bitstring 1 SAVEWRK$ (0) 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 Top of page
 
          
*** 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 Top of page
 
 
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
SAVEWRK$       0080
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
 
This information is based on z/VM 7.3.0 Last updated on 22 Jun 2022 at 15:54:37 EDT.
Copyright IBM Corporation, 1990, 2022