mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 10:04:04 +02:00
perf arm-spe: Set sample flags with supplement info
Based on the supplement information in the record, this commit sets the sample flags for conditional branch, function call, return. It also sets events in flags, such as mispredict, not taken, and in transaction. Reviewed-by: Ian Rogers <irogers@google.com> Reviewed-by: James Clark <james.clark@linaro.org> Signed-off-by: Leo Yan <leo.yan@arm.com> Link: https://lore.kernel.org/r/20250304111240.3378214-11-leo.yan@arm.com Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
parent
5c1b158396
commit
4a53a67e0e
|
|
@ -484,6 +484,26 @@ static void arm_spe__sample_flags(struct arm_spe_queue *speq)
|
|||
|
||||
if (record->type & ARM_SPE_BRANCH_MISS)
|
||||
speq->flags |= PERF_IP_FLAG_BRANCH_MISS;
|
||||
|
||||
if (record->type & ARM_SPE_BRANCH_NOT_TAKEN)
|
||||
speq->flags |= PERF_IP_FLAG_NOT_TAKEN;
|
||||
|
||||
if (record->type & ARM_SPE_IN_TXN)
|
||||
speq->flags |= PERF_IP_FLAG_IN_TX;
|
||||
|
||||
if (record->op & ARM_SPE_OP_BR_COND)
|
||||
speq->flags |= PERF_IP_FLAG_CONDITIONAL;
|
||||
|
||||
if (record->op & ARM_SPE_OP_BR_CR_BL)
|
||||
speq->flags |= PERF_IP_FLAG_CALL;
|
||||
else if (record->op & ARM_SPE_OP_BR_CR_RET)
|
||||
speq->flags |= PERF_IP_FLAG_RETURN;
|
||||
/*
|
||||
* Indirect branch instruction without link (e.g. BR),
|
||||
* take it as a function return.
|
||||
*/
|
||||
else if (record->op & ARM_SPE_OP_BR_INDIRECT)
|
||||
speq->flags |= PERF_IP_FLAG_RETURN;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user