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

This information is based on z/VM V4R2.0. Last updated on 17 Oct 2001 at 16:18:21 EDT.
Copyright IBM Corporation, 1990, 2001