MOTOROLA
Chapter 23. Development Support
23-13
Watchpoints and Breakpoints Support
transfer when executing a load/store multiple/string or a load/store watchpoint is detected
on more than one byte when working in byte mode. In all these cases only one watchpoint
of the same type is reported for a single instruction. Similarly, only one watchpoint of the
same type can be counted in the counters for a single instruction.
Because watchpoint events are reported upon the retirement of the instruction that caused
the event, and more than one instruction can retire from the machine in one clock,
consequent events may be reported in the same clock. Moreover the same event, if detected
on more than one instruction (e.g., tight loops, range detection), in some cases will be
reported only once. Note that the internal counters count correctly in these cases.
Do not put a breakpoint on an mtspr instruction that accesses the ICTRL register when
ICTRL[IFM] = 1 because this causes unpredictable behavior.
23.2.1.2 Byte and Half-Word Working Modes
The CPU watchpoints and breakpoints support enables detection of matches on bytes and
half-words even when accessed using a load/store instruction of larger data widths, for
example when loading a table of bytes using a series of load word instructions. In order to
use this feature, program the byte mask for each of the L-data comparators and to write the
needed match value to the correct half-word of the data comparator when working in
half-word mode and to the correct bytes of the data comparator when working in byte
mode.
Since bytes and half-words can be accessed using a larger data width instruction, it is
impossible to predict the exact value of the L-address lines when the requested
byte/half-word is accessed, (e.g., if the matched byte is byte two of the word and it is
accessed using a load word instruction), the L-address value will be of the word (byte zero).
Therefore, the CPU masks the two least-significant bits of the L-address comparators
whenever a word access is performed and the least-significant bit whenever a half-word
access is performed.
Address range is supported only when aligned according to the access size. (See
23.2.1.3 Examples
A fully supported scenario:
— Looking for:
Data size: Byte
Address: 0x00000003
Data value: greater than 0x07 and less than 0x0c
— Programming options:
One L-address comparator = 0x00000003 and program for equal
One L-data comparator = 0x00000007 and program for greater than