This patch seris adds support for sample flags so can facilitate perf to print sample flags for branch instruction.
The branch instructions also include exception taken and return related instructions, so the first patch is used to generate branch sample for exception packets; and the second patch is to track the exception number.
The patch 0003 is to set branch instruction flags in packet, this patch has the core code in this series to set flags according to the decoding element type, and also based on the elements including instruction type, subtype and condition flag to help making decision to set flags value.
The patch 0004 is to support sample flags by copying the flags value from packet structure to sample structure, and it includes two fixing up for TRACE_ON and exception packets.
The patch series is based on OpenCSD v0.10.0 and Rob's patch 'perf: Support for Arm A32/T32 instruction sets in CoreSight trace' also is prerequisite to support A32/T32 ISAs.
The patches can be applied on the acme core branch [1] and tested on Juno board with below commands for A64 and A32/T32 building:
# perf script -F,-time,+flags,+ip,+sym,+addr -k vmlinux
Leo Yan (4): perf cs-etm: Generate branch sample for exception packet perf cs-etm: Track exception number perf cs-etm: Set branch instruction flags in packet perf cs-etm: Add support sample flags
tools/perf/util/cs-etm-decoder/cs-etm-decoder.c | 237 +++++++++++++++++++++++- tools/perf/util/cs-etm-decoder/cs-etm-decoder.h | 11 +- tools/perf/util/cs-etm.c | 44 ++++- 3 files changed, 277 insertions(+), 15 deletions(-)