forked from Minki/linux
44 lines
903 B
C
44 lines
903 B
C
|
/* 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
|