SVGBK - 32-bit CP - V4R4.0

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

#### SVGBK

Prolog

Control Block Contents
SVGBK DSECT

Storage Layout

Cross Reference (Contains links to field and bit definitions)

#### SVGBK Prolog

     Name       : HCPSVGBK
     Description: Linkage savearea, longreg/fullreg
                  format
     DSECT      : SVGBK
     Function   : The SVGBK is used in the call-with-dynamic-savearea
                  calling linkage to a "long-register", or "longreg",
                  routine (one which uses 64-bit registers when the
                  machine provides them) or a "full- register"
                  ("fullreg") routine (one which is longreg in the
                  ESAME gen and "shortreg" in the ESA/390 gen).  The
                  caller does not supply the savearea.  Instead, the
                  linkage assistance routines (HCPSVC/SVD) allocate
                  the SVGBK and the called routine then saves the
                  caller's registers in the SVGBK.
                  Shortreg routines (those which always treat
                  registers as 32 bits) use an SAVBK instead of an
                  SVGBK.
                  Note that the SVGBK layout is different in the
                  ESAME and ESA/390 gens.  In the ESA/390 gen, the
                  SVGBK is laid out identically to an SAVBK (though
                  with different field names).  For example, it has
                  16 contiguous words for registers, as opposed to
                  16 contiguous doublewords in the ESAME gen.  The
                  ESA/390 version of the SVGBK defines only a subset
                  of the symbols in the ESAME version (e.g. it has
                  an SVGR0LO word but not an SVGR0 doubleword or an
                  SVGR0HI word).  This is to facilitate a single
                  source base for "fullreg" code.
                  The SVGBK dsect is also used as a map of the
                  several fixed saveareas such as PFXBALSV and
                  PFXTMPSV, when they are used by longreg and
                  fullreg routines.
                  Finally, the SVGBK can be used as a longreg
                  alternative to a CPEBK.  (There is no "CPGBK".)
                  HCPSTK will accept an SVGBK to be stacked for later
                  dispatching by HCPDSB.
     Located by : R13       when running in any "long-register"
                  routine which is called using a
                  call-with-dynamic-savearea linkage.
                  Points to current (already filled up)
                  savearea.
                  SVGR13    This field in callee's savearea points
                  back to the callers savearea.  (This
                  assumes that the caller is a longreg
                  routine and has a savearea of its own,
                  and that he had its address in
                  R13 at the time of the call.  See also
                  SVGCSAV for another backward pointer.)
                  SAVEFPNT  forward chaining pointer.  The chain of
                  /SVGFPNT  available SVGBK's uses this pointer.
                  When the SVGBK is in use as a savearea,
                  SAVEFPNT is normally not used for
                  anything.  (SAVER13 points back to the
                  preceding SVGBK/SAVBK if the caller
                  had one.)
                  SAVEBPNT  This pointer is available for backward
                  /SVGBPNT  chaining, but is not normally used.
                  VMDQURCP  Urgent CPEBK/SVGBK stack
                  VMDQCPEF  Normal CPEBK/SVGBK stack
     Created by : HCPSVC    when no free SVGBKs are available
                  HCPSAM    during processor online storage
                  allocation
     Deleted by : HCPSVC    during SVGBK reclaim processing
                  HCPSAM    during processor offline storage
                  deallocation
     References : The front of the SVGBK is a header, the SVHBK,
                  which is common among the CPEBK, SAVBK, and SVGBK.
                  Chains threaded through SVGFPNT/-BPNT may contain
                  a mix of SVGBKs and CPEBKs or SAVBKs.
     Serialized : Dispatch lock for all fields except SVGCPRQ,
                  except for SVGCPRQ, which is serialized by TRQBK
                  and by the MP-defer function.
     Notes      : The layout of this block in the ESA/390 gen
                  parallels that of the CPEBK and SAVBK, and must
                  be kept in synch with them.
     Comments   : SVGFPNT and SVGBPNT are used to maintain various
                  SAVBK/CPEBK/SVGBK queues and stacks.  Routines may
                  use these fields if the SVGBK is not currently on a
                  queue or stack.  An example is the SVGBK used on a
                  dynamic call.
                  If a routine calls another routine to stack an
                  SVGBK onto a queue, the calling routine should be
                  aware that the SVGFPNT and SVGBPNT fields may have
                  been changed as a result of the call.  The calling
                  routines should refrain from using these fields.

