150
January, 2004
Developer’s Manual
Intel XScale® Core
Developer’s Manual
Software Debug
9.13.1.2
Non-exception Message Byte
Non-exception message bytes are used for direct branches, indirect branches, and rollovers.
In a non-exception message byte, the 4-bit message type field (MMMM) specifies the type of
message (refer to
Table 9-18
).
The incremental word count (CCCC) is the instruction count since the last control flow change
(excluding the current branch). The instruction count includes instructions that were executed and
conditional instructions that were not executed due to the condition of the instruction not matching
the CC flags. In the case of back-to-back branches the word count would be 0 indicating that no
instructions executed after the last branch and before the current one.
A rollover message is used to keep track of long traces of code that do not have control flow
changes. The rollover message means that 16 instructions have executed since the last message
byte was written to the trace buffer.
If the incremental counter reaches its maximum value of 15, a rollover message is written to the
trace buffer following the next instruction (which will be the 16th instruction to execute). This is
shown in
Example 9-1
. The count in the rollover message is 0b1111, indicating that 15 instructions
have executed after the last branch and before the current non-branch instruction that caused the
rollover message.
If the 16th instruction is a branch (direct or indirect), the appropriate branch message is placed in
the trace buffer instead of the roll-over message. The incremental counter is still set to 0b1111,
meaning 15 instructions executed between the last branch and the current branch.
Example 9-1. Rollover Messages Examples
count = 5
BL label1
count = 0
MOV
count = 1
MOV
count = 2
MOV
...
count = 14
MOV
count = 15
MOV
count = 0
rollover message placed in trace buffer after 16th instruction executes
count = 0b1111
branch message placed in trace buffer after branch executes
count = 0b0101