Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v4.8-rc6 65 lines 1.7 kB view raw
1/* 2 * intel_pt_insn_decoder.h: Intel Processor Trace support 3 * Copyright (c) 2013-2014, Intel Corporation. 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms and conditions of the GNU General Public License, 7 * version 2, as published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12 * more details. 13 * 14 */ 15 16#ifndef INCLUDE__INTEL_PT_INSN_DECODER_H__ 17#define INCLUDE__INTEL_PT_INSN_DECODER_H__ 18 19#include <stddef.h> 20#include <stdint.h> 21 22#define INTEL_PT_INSN_DESC_MAX 32 23#define INTEL_PT_INSN_DBG_BUF_SZ 16 24 25enum intel_pt_insn_op { 26 INTEL_PT_OP_OTHER, 27 INTEL_PT_OP_CALL, 28 INTEL_PT_OP_RET, 29 INTEL_PT_OP_JCC, 30 INTEL_PT_OP_JMP, 31 INTEL_PT_OP_LOOP, 32 INTEL_PT_OP_IRET, 33 INTEL_PT_OP_INT, 34 INTEL_PT_OP_SYSCALL, 35 INTEL_PT_OP_SYSRET, 36}; 37 38enum intel_pt_insn_branch { 39 INTEL_PT_BR_NO_BRANCH, 40 INTEL_PT_BR_INDIRECT, 41 INTEL_PT_BR_CONDITIONAL, 42 INTEL_PT_BR_UNCONDITIONAL, 43}; 44 45struct intel_pt_insn { 46 enum intel_pt_insn_op op; 47 enum intel_pt_insn_branch branch; 48 int length; 49 int32_t rel; 50 unsigned char buf[INTEL_PT_INSN_DBG_BUF_SZ]; 51}; 52 53int intel_pt_get_insn(const unsigned char *buf, size_t len, int x86_64, 54 struct intel_pt_insn *intel_pt_insn); 55 56const char *intel_pt_insn_name(enum intel_pt_insn_op op); 57 58int intel_pt_insn_desc(const struct intel_pt_insn *intel_pt_insn, char *buf, 59 size_t buf_len); 60 61size_t intel_pt_insn_max_size(void); 62 63int intel_pt_insn_type(enum intel_pt_insn_op op); 64 65#endif