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 model's 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