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
14#include "oprofile.h"
15
16struct op_saved_msr {
17	uint high;
18	uint low;
19};
20
21struct op_msr_group {
22	uint * addrs;
23	struct op_saved_msr * saved;
24};
25
26struct op_msrs {
27	struct op_msr_group counters;
28	struct op_msr_group controls;
29};
30
31struct pt_regs;
32
33struct op_x86_model_spec {
34	uint const num_counters;
35	uint const num_controls;
36	void (*fill_in_addresses)(struct op_msrs * const msrs);
37	void (*setup_ctrs)(struct op_msrs const * const msrs);
38	void (*check_ctrs)(uint const cpu,
39		struct op_msrs const * const msrs,
40		struct pt_regs * const regs);
41	void (*start)(struct op_msrs const * const msrs);
42	void (*stop)(struct op_msrs const * const msrs);
43};
44
45extern struct op_x86_model_spec const op_ppro_spec;
46extern struct op_x86_model_spec const op_athlon_spec;
47extern struct op_x86_model_spec const op_p4_spec;
48#ifdef HT_SUPPORT
49extern struct op_x86_model_spec const op_p4_ht2_spec;
50#endif
51
52#endif /* OP_X86_MODEL_H */
53