linux/arch/x86/oprofile/op_x86_model.h
<<
>>
Prefs
   1/**
   2 * @file op_x86_model.h
   3 * interface to x86 model-specific MSR operations
   4 *
   5 * @remark Copyright 2002 OProfile authors
   6 * @remark Read the file COPYING
   7 *
   8 * @author Graydon Hoare
   9 */
  10
  11#ifndef OP_X86_MODEL_H
  12#define OP_X86_MODEL_H
  13
  14struct op_saved_msr {
  15        unsigned int high;
  16        unsigned int low;
  17};
  18
  19struct op_msr {
  20        unsigned long addr;
  21        struct op_saved_msr saved;
  22};
  23
  24struct op_msrs {
  25        struct op_msr * counters;
  26        struct op_msr * controls;
  27};
  28
  29struct pt_regs;
  30
  31/* The model vtable abstracts the differences between
  32 * various x86 CPU models' perfctr support.
  33 */
  34struct op_x86_model_spec {
  35        unsigned int const num_counters;
  36        unsigned int const num_controls;
  37        void (*fill_in_addresses)(struct op_msrs * const msrs);
  38        void (*setup_ctrs)(struct op_msrs const * const msrs);
  39        int (*check_ctrs)(struct pt_regs * const regs,
  40                struct op_msrs const * const msrs);
  41        void (*start)(struct op_msrs const * const msrs);
  42        void (*stop)(struct op_msrs const * const msrs);
  43        void (*shutdown)(struct op_msrs const * const msrs);
  44};
  45
  46extern struct op_x86_model_spec const op_ppro_spec;
  47extern struct op_x86_model_spec const op_p4_spec;
  48extern struct op_x86_model_spec const op_p4_ht2_spec;
  49extern struct op_x86_model_spec const op_athlon_spec;
  50
  51#endif /* OP_X86_MODEL_H */
  52