• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * @file op_msr.h
3  * x86-specific MSR stuff
4  *
5  * @remark Copyright 2002 OProfile authors
6  * @remark Read the file COPYING
7  *
8  * @author John Levon
9  * @author Philippe Elie
10  */
11 
12 #ifndef OP_MSR_H
13 #define OP_MSR_H
14 
15 /* work-around compiler bug in gcc 2.91.66, just mark all input register as
16  * magically cloberred by wrmsr */
17 #if __GNUC__ == 2 && __GNUC_MINOR__ == 91
18 	#undef wrmsr
19 	#define wrmsr(msr, val1, val2)				\
20 		__asm__ __volatile__("wrmsr"			\
21 			/* no outputs */			\
22 			:					\
23 			: "c" (msr), "a" (val1), "d" (val2)	\
24 			: "ecx", "eax", "edx")
25 #endif
26 
27 #ifndef MSR_IA32_MISC_ENABLE
28 #define MSR_IA32_MISC_ENABLE 0x1a0
29 #endif
30 
31 /* MSRs */
32 #ifndef MSR_P6_PERFCTR0
33 #define MSR_P6_PERFCTR0 0xc1
34 #endif
35 #ifndef MSR_P6_PERFCTR1
36 #define MSR_P6_PERFCTR1 0xc2
37 #endif
38 #ifndef MSR_P6_EVNTSEL0
39 #define MSR_P6_EVNTSEL0 0x186
40 #endif
41 #ifndef MSR_P6_EVNTSEL1
42 #define MSR_P6_EVNTSEL1 0x187
43 #endif
44 #ifndef MSR_K7_EVNTSEL0
45 #define MSR_K7_EVNTSEL0 0xc0010000
46 #endif
47 #ifndef MSR_K7_EVNTSEL1
48 #define MSR_K7_EVNTSEL1 0xc0010001
49 #endif
50 #ifndef MSR_K7_EVNTSEL2
51 #define MSR_K7_EVNTSEL2 0xc0010002
52 #endif
53 #ifndef MSR_K7_EVNTSEL3
54 #define MSR_K7_EVNTSEL3 0xc0010003
55 #endif
56 #ifndef MSR_K7_PERFCTR0
57 #define MSR_K7_PERFCTR0 0xc0010004
58 #endif
59 #ifndef MSR_K7_PERFCTR1
60 #define MSR_K7_PERFCTR1 0xc0010005
61 #endif
62 #ifndef MSR_K7_PERFCTR2
63 #define MSR_K7_PERFCTR2 0xc0010006
64 #endif
65 #ifndef MSR_K7_PERFCTR3
66 #define MSR_K7_PERFCTR3 0xc0010007
67 #endif
68 
69 /* There are *82* pentium 4 MSRs:
70 
71    - 1 misc register
72 
73    - 18 counters (PERFCTRs)
74 
75    - 18 counter configuration control registers (CCCRs)
76 
77    - 45 event selection control registers (ESCRs). */
78 
79 
80 #ifndef MSR_P4_BPU_PERFCTR0
81 #define MSR_P4_BPU_PERFCTR0 0x300
82 #endif
83 #ifndef MSR_P4_BPU_PERFCTR1
84 #define MSR_P4_BPU_PERFCTR1 0x301
85 #endif
86 #ifndef MSR_P4_BPU_PERFCTR2
87 #define MSR_P4_BPU_PERFCTR2 0x302
88 #endif
89 #ifndef MSR_P4_BPU_PERFCTR3
90 #define MSR_P4_BPU_PERFCTR3 0x303
91 #endif
92 #ifndef MSR_P4_MS_PERFCTR0
93 #define MSR_P4_MS_PERFCTR0 0x304
94 #endif
95 #ifndef MSR_P4_MS_PERFCTR1
96 #define MSR_P4_MS_PERFCTR1 0x305
97 #endif
98 #ifndef MSR_P4_MS_PERFCTR2
99 #define MSR_P4_MS_PERFCTR2 0x306
100 #endif
101 #ifndef MSR_P4_MS_PERFCTR3
102 #define MSR_P4_MS_PERFCTR3 0x307
103 #endif
104 #ifndef MSR_P4_FLAME_PERFCTR0
105 #define MSR_P4_FLAME_PERFCTR0 0x308
106 #endif
107 #ifndef MSR_P4_FLAME_PERFCTR1
108 #define MSR_P4_FLAME_PERFCTR1 0x309
109 #endif
110 #ifndef MSR_P4_FLAME_PERFCTR2
111 #define MSR_P4_FLAME_PERFCTR2 0x30a
112 #endif
113 #ifndef MSR_P4_FLAME_PERFCTR3
114 #define MSR_P4_FLAME_PERFCTR3 0x30b
115 #endif
116 #ifndef MSR_P4_IQ_PERFCTR0
117 #define MSR_P4_IQ_PERFCTR0 0x30c
118 #endif
119 #ifndef MSR_P4_IQ_PERFCTR1
120 #define MSR_P4_IQ_PERFCTR1 0x30d
121 #endif
122 #ifndef MSR_P4_IQ_PERFCTR2
123 #define MSR_P4_IQ_PERFCTR2 0x30e
124 #endif
125 #ifndef MSR_P4_IQ_PERFCTR3
126 #define MSR_P4_IQ_PERFCTR3 0x30f
127 #endif
128 #ifndef MSR_P4_IQ_PERFCTR4
129 #define MSR_P4_IQ_PERFCTR4 0x310
130 #endif
131 #ifndef MSR_P4_IQ_PERFCTR5
132 #define MSR_P4_IQ_PERFCTR5 0x311
133 #endif
134 
135 
136 #ifndef MSR_P4_BPU_CCCR0
137 #define MSR_P4_BPU_CCCR0 0x360
138 #endif
139 #ifndef MSR_P4_BPU_CCCR1
140 #define MSR_P4_BPU_CCCR1 0x361
141 #endif
142 #ifndef MSR_P4_BPU_CCCR2
143 #define MSR_P4_BPU_CCCR2 0x362
144 #endif
145 #ifndef MSR_P4_BPU_CCCR3
146 #define MSR_P4_BPU_CCCR3 0x363
147 #endif
148 #ifndef MSR_P4_MS_CCCR0
149 #define MSR_P4_MS_CCCR0 0x364
150 #endif
151 #ifndef MSR_P4_MS_CCCR1
152 #define MSR_P4_MS_CCCR1 0x365
153 #endif
154 #ifndef MSR_P4_MS_CCCR2
155 #define MSR_P4_MS_CCCR2 0x366
156 #endif
157 #ifndef MSR_P4_MS_CCCR3
158 #define MSR_P4_MS_CCCR3 0x367
159 #endif
160 #ifndef MSR_P4_FLAME_CCCR0
161 #define MSR_P4_FLAME_CCCR0 0x368
162 #endif
163 #ifndef MSR_P4_FLAME_CCCR1
164 #define MSR_P4_FLAME_CCCR1 0x369
165 #endif
166 #ifndef MSR_P4_FLAME_CCCR2
167 #define MSR_P4_FLAME_CCCR2 0x36a
168 #endif
169 #ifndef MSR_P4_FLAME_CCCR3
170 #define MSR_P4_FLAME_CCCR3 0x36b
171 #endif
172 #ifndef MSR_P4_IQ_CCCR0
173 #define MSR_P4_IQ_CCCR0 0x36c
174 #endif
175 #ifndef MSR_P4_IQ_CCCR1
176 #define MSR_P4_IQ_CCCR1 0x36d
177 #endif
178 #ifndef MSR_P4_IQ_CCCR2
179 #define MSR_P4_IQ_CCCR2 0x36e
180 #endif
181 #ifndef MSR_P4_IQ_CCCR3
182 #define MSR_P4_IQ_CCCR3 0x36f
183 #endif
184 #ifndef MSR_P4_IQ_CCCR4
185 #define MSR_P4_IQ_CCCR4 0x370
186 #endif
187 #ifndef MSR_P4_IQ_CCCR5
188 #define MSR_P4_IQ_CCCR5 0x371
189 #endif
190 
191 
192 #ifndef MSR_P4_ALF_ESCR0
193 #define MSR_P4_ALF_ESCR0 0x3ca
194 #endif
195 #ifndef MSR_P4_ALF_ESCR1
196 #define MSR_P4_ALF_ESCR1 0x3cb
197 #endif
198 #ifndef MSR_P4_BPU_ESCR0
199 #define MSR_P4_BPU_ESCR0 0x3b2
200 #endif
201 #ifndef MSR_P4_BPU_ESCR1
202 #define MSR_P4_BPU_ESCR1 0x3b3
203 #endif
204 #ifndef MSR_P4_BSU_ESCR0
205 #define MSR_P4_BSU_ESCR0 0x3a0
206 #endif
207 #ifndef MSR_P4_BSU_ESCR1
208 #define MSR_P4_BSU_ESCR1 0x3a1
209 #endif
210 #ifndef MSR_P4_CRU_ESCR0
211 #define MSR_P4_CRU_ESCR0 0x3b8
212 #endif
213 #ifndef MSR_P4_CRU_ESCR1
214 #define MSR_P4_CRU_ESCR1 0x3b9
215 #endif
216 #ifndef MSR_P4_CRU_ESCR2
217 #define MSR_P4_CRU_ESCR2 0x3cc
218 #endif
219 #ifndef MSR_P4_CRU_ESCR3
220 #define MSR_P4_CRU_ESCR3 0x3cd
221 #endif
222 #ifndef MSR_P4_CRU_ESCR4
223 #define MSR_P4_CRU_ESCR4 0x3e0
224 #endif
225 #ifndef MSR_P4_CRU_ESCR5
226 #define MSR_P4_CRU_ESCR5 0x3e1
227 #endif
228 #ifndef MSR_P4_DAC_ESCR0
229 #define MSR_P4_DAC_ESCR0 0x3a8
230 #endif
231 #ifndef MSR_P4_DAC_ESCR1
232 #define MSR_P4_DAC_ESCR1 0x3a9
233 #endif
234 #ifndef MSR_P4_FIRM_ESCR0
235 #define MSR_P4_FIRM_ESCR0 0x3a4
236 #endif
237 #ifndef MSR_P4_FIRM_ESCR1
238 #define MSR_P4_FIRM_ESCR1 0x3a5
239 #endif
240 #ifndef MSR_P4_FLAME_ESCR0
241 #define MSR_P4_FLAME_ESCR0 0x3a6
242 #endif
243 #ifndef MSR_P4_FLAME_ESCR1
244 #define MSR_P4_FLAME_ESCR1 0x3a7
245 #endif
246 #ifndef MSR_P4_FSB_ESCR0
247 #define MSR_P4_FSB_ESCR0 0x3a2
248 #endif
249 #ifndef MSR_P4_FSB_ESCR1
250 #define MSR_P4_FSB_ESCR1 0x3a3
251 #endif
252 #ifndef MSR_P4_IQ_ESCR0
253 #define MSR_P4_IQ_ESCR0 0x3ba
254 #endif
255 #ifndef MSR_P4_IQ_ESCR1
256 #define MSR_P4_IQ_ESCR1 0x3bb
257 #endif
258 #ifndef MSR_P4_IS_ESCR0
259 #define MSR_P4_IS_ESCR0 0x3b4
260 #endif
261 #ifndef MSR_P4_IS_ESCR1
262 #define MSR_P4_IS_ESCR1 0x3b5
263 #endif
264 #ifndef MSR_P4_ITLB_ESCR0
265 #define MSR_P4_ITLB_ESCR0 0x3b6
266 #endif
267 #ifndef MSR_P4_ITLB_ESCR1
268 #define MSR_P4_ITLB_ESCR1 0x3b7
269 #endif
270 #ifndef MSR_P4_IX_ESCR0
271 #define MSR_P4_IX_ESCR0 0x3c8
272 #endif
273 #ifndef MSR_P4_IX_ESCR1
274 #define MSR_P4_IX_ESCR1 0x3c9
275 #endif
276 #ifndef MSR_P4_MOB_ESCR0
277 #define MSR_P4_MOB_ESCR0 0x3aa
278 #endif
279 #ifndef MSR_P4_MOB_ESCR1
280 #define MSR_P4_MOB_ESCR1 0x3ab
281 #endif
282 #ifndef MSR_P4_MS_ESCR0
283 #define MSR_P4_MS_ESCR0 0x3c0
284 #endif
285 #ifndef MSR_P4_MS_ESCR1
286 #define MSR_P4_MS_ESCR1 0x3c1
287 #endif
288 #ifndef MSR_P4_PMH_ESCR0
289 #define MSR_P4_PMH_ESCR0 0x3ac
290 #endif
291 #ifndef MSR_P4_PMH_ESCR1
292 #define MSR_P4_PMH_ESCR1 0x3ad
293 #endif
294 #ifndef MSR_P4_RAT_ESCR0
295 #define MSR_P4_RAT_ESCR0 0x3bc
296 #endif
297 #ifndef MSR_P4_RAT_ESCR1
298 #define MSR_P4_RAT_ESCR1 0x3bd
299 #endif
300 #ifndef MSR_P4_SAAT_ESCR0
301 #define MSR_P4_SAAT_ESCR0 0x3ae
302 #endif
303 #ifndef MSR_P4_SAAT_ESCR1
304 #define MSR_P4_SAAT_ESCR1 0x3af
305 #endif
306 #ifndef MSR_P4_SSU_ESCR0
307 #define MSR_P4_SSU_ESCR0 0x3be
308 #endif
309 /* guess: not defined in manual */
310 #ifndef MSR_P4_SSU_ESCR1
311 #define MSR_P4_SSU_ESCR1 0x3bf
312 #endif
313 #ifndef MSR_P4_TBPU_ESCR0
314 #define MSR_P4_TBPU_ESCR0 0x3c2
315 #endif
316 #ifndef MSR_P4_TBPU_ESCR1
317 #define MSR_P4_TBPU_ESCR1 0x3c3
318 #endif
319 #ifndef MSR_P4_TC_ESCR0
320 #define MSR_P4_TC_ESCR0 0x3c4
321 #endif
322 #ifndef MSR_P4_TC_ESCR1
323 #define MSR_P4_TC_ESCR1 0x3c5
324 #endif
325 #ifndef MSR_P4_U2L_ESCR0
326 #define MSR_P4_U2L_ESCR0 0x3b0
327 #endif
328 #ifndef MSR_P4_U2L_ESCR1
329 #define MSR_P4_U2L_ESCR1 0x3b1
330 #endif
331 
332 /* Hyper-Threading */
333 #ifndef X86_FEATURE_HT
334 #define X86_FEATURE_HT		(0*32+28)
335 #endif
336 
337 #endif /* OP_MSR_H */
338