Programming Interface Information: This information is NOT intended to be used as Programming Interfaces of z/VM.

#### SAVBK

Prolog

Control Block Contents
SAVBK DSECT

Storage Layout

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.
     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' 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... ....      SVHOPEN        X'80'
              .1.. ....      SAVEGET        X'40' Savearea obtained via GET
              ..1. ....      SAVECSAV       X'20' FPNT is ptr to C savearea
                                            chain
              .... .1..      SVHSVA         X'04'
              .... ..1.      SVHIS2W        X'02'
              .... ...1      SVHHF2W        X'01'
    0012   18 Bitstring    1 SAVEIAC        Address mode when we HCPCALL
    0013   19 Bitstring    1 SAVEFORM       Savearea format/content
              1... ....      SAVESTAM       X'80' 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' 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    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

This information is based on z/VM V5R2.0. Last updated on 12 Apr 2006 at 17:21:48 EDT.
Copyright IBM Corporation, 1990, 2005