#### SVGBK Control Block Content

#### SVGBK DSECT

    Hex   Dec Type/Val   Lng Label (dup)    Comments
    ---- ---- --------- ---- -------------- --------
    0000    0 Structure      SVGBK          Linkage savearea, longreg/fullreg
         The header of the SVGBK 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
         both blocks. This mapping is defined as the SVHBK. Equivalent symbols
         are included here.
    0000    0 Bitstring    1 SVGHEAD (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 SVGFPNT        General forward pointer
    0004    4 Signed       4 SVGBPNT        General backward pointer
                                            (backward pointer not used for
                                            single-thread lists)
    0008    8 Address      4 SVGSFQP        Savearea frame queue pointer
    000C   12 Address      4 SVGCPRQ        Cross processor return queue addr
    0010   16 Bitstring    1 SVGSCHC        Savearea dispatching controls
              1... ....      SVGNOFR        X'80' Do not fret savearea on
                                            dispatch
              .1.. ....      SVGSKCR        X'40' This is a stacked return
              ..1. ....      SVGSKCL        X'20' This is a stacked call
              ...1 ....      SVGRTNF        X'10' "Return" with no fret
              .... 1...      SVGUCFM        X'08' Stack as console function
                                            work
              .... .1..      SVGURGT        X'04' Stack as urgent work
              .... ...1      SVGDMCO        X'01' Dispatch on the master CPU
                                            only
    0011   17 Bitstring    1 SVGCALC        Block usage status
              1... ....      SVGOPEN        X'80' Savearea in use for a call
              .1.. ....      SVGGET         X'40' Savearea obtained via GET
              ..1. ....      SVGPGLK        X'20' Callee module is pageable,
                                            and was locked
              ...1 ....      SVGPGWT        X'10' Call waiting on pageable
                                            module to be paged in
              .... 1...      SVGSPAR        X'08' Savearea is not active
    0012   18 Bitstring    1 *              Reserved
    0013   19 Bitstring    1 SVGFORM        Savearea format/content
              1... ....      SVGLARG        X'80' Savearea is large
                                            allocation size
              .1.. ....      SVGCREG        X'40' Savearea has contiguous
                                            64-bit register fields (SVGBK)
              ..1. ....      SVGRG64        X'20' Savearea accommodates 64
                                            bits per register (SVGBK or SAVBK
                                            with SAVEHIRG extension)
              .11. ....      SVGREGF        SVGCREG+SVGRG64 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 SVGRETN        Return linkage routine address
    0018   24 Bitstring  104 SVGAREA (0)    Register and working storage
         Register contents: Note the terminology below assumes 64-bit registers,
         with a high-order word (bytes 0-3, bits 0-31) and a low-order word
         (bytes 4-7, bits 32-63). Registers 0-15 are contiguous in the block.
         In the ESAME-mode CP gen, names are of the form SVGRn for the 64-bit
         register, SVGRnHI for the high-order 32 bits, and SVGRnLO for the
         low-order 32 bits. In the ESA/390-mode CP gen, the register fields are
         32 bits long, and only the SVGRnLO fields are defined.
         In either gen, register contents are contiguous.
    0018   24 Bitstring   64 SVGREGS (0)    Caller's registers - R0 to R15
    0018   24 Signed       4 SVGR0LO (0)    Caller's saved reg 0 bytes 4-7
    0018   24 Bitstring    1 SVGR0B4        Caller's saved register 0 byte 4
    0019   25 Bitstring    1 SVGR0B5        Caller's saved register 0 byte 5
    001A   26 Bitstring    1 SVGR0B6        Caller's saved register 0 byte 6
    001B   27 Bitstring    1 SVGR0B7        Caller's saved register 0 byte 7
    001C   28 Signed       4 SVGR1LO (0)    Caller's saved reg 1 bytes 4-7
    001C   28 Bitstring    1 SVGR1B4        Caller's saved register 1 byte 4
    001D   29 Bitstring    1 SVGR1B5        Caller's saved register 1 byte 5
    001E   30 Bitstring    1 SVGR1B6        Caller's saved register 1 byte 6
    001F   31 Bitstring    1 SVGR1B7        Caller's saved register 1 byte 7
    0020   32 Signed       4 SVGR2LO (0)    Caller's saved reg 2 bytes 4-7
    0020   32 Bitstring    1 SVGR2B4        Caller's saved register 2 byte 4
    0021   33 Bitstring    1 SVGR2B5        Caller's saved register 2 byte 5
    0022   34 Bitstring    1 SVGR2B6        Caller's saved register 2 byte 6
    0023   35 Bitstring    1 SVGR2B7        Caller's saved register 2 byte 7
    0024   36 Signed       4 SVGR3LO        Caller's saved reg 3 bytes 4-7
    0028   40 Signed       4 SVGR4LO        Caller's saved reg 4 bytes 4-7
    002C   44 Signed       4 SVGR5LO        Caller's saved reg 5 bytes 4-7
    0030   48 Signed       4 SVGR6LO        Caller's saved reg 6 bytes 4-7
    0034   52 Signed       4 SVGR7LO        Caller's saved reg 7 bytes 4-7
    0038   56 Signed       4 SVGR8LO        Caller's saved reg 8 bytes 4-7
    003C   60 Signed       4 SVGR9LO        Caller's saved reg 9 bytes 4-7
    0040   64 Signed       4 SVGR10LO       Caller's saved reg 10 bytes 4-7
    0044   68 Signed       4 SVGR11LO       Caller's saved reg 11 bytes 4-7
    0048   72 Signed       4 SVGR12LO       Caller's saved reg 12 bytes 4-7
    004C   76 Signed       4 SVGR13LO       Caller's saved reg 13 bytes 4-7
    0050   80 Signed       4 SVGR14LO       Caller's saved reg 14 bytes 4-7
    0054   84 Signed       4 SVGR15LO       Caller's saved reg 15 bytes 4-7
    0058   88 Bitstring   40 SVGWRK (0)     Workarea for callee
    0058   88 Signed       4 SVGWRK0L       Workarea for callee
    005C   92 Signed       4 SVGWRK1L       Workarea for callee
    0060   96 Signed       4 SVGWRK2L       Workarea for callee
    0064  100 Signed       4 SVGWRK3L       Workarea for callee
    0068  104 Signed       4 SVGWRK4L       Workarea for callee
    006C  108 Signed       4 SVGWRK5L       Workarea for callee
    0070  112 Signed       4 SVGWRK6L       Workarea for callee
    0074  116 Signed       4 SVGWRK7L       Workarea for callee
    0078  120 Signed       4 SVGWRK8L       Workarea for callee
    007C  124 Signed       4 SVGWRK9L       Workarea for callee
              00000080       SVG_END        * Byte after end of block
              00000010       SVGSIZE        (*-SVGBK+7)/8 Size in doublewords

#### SVGBK Storage Layout

    *** SVGBK - Linkage savearea, longreg/fullreg
    *
    *     +---------------------------+---------------------------+
    *   0 |         SVGFPNT           |         SVGBPNT           |
    *     +---------------------------+---------------------------+
    *   8 |         SVGSFQP           |         SVGCPRQ           |
    *     +------+------+------+------+---------------------------+
    *  10 |:SCHC |:CALC |//////|:FORM |         SVGRETN           |
    *     +------+------+------+------+------+------+------+------+
    *  18 |:R0B4 |:R0B5 |:R0B6 |:R0B7 |:R1B4 |:R1B5 |:R1B6 |:R1B7 |
    *     +------+------+------+------+------+------+------+------+
    *  20 |:R2B4 |:R2B5 |:R2B6 |:R2B7 |         SVGR3LO           |
    *     +------+------+------+------+---------------------------+
    *  28 |         SVGR4LO           |         SVGR5LO           |
    *     +---------------------------+---------------------------+
    *  30 |         SVGR6LO           |         SVGR7LO           |
    *     +---------------------------+---------------------------+
    *  38 |         SVGR8LO           |         SVGR9LO           |
    *     +---------------------------+---------------------------+
    *  40 |         SVGR10LO          |         SVGR11LO          |
    *     +---------------------------+---------------------------+
    *  48 |         SVGR12LO          |         SVGR13LO          |
    *     +---------------------------+---------------------------+
    *  50 |         SVGR14LO          |         SVGR15LO          |
    *     +---------------------------+---------------------------+
    *  58 |         SVGWRK0L          |         SVGWRK1L          |
    *     +---------------------------+---------------------------+
    *  60 |         SVGWRK2L          |         SVGWRK3L          |
    *     +---------------------------+---------------------------+
    *  68 |         SVGWRK4L          |         SVGWRK5L          |
    *     +---------------------------+---------------------------+
    *  70 |         SVGWRK6L          |         SVGWRK7L          |
    *     +---------------------------+---------------------------+
    *  78 |         SVGWRK8L          |         SVGWRK9L          |
    *     +---------------------------+---------------------------+
    *  80
    *
    *** SVGBK - Linkage savearea, longreg/fullreg

#### SVGBK Cross Reference

    Symbol         Dspl Value
    -------------- ---- -----
    SVG_END        007C 00000080
    SVGAREA        0018
    SVGBPNT        0004
    SVGCALC        0011
    SVGCPRQ        000C
    SVGCREG        0013 40
    SVGDMCO        0010 01
    SVGFORM        0013
    SVGFPNT        0000
    SVGGET         0011 40
    SVGHEAD        0000
    SVGLARG        0013 80
    SVGNOFR        0010 80
    SVGOPEN        0011 80
    SVGPGLK        0011 20
    SVGPGWT        0011 10
    SVGREGF        0013 60
    SVGREGS        0018
    SVGRETN        0014
    SVGRG64        0013 20
    SVGRTNF        0010 10
    SVGR0B4        0018
    SVGR0B5        0019
    SVGR0B6        001A
    SVGR0B7        001B
    SVGR0LO        0018
    SVGR1B4        001C
    SVGR1B5        001D
    SVGR1B6        001E
    SVGR1B7        001F
    SVGR1LO        001C
    SVGR10LO       0040
    SVGR11LO       0044
    SVGR12LO       0048
    SVGR13LO       004C
    SVGR14LO       0050
    SVGR15LO       0054
    SVGR2B4        0020
    SVGR2B5        0021
    SVGR2B6        0022
    SVGR2B7        0023
    SVGR2LO        0020
    SVGR3LO        0024
    SVGR4LO        0028
    SVGR5LO        002C
    SVGR6LO        0030
    SVGR7LO        0034
    SVGR8LO        0038
    SVGR9LO        003C
    SVGSCHC        0010
    SVGSFQP        0008
    SVGSIZE        007C 00000010
    SVGSKCL        0010 20
    SVGSKCR        0010 40
    SVGSPAR        0011 08
    SVGUCFM        0010 08
    SVGURGT        0010 04
    SVGWRK         0058
    SVGWRK0L       0058
    SVGWRK1L       005C
    SVGWRK2L       0060
    SVGWRK3L       0064
    SVGWRK4L       0068
    SVGWRK5L       006C
    SVGWRK6L       0070
    SVGWRK7L       0074
    SVGWRK8L       0078
    SVGWRK9L       007C

This information is based on z/VM V4R4.0. Last updated on 29 Jul 2003 at 16:26:15 EDT.
Copyright IBM Corporation, 1990, 2003