|
Programming Interface Information:
This information is NOT intended to be
used as Programming Interfaces of z/VM. |
SVGBK
Control Block Contents
SVGBK DSECT
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:
0SVGFORM * 00 for SAVBK 01 for SAVBK with
SAVEHIRG 11 for SVGBK*null
.... .... *
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
SAVESIZE hardcoded definition in
HCPEQUAT
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 -------------- ---- ----- * 0013 0SVGFORM * 0013 00 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
Last updated on 5 Jun 2001 at 16:52:57 EDT.
Copyright IBM Corporation, 1990, 2001