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' 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: 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 V5R4.0. Last updated on 18 Feb 2010 at 04:04:42 EDT.
Copyright IBM Corporation, 1990, 2009