59 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * intel_pt_insn_decoder.h: Intel Processor Trace support4 * Copyright (c) 2013-2014, Intel Corporation.5 */6 7#ifndef INCLUDE__INTEL_PT_INSN_DECODER_H__8#define INCLUDE__INTEL_PT_INSN_DECODER_H__9 10#include <stddef.h>11#include <stdint.h>12 13#define INTEL_PT_INSN_DESC_MAX 3214#define INTEL_PT_INSN_BUF_SZ 1615 16enum intel_pt_insn_op {17 INTEL_PT_OP_OTHER,18 INTEL_PT_OP_CALL,19 INTEL_PT_OP_RET,20 INTEL_PT_OP_JCC,21 INTEL_PT_OP_JMP,22 INTEL_PT_OP_LOOP,23 INTEL_PT_OP_IRET,24 INTEL_PT_OP_INT,25 INTEL_PT_OP_SYSCALL,26 INTEL_PT_OP_SYSRET,27 INTEL_PT_OP_VMENTRY,28 INTEL_PT_OP_ERETS,29 INTEL_PT_OP_ERETU,30};31 32enum intel_pt_insn_branch {33 INTEL_PT_BR_NO_BRANCH,34 INTEL_PT_BR_INDIRECT,35 INTEL_PT_BR_CONDITIONAL,36 INTEL_PT_BR_UNCONDITIONAL,37};38 39struct intel_pt_insn {40 enum intel_pt_insn_op op;41 enum intel_pt_insn_branch branch;42 bool emulated_ptwrite;43 int length;44 int32_t rel;45 unsigned char buf[INTEL_PT_INSN_BUF_SZ];46};47 48int intel_pt_get_insn(const unsigned char *buf, size_t len, int x86_64,49 struct intel_pt_insn *intel_pt_insn);50 51const char *intel_pt_insn_name(enum intel_pt_insn_op op);52 53int intel_pt_insn_desc(const struct intel_pt_insn *intel_pt_insn, char *buf,54 size_t buf_len);55 56int intel_pt_insn_type(enum intel_pt_insn_op op);57 58#endif59