5.6.1. Address Packet Offset

The Address Packet Offset (APO) is used by the decompressor to synchronize between the pipeline status signals (PIPESTAT) and the trace packet signals (TRACEPKT).

Every time the processor performs a branch operation, at least two instructions that have been fetched into the pipeline are discarded, and the PIPESTAT pins are re-used to output an APO over those two cycles.

The APO indicates the number of addresses that the decompressor must skip, including the cycle on which the branch PIPESTAT signal is generated. APOs can take a value of 0-3 on each cycle, so offsets ranging from 0-14 can be output. (The value of 15 is reserved to indicate that the offset is too large to be encoded.) Only two of the three PIPESTAT bits are used to avoid conflicting with BE (Branch Executed) and TR (Trigger), that can occur at any time.

The least significant two bits of the APO are output during the first cycle after a branch. The most significant two bits are output during the second cycle. An offset of 0 specifies that the next TRACESYNC in the trace determines the first packet of the address. An offset of 1, for example, indicates that the second TRACESYNC in the trace identifies the start of the associated branch packets.

Note

Wait states might result in more than two WT cycles following a branch. No attempt is made to use these additional cycles to output a larger offset.

If a BE is observed in an APO cycle, this indicates that the previous BE has been abandoned. The address for this abandoned branch is still output, and can be ignored.

A TD (Trace Disabled) PIPESTAT cannot be observed in an APO cycle.

If a trigger occurs, the TR is output on PIPESTAT[2:0] and the APO is output on the TRACEPKT pins (see Trigger PIPESTAT signals).

Copyright © 1999-2002, 2004-2009, 2011 ARM Limited. All rights reserved.ARM IHI 0014Q
Non-ConfidentialID101211