Save Area Conventions
Register
GR 1
GR2
GR 6,7,8
GR 10 GR 14, 15
Contents
The virtual address to be translated.
The real address or parameters.
The virtual or real channel, control unit, and device
control blocks.
The address of the active IOBLOK. The external branch linkage.
The following general registers usually contain the same information.
Register
GR 11
GR 12
GR 13
Contents
The address of the active VMBLOK. The base register for the module executing.
The address of the current save area if the module
was called via an SVC. Use these registers along with the CP control blocks and the data in the prefix stor­
age area to determine the error that caused the CP abend.
There are three save areas that may be helpful in debugging CPo If a module was
called by an SVC, examine the SA VEAREA storage area. SA VEAREA is not in
the PSA; the address of the SA VEAREA is found in general register 13. If a mod­
ule was called by a branch and link, the general registers are saved in the PSA in an
area called BALRSAVE (X'240'). The DMKFRE save area and work area is also
in the PSA: these areas are used only by the DMKFREE and DMKFRET routines.
The DMKFRE save area (FREESA VE) is at location X'280' and its work area (FREEWORK) follows at location X'2CO'. Save areas used by attached processor and multiprocessor support are DUMPSAVE, SIGSAVE, LOKSA VE, MFASA VE, SWTHSAVE, LOCKSA VE,
and SVCREGS. These save areas are all in the PSA. All except LOCKSA VE and SVCREGS are 16 words in size. Use the save areas to trace backwards and find the previous module executed.
1. SAVEAREA An active save area contains the caller's return address in SA VERETN (dis­
placement X'OO'). The caller's base register is saved in SAVER12 (displace­
ment X'04'), and the address of the save area for the caller is saved trace
backwards again.
2. BALRSAVE All the general registers are saved in BALRSA VE after branching and linking
(via BALR) to another routine. Look at BALR14 for the return address
saved, BALR13 for the caller's save area, and BALR12 for the caller's base
register, and you can trace module control backwards.
3. FREESAVE All the general registers are saved in FREESA VE before DMKFRE executes. Use this address to trace module control backwards.
Introduction to Debugging 509
Field Contents
FREERIS
FREERI4
FREERI3
The entry point (DMKFREE or DMKFRET).
The saved return address.
The caller's save area (unless the caller was called via
BALR).
FREERI2
FREER 1
The caller's base register. Points to the block returned (for calls to
DMKFRET). FREERO Contains the number of doublewords requested or
returned.
4. DUMPSAVE All the general registers at the time of the error are saved in DUMPSA VE
(displacement X'SOO') before DMKDMP is called. They are saved by DMKPSA after a restart, by DMKSVC after an SVC 0, and by DMKPRG.
The registers are stored in DUMPSA VE in the order GRO through GRIS.
GRI2 usually contains the base register for the module executing at the time of
the error.
S. SIGSAVE SIGSA VE (displacement X'S40') is used as a save/work area by DMKEXT, a
multiprocessor/attached processor-only module that handles all signaling
requests. When a signal request is issued, DMKEXTSP is called. On entry, DMKEXTSP stores GRI2 through GRIS, and GRO through GR6. GR7
through GRII are not saved. The remainder of SIGSA VE is used as a work
area. GRI4 contains the caller's return address.
6. LOKSAVE All the general registers are stored in LOKSAVE (displacement X'S80') before DMKLOK executes. DMKLOK is a multiprocessor/attached processor-only
module that manipulates certain locks. The registers are stored in the order GRO through GRIS. GRI4 contains the caller's return address.
7. MFASAVE All the general registers are stored in MFASAVE (displacement X'SCO') before DMKMCTMA executes. DMKMCTMA is the entry into DMKMCT, a
multiprocessor / attached processor-only module, that handles malfunction alert
interrupts. The registers are stored space in the order GRO through GRIS.
GRI4 and GRIS contain the caller's return address.
8. SWTHSAVE All the general registers are stored in SWTHSAVE (displacement X'600') by DMKSTK and DMKVMASW. DMKVMASW is an entry that is used only in
multiprocessor / attached processor systems to switch a user's page table point­
ers. The registers are stored in the order GRO through GRIS. GRI4 contains
the caller's return address. All entries to DMKSTK store registers GRO through GRIS in SWTHSAVE. 9. LOCKSAVE 510 VM/SP System Programmer's Guide
Previous Page Next Page