| /** |
| * @file op_x86_model.h |
| * interface to x86 model-specific MSR operations |
| * |
| * @remark Copyright 2002 OProfile authors |
| * @remark Read the file COPYING |
| * |
| * @author Graydon Hoare |
| */ |
| |
| #ifndef OP_X86_MODEL_H |
| #define OP_X86_MODEL_H |
| |
| #include "oprofile.h" |
| |
| struct op_saved_msr { |
| uint high; |
| uint low; |
| }; |
| |
| struct op_msr_group { |
| uint * addrs; |
| struct op_saved_msr * saved; |
| }; |
| |
| struct op_msrs { |
| struct op_msr_group counters; |
| struct op_msr_group controls; |
| }; |
| |
| struct pt_regs; |
| |
| struct op_x86_model_spec { |
| uint const num_counters; |
| uint const num_controls; |
| void (*fill_in_addresses)(struct op_msrs * const msrs); |
| void (*setup_ctrs)(struct op_msrs const * const msrs); |
| void (*check_ctrs)(uint const cpu, |
| struct op_msrs const * const msrs, |
| struct pt_regs * const regs); |
| void (*start)(struct op_msrs const * const msrs); |
| void (*stop)(struct op_msrs const * const msrs); |
| }; |
| |
| extern struct op_x86_model_spec const op_ppro_spec; |
| extern struct op_x86_model_spec const op_athlon_spec; |
| extern struct op_x86_model_spec const op_p4_spec; |
| #ifdef HT_SUPPORT |
| extern struct op_x86_model_spec const op_p4_ht2_spec; |
| #endif |
| |
| #endif /* OP_X86_MODEL_H */ |