3.2. Program flow trace

If enabled, every executed branch instruction triggers this trace source. This is a more efficient way to reconstruct the program flow than by tracing every instruction.

Branch trace records have the following command syntax:

<time> <scale> [FD|FI|FR] (<inst_id>) <addr> <targ_addr> [A|T|X]

The fields have the following meaning:

<time>

Timestamp (decimal value).

<scale>

Unit for the previous field <time>. This is used for consistency with device-specific tarmac trace formats.

[FD|FI|FR]

This is a program flow change by:

  • a direct branch FD

  • an indirect branch FI

  • a return from exception FR.

<inst_id>

The tick count of this core. This is equivalent to the number of instructions executed, except for certain instructions like WFI/WFE (decimal value).

<addr>

Address from where this instruction was fetched, in hexadecimal format (virtual address).

<targ_addr>

The (virtual) address at which the execution continues.

[A|T|X]

The instruction set after the branch:

  • A represents an ARM instruction

  • T represents a Thumb instruction

  • X represents a Thumb-2EE instruction.

Note

This event is not shown in the trace example file

Copyright © 2010-2012 ARM. All rights reserved.ARM DUI 0532D
Non-ConfidentialID051712