/* SPDX-License-Identifier: GPL-2.0 */ /* * Arm Statistical Profiling Extensions (SPE) support * Copyright (c) 2017-2018, Arm Ltd. */ #ifndef INCLUDE__ARM_SPE_PKT_DECODER_H__ #define INCLUDE__ARM_SPE_PKT_DECODER_H__ #include <stddef.h> #include <stdint.h> #define ARM_SPE_PKT_DESC_MAX 256 #define ARM_SPE_NEED_MORE_BYTES -1 #define ARM_SPE_BAD_PACKET -2 enum arm_spe_pkt_type { ARM_SPE_BAD, ARM_SPE_PAD, ARM_SPE_END, ARM_SPE_TIMESTAMP, ARM_SPE_ADDRESS, ARM_SPE_COUNTER, ARM_SPE_CONTEXT, ARM_SPE_OP_TYPE, ARM_SPE_EVENTS, ARM_SPE_DATA_SOURCE, }; struct arm_spe_pkt { enum arm_spe_pkt_type type; unsigned char index; uint64_t payload; }; const char *arm_spe_pkt_name(enum arm_spe_pkt_type); int arm_spe_get_packet(const unsigned char *buf, size_t len, struct arm_spe_pkt *packet); int arm_spe_pkt_desc(const struct arm_spe_pkt *packet, char *buf, size_t len); #endif