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 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

This information is based on z/VM V4R3.0. Last updated on 1 May 2002 at 09:58:04 EDT.
Copyright IBM Corporation, 1990, 2002