linux/tools/perf/arch/x86/include/perf_regs.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef ARCH_PERF_REGS_H
   3#define ARCH_PERF_REGS_H
   4
   5#include <stdlib.h>
   6#include <linux/types.h>
   7#include <asm/perf_regs.h>
   8
   9void perf_regs_load(u64 *regs);
  10
  11#define PERF_REGS_MAX PERF_REG_X86_XMM_MAX
  12#ifndef HAVE_ARCH_X86_64_SUPPORT
  13#define PERF_REGS_MASK ((1ULL << PERF_REG_X86_32_MAX) - 1)
  14#define PERF_SAMPLE_REGS_ABI PERF_SAMPLE_REGS_ABI_32
  15#else
  16#define REG_NOSUPPORT ((1ULL << PERF_REG_X86_DS) | \
  17                       (1ULL << PERF_REG_X86_ES) | \
  18                       (1ULL << PERF_REG_X86_FS) | \
  19                       (1ULL << PERF_REG_X86_GS))
  20#define PERF_REGS_MASK (((1ULL << PERF_REG_X86_64_MAX) - 1) & ~REG_NOSUPPORT)
  21#define PERF_SAMPLE_REGS_ABI PERF_SAMPLE_REGS_ABI_64
  22#endif
  23#define PERF_REG_IP PERF_REG_X86_IP
  24#define PERF_REG_SP PERF_REG_X86_SP
  25
  26static inline const char *__perf_reg_name(int id)
  27{
  28        switch (id) {
  29        case PERF_REG_X86_AX:
  30                return "AX";
  31        case PERF_REG_X86_BX:
  32                return "BX";
  33        case PERF_REG_X86_CX:
  34                return "CX";
  35        case PERF_REG_X86_DX:
  36                return "DX";
  37        case PERF_REG_X86_SI:
  38                return "SI";
  39        case PERF_REG_X86_DI:
  40                return "DI";
  41        case PERF_REG_X86_BP:
  42                return "BP";
  43        case PERF_REG_X86_SP:
  44                return "SP";
  45        case PERF_REG_X86_IP:
  46                return "IP";
  47        case PERF_REG_X86_FLAGS:
  48                return "FLAGS";
  49        case PERF_REG_X86_CS:
  50                return "CS";
  51        case PERF_REG_X86_SS:
  52                return "SS";
  53        case PERF_REG_X86_DS:
  54                return "DS";
  55        case PERF_REG_X86_ES:
  56                return "ES";
  57        case PERF_REG_X86_FS:
  58                return "FS";
  59        case PERF_REG_X86_GS:
  60                return "GS";
  61#ifdef HAVE_ARCH_X86_64_SUPPORT
  62        case PERF_REG_X86_R8:
  63                return "R8";
  64        case PERF_REG_X86_R9:
  65                return "R9";
  66        case PERF_REG_X86_R10:
  67                return "R10";
  68        case PERF_REG_X86_R11:
  69                return "R11";
  70        case PERF_REG_X86_R12:
  71                return "R12";
  72        case PERF_REG_X86_R13:
  73                return "R13";
  74        case PERF_REG_X86_R14:
  75                return "R14";
  76        case PERF_REG_X86_R15:
  77                return "R15";
  78#endif /* HAVE_ARCH_X86_64_SUPPORT */
  79
  80#define XMM(x) \
  81        case PERF_REG_X86_XMM ## x:     \
  82        case PERF_REG_X86_XMM ## x + 1: \
  83                return "XMM" #x;
  84        XMM(0)
  85        XMM(1)
  86        XMM(2)
  87        XMM(3)
  88        XMM(4)
  89        XMM(5)
  90        XMM(6)
  91        XMM(7)
  92        XMM(8)
  93        XMM(9)
  94        XMM(10)
  95        XMM(11)
  96        XMM(12)
  97        XMM(13)
  98        XMM(14)
  99        XMM(15)
 100#undef XMM
 101        default:
 102                return NULL;
 103        }
 104
 105        return NULL;
 106}
 107
 108#endif /* ARCH_PERF_REGS_H */
 109