
October 13 1995, Draft 1
391
Chapter 7 Software Debugging
Data accesses which generate a cache hit are given the same treatment applied to
memory–resident data accesses. When a data transfer occurs, it will be reported in the
next available cycle (could be the current) which is not being used to report an
instruction’s execution or other valid data access. When the data cache is turned on, it
will not always be possible to report the value of the data transferred. The slave pro-
cessor does not provide the cached data value, only the address.
For vector fetches, the vector fetch and the address of the first instruction as well
as the VECT status are reported on the same processed trace line.
The second stage of the algorithm is a little more complicated; it produces the
complete address–flow for executed code. It currently only operates with 32–bit
memory accesses. Programs should not be traced when executing from 8–bit
memory devices. A recursive algorithm determines consecutive instruction execu-
tion sequences, as shown on Figure 7-15. The algorithm starts with a branch instruc-
tion and stops when it reaches a delay–slot instruction. Branch instructions initiate
new instruction sequences for the algorithm to recursively process.
Once the address flow is determined, a second recursive routine determines the
instructions which correspond to the address flow. Often these instructions are
fetched from memory and can be found in the DATA field of a previous trace cycle.
However, if the instruction is supplied by the instruction cache then XXXXXXXX is
entered into the DATA column. If an address value lies in the loaded TEXT region
and the DATA column is marked XXXXXXXX, then the op–code is obtained from
the loaded COFF file and placed in the DATA field.
MonTIP Commands
Strictly speaking, commands should be processed by the Debugger Front End
(DFE), such as MonDFE. However, MonTIP has the capability of also processing
commands. The range of commands dealt with by MonTIP is greatly limited. Each
DFE has a mechanism by which its command processing can be placed in
transparent–mode. This causes commands to be passed to the TIP. With MonDFE,
commands begining with the key word “tip” are passed to MonTIP. A number of
commands have been added to MonTIP to support analyzer operation. By typing the
MonDFE command “tip lahelp” a list of the commands will be displayed. The
MonTIP man–page describes the commands in more detail.
The MonTIP command “l(fā)atadd label, width” is used to add a column to the trace
listing produced by MonTIP. An “l(fā)atadd” should be used for each column in the
processed trace listing. Acceptable values for “name” are defined by the labels which
appear in the raw trace listing. The only exception to this rule is for labels
SYMADDR and ASMDATA. These are pseudo labels derived from the raw labels
ADDR and DATA respectively. The use of the SYMADDR label causes the
hexadecimal address value to be replaced by an address symbol. For this to work the
“l(fā)acoff file” command must be used to specify the file to be used during symbol table
look–up. Addresses which are not found in the COFF file are presented in