162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Arm Statistical Profiling Extensions (SPE) support
462306a36Sopenharmony_ci * Copyright (c) 2017-2018, Arm Ltd.
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#ifndef INCLUDE__PERF_ARM_SPE_H__
862306a36Sopenharmony_ci#define INCLUDE__PERF_ARM_SPE_H__
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#define ARM_SPE_PMU_NAME "arm_spe_"
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cienum {
1362306a36Sopenharmony_ci	ARM_SPE_PMU_TYPE,
1462306a36Sopenharmony_ci	ARM_SPE_PER_CPU_MMAPS,
1562306a36Sopenharmony_ci	ARM_SPE_AUXTRACE_PRIV_MAX,
1662306a36Sopenharmony_ci};
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci#define ARM_SPE_AUXTRACE_PRIV_SIZE (ARM_SPE_AUXTRACE_PRIV_MAX * sizeof(u64))
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciunion perf_event;
2162306a36Sopenharmony_cistruct perf_session;
2262306a36Sopenharmony_cistruct perf_pmu;
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_cistruct auxtrace_record *arm_spe_recording_init(int *err,
2562306a36Sopenharmony_ci					       struct perf_pmu *arm_spe_pmu);
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ciint arm_spe_process_auxtrace_info(union perf_event *event,
2862306a36Sopenharmony_ci				  struct perf_session *session);
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_cistruct perf_event_attr *arm_spe_pmu_default_config(struct perf_pmu *arm_spe_pmu);
3162306a36Sopenharmony_ci#endif
32