]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
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 | struct op_saved_msr { | |
15 | unsigned int high; | |
16 | unsigned int low; | |
17 | }; | |
18 | ||
19 | struct op_msr { | |
20 | unsigned long addr; | |
21 | struct op_saved_msr saved; | |
22 | }; | |
23 | ||
24 | struct op_msrs { | |
25 | struct op_msr * counters; | |
26 | struct op_msr * controls; | |
27 | }; | |
28 | ||
29 | struct pt_regs; | |
30 | ||
31 | /* The model vtable abstracts the differences between | |
27b46d76 | 32 | * various x86 CPU models' perfctr support. |
1da177e4 LT |
33 | */ |
34 | struct op_x86_model_spec { | |
adf5ec0b RR |
35 | int (*init)(struct oprofile_operations *ops); |
36 | void (*exit)(void); | |
5d448802 AK |
37 | unsigned int num_counters; |
38 | unsigned int num_controls; | |
1da177e4 LT |
39 | void (*fill_in_addresses)(struct op_msrs * const msrs); |
40 | void (*setup_ctrs)(struct op_msrs const * const msrs); | |
41 | int (*check_ctrs)(struct pt_regs * const regs, | |
42 | struct op_msrs const * const msrs); | |
43 | void (*start)(struct op_msrs const * const msrs); | |
44 | void (*stop)(struct op_msrs const * const msrs); | |
cb9c448c | 45 | void (*shutdown)(struct op_msrs const * const msrs); |
1da177e4 LT |
46 | }; |
47 | ||
48 | extern struct op_x86_model_spec const op_ppro_spec; | |
49 | extern struct op_x86_model_spec const op_p4_spec; | |
50 | extern struct op_x86_model_spec const op_p4_ht2_spec; | |
6657fe4f | 51 | extern struct op_x86_model_spec const op_amd_spec; |
1da177e4 LT |
52 | |
53 | #endif /* OP_X86_MODEL_H */ |