Programming Interface Information:
This information is NOT intended to be
used as Programming Interfaces of z/VM. |
SVGBK
PrologControl Block Contents
SVGBK DSECT
Storage Layout
Cross Reference
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 4 Apr 2001 at 09:33:26 EDT.
Copyright IBM Corporation, 1990, 2001