mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-29 14:05:19 +08:00
2025cf9e19
Based on 1 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms and conditions of the gnu general public license version 2 as published by the free software foundation this program is distributed in the hope it will be useful but without any warranty without even the implied warranty of merchantability or fitness for a particular purpose see the gnu general public license for more details extracted by the scancode license scanner the SPDX license identifier GPL-2.0-only has been chosen to replace the boilerplate/reference in 263 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Allison Randal <allison@lohutok.net> Reviewed-by: Alexios Zavras <alexios.zavras@intel.com> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190529141901.208660670@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
55 lines
1.2 KiB
C
55 lines
1.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* intel_pt_insn_decoder.h: Intel Processor Trace support
|
|
* Copyright (c) 2013-2014, Intel Corporation.
|
|
*/
|
|
|
|
#ifndef INCLUDE__INTEL_PT_INSN_DECODER_H__
|
|
#define INCLUDE__INTEL_PT_INSN_DECODER_H__
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
#define INTEL_PT_INSN_DESC_MAX 32
|
|
#define INTEL_PT_INSN_BUF_SZ 16
|
|
|
|
enum intel_pt_insn_op {
|
|
INTEL_PT_OP_OTHER,
|
|
INTEL_PT_OP_CALL,
|
|
INTEL_PT_OP_RET,
|
|
INTEL_PT_OP_JCC,
|
|
INTEL_PT_OP_JMP,
|
|
INTEL_PT_OP_LOOP,
|
|
INTEL_PT_OP_IRET,
|
|
INTEL_PT_OP_INT,
|
|
INTEL_PT_OP_SYSCALL,
|
|
INTEL_PT_OP_SYSRET,
|
|
};
|
|
|
|
enum intel_pt_insn_branch {
|
|
INTEL_PT_BR_NO_BRANCH,
|
|
INTEL_PT_BR_INDIRECT,
|
|
INTEL_PT_BR_CONDITIONAL,
|
|
INTEL_PT_BR_UNCONDITIONAL,
|
|
};
|
|
|
|
struct intel_pt_insn {
|
|
enum intel_pt_insn_op op;
|
|
enum intel_pt_insn_branch branch;
|
|
int length;
|
|
int32_t rel;
|
|
unsigned char buf[INTEL_PT_INSN_BUF_SZ];
|
|
};
|
|
|
|
int intel_pt_get_insn(const unsigned char *buf, size_t len, int x86_64,
|
|
struct intel_pt_insn *intel_pt_insn);
|
|
|
|
const char *intel_pt_insn_name(enum intel_pt_insn_op op);
|
|
|
|
int intel_pt_insn_desc(const struct intel_pt_insn *intel_pt_insn, char *buf,
|
|
size_t buf_len);
|
|
|
|
int intel_pt_insn_type(enum intel_pt_insn_op op);
|
|
|
|
#endif
|