|
NAME : HCPSVHBK
DESCRIPTION: Common linkage savearea header
DSECT : SVHBK
FUNCTION : The SVHBK maps the header common to all
savearea formats -- the "short-register" SAVBK
(with or without its extension, SAVEHIRG) for
callees which treat registers as 32 bits wide,
and the "long-register" SVGBK for callees which
treat registers as 64 bits wide. Byte SVHFORM
contains a format indicator to distinguish the
underlying format.
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
/SVGR13LO back to the caller's savearea. (This
assumes that the caller has a savearea of
his own, and that he had its address in
R13 at the time of the call.)
SVHFPNT forward chaining pointer. The chain of
available saveareas uses this pointer.
When the block is in use as a savearea,
SVHFPNT is normally not used for
anything. (SAVER13 points back to the
preceding savearea if the caller
had one.)
SVHBPNT This pointer is available for backward
chaining, but is not normally used.
REFERENCES : Chains threaded through SVHFPNT/-BPNT may contain
a mix of SVGBKs and CPEBKs or SAVBKs (all of whose
headers are mapped by the SVHBK).
CREATED BY : None. The SVHBK does not exist on its own,
but only at the front of a SAVBK, SVGBK, or
CPEBK.
DELETED BY : None.
SERIALIZED : Serialization is provided by the dispatch lock
except for SVHCPRQ, which is serialized by TRQBK
and by the MP-defer function.
COMPATIBILITY AND MIGRATION CONCERNS : none
RELOCATION CONSIDERATIONS : None
COMMENTS : For the convenience of callees, which "know"
which format of savearea they have, the fields
in the SVHBK are also defined using names for
each savearea block (SAVExxxx or SVGxxxx).
SVHFORM identifies the format of savearea in which
this header is contained.
SVHFPNT and SVHBPNT are used to maintain various
SAVBK/SVHBK queues and stacks. Routines may use
these fields if the SVHBK is not currently on a
queue or stack. An example is the SVHBK used on a
dynamic call.
If a routine calls another routine to stack an
SVHBK onto a queue, the calling routine should be
aware that the SVHFPNT and SVHBPNT fields may have
been changed as a result of the call. The calling
routines should refrain from using these fields.
| |