Also, examine the CP internal trace table to determine the events
that preceded the abnormal termination. Start with the last event
recorded in the trace table and read backward through the trace table
entries. The last event recorded is the last event that was completed.
The TRACSTRT field (location X'OC') contains the address of the start
of the trace table. The TRACEND field (location X'10') contains the
address of the byte following the end of the trace table. The address
of the next available trace table entry is found in the TRACCURR field
(location X'14'). To find the last recorded trace table entry, subtract X'10' from the value at location X'14',. The result is the address of
the last recorded entry. Figure 8, earlier in this section, describes
the format of each type of trace table entry. Igte: If the system was in attached processor mode, the trace table
pointers are in absolute page zero.
REGISTER USAGE In order to trace control blocks and modules, it is necessary to know
the CP register usage conventions.
The 16 general registers have many
operation. The following table shows
registers.
uses that vary depending upon the
the use of some of the general GR 1
GR 2
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, centrol unit, and device
control blocks.
The address of the active IOBLOK. The external branch linkage.
The following general registers usually contain the same information. GR 11
GR 12
GR 13
Contents The-address of the active iMBLOK. The base register for the module
The address of the current save
called via an SiC. executing.
area if the module was Use these registers along with the CP control blocks and the data in
the prefix storage area to determine the error that caused the CP abend. SAVE AREA CONVENTIONS There are three save areas that may be helpful in debugging CP. If a
module was called by an SVC, examine the SAVEAREA storage area. SAVEAREA is not in the PSA; the address of the SAVEAREA is found in
general register 13. If a module was called by a branch and link, the
general registers are saved in the PSA in an area called BALRS1VE (X'240'). The DMKFRE save area and work area is also in the PSI: these
areas are used only by the DMKFREE and DMKFRET routines. The DMKFRE save area (FREESAVE) is at location X'280' and its work area (FREEWCRK) follows at location X'2CO'.
Save areas used by attached processor support are DUKPSAVE, SIGSAVE, LOKSAVE, KFASAVE, SWTHSAVE, LOCKSAVE, and SVCREGS. These save areas are
all in the PSA. All except LOCKSAVE and 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 SAVERETN (displacement X'OO'). The caller's base register is saved
in SAVER12 (displacement X'04'), and the address of the save area
for the caller is saved in SAVER13 (displacement X'OS'). Using SAVER13, you can trace backwards again.
2. BALRSAVE All the general registers saved in BALRSAVE 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 FREESAVE before DKKFRE executes. Use this address to trace module control backwards.
Field FREER15 FREER14
FREER13
FREER12
FREER1
FREERO
4. DUMPSAVE Contents Theentry point (DMKFREE or DKKFRET) '. The saved return address. The caller's save area (unless the caller was called via
BALR).
The caller's base register. Points to the block returned (for calls to DKKFRET). Contains the number of doublewords requested or returned.
All the general registers at the time of the error are saved in DUMPSAVE (displacement X'500') 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 DUMPSAVE in the order GRO through GR15. GR12 usually contains the base register for the
module executing at the time of the error.
5. SIGSAVE SIGSAVE (displacement X'540') is used as a save/work area by DMKEXT, an attached processor-only module that handles all
signaling requests. When a signal request is issued, DMKEXTSP is called. On entry, DMKEXTSP stores GR12 through and GRO through GR6. GR7 through GR11 are not saved. The remainder of SIGSAVE is used as a work area. GR14 contains the caller's return
address. Part 1. Debugging with VM/370 49
Previous Page Next Page