1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 #define CR0_PE 0x00000001
39 #define CR0_MP 0x00000002
40 #define CR0_EM 0x00000004
41 #define CR0_TS 0x00000008
42 #define CR0_ET 0x00000010
43 #define CR0_PG 0x80000000
44
45
46
47
48 #define CR0_NE 0x00000020
49 #define CR0_WP 0x00010000
50 #define CR0_AM 0x00040000
51 #define CR0_NW 0x20000000
52 #define CR0_CD 0x40000000
53
54
55
56
57 #define CCR0 0xc0
58 #define CCR0_NC0 0x01
59 #define CCR0_NC1 0x02
60 #define CCR0_A20M 0x04
61 #define CCR0_KEN 0x08
62 #define CCR0_FLUSH 0x10
63 #define CCR0_BARB 0x20
64 #define CCR0_CO 0x40
65 #define CCR0_SUSPEND 0x80
66
67 #define CCR1 0xc1
68 #define CCR1_RPL 0x01
69
70
71
72
73
74
75 #define CR4_VME 0x00000001
76 #define CR4_PVI 0x00000002
77 #define CR4_TSD 0x00000004
78 #define CR4_DE 0x00000008
79 #define CR4_PSE 0x00000010
80 #define CR4_PAE 0x00000020
81 #define CR4_MCE 0x00000040
82 #define CR4_PGE 0x00000080
83 #define CR4_PCE 0x00000100
84 #define CR4_OSFXSR 0x00000200
85 #define CR4_OSXMMEXCPT 0x00000400
86
87
88
89
90
91 #define CPUID_FPU 0x00000001
92 #define CPUID_VME 0x00000002
93 #define CPUID_DE 0x00000004
94 #define CPUID_PSE 0x00000008
95 #define CPUID_TSC 0x00000010
96 #define CPUID_MSR 0x00000020
97 #define CPUID_PAE 0x00000040
98 #define CPUID_MCE 0x00000080
99 #define CPUID_CX8 0x00000100
100 #define CPUID_APIC 0x00000200
101 #define CPUID_SYS1 0x00000400
102 #define CPUID_SEP 0x00000800
103 #define CPUID_MTRR 0x00001000
104 #define CPUID_PGE 0x00002000
105 #define CPUID_MCA 0x00004000
106 #define CPUID_CMOV 0x00008000
107 #define CPUID_PAT 0x00010000
108 #define CPUID_PSE36 0x00020000
109 #define CPUID_SER 0x00040000
110 #define CPUID_CFLUSH 0x00080000
111 #define CPUID_B20 0x00100000
112 #define CPUID_DS 0x00200000
113 #define CPUID_ACPI 0x00400000
114 #define CPUID_MMX 0x00800000
115 #define CPUID_FXSR 0x01000000
116 #define CPUID_EMMX 0x01000000
117 #define CPUID_SSE 0x02000000
118 #define CPUID_SSE2 0x04000000
119 #define CPUID_SS 0x08000000
120 #define CPUID_HTT 0x10000000
121 #define CPUID_TM 0x20000000
122 #define CPUID_B30 0x40000000
123 #define CPUID_SBF 0x80000000
124
125
126
127
128
129
130
131 #define CPUID_3DNOW 0x40000000
132 #define CPUID_LONG 0x20000000
133
134 #define CPUIDECX_SSE3 0x00000001
135 #define CPUIDECX_MWAIT 0x00000008
136 #define CPUIDECX_DSCPL 0x00000010
137 #define CPUIDECX_VMX 0x00000020
138 #define CPUIDECX_EST 0x00000080
139 #define CPUIDECX_TM2 0x00000100
140 #define CPUIDECX_CNXTID 0x00000400
141 #define CPUIDECX_CX16 0x00002000
142 #define CPUIDECX_XTPR 0x00004000
143
144
145
146
147 #define MSR_P5_MC_ADDR 0x000
148 #define MSR_P5_MC_TYPE 0x001
149 #define MSR_TSC 0x010
150 #define P5MSR_CTRSEL 0x011
151 #define P5MSR_CTR0 0x012
152 #define P5MSR_CTR1 0x013
153 #define MSR_APICBASE 0x01b
154 #define MSR_EBL_CR_POWERON 0x02a
155 #define MSR_EBC_FREQUENCY_ID 0x02c
156 #define MSR_TEST_CTL 0x033
157 #define MSR_BIOS_UPDT_TRIG 0x079
158 #define MSR_BBL_CR_D0 0x088
159 #define MSR_BBL_CR_D1 0x089
160 #define MSR_BBL_CR_D2 0x08a
161 #define MSR_BIOS_SIGN 0x08b
162 #define P6MSR_CTR0 0x0c1
163 #define P6MSR_CTR1 0x0c2
164 #define MSR_FSB_FREQ 0x0cd
165 #define MSR_TEMPERATURE_TARGET 0x0ee
166 #define MSR_TEMPERATURE_TARGET_LOW_BIT 0x40000000
167 #define MSR_MTRRcap 0x0fe
168 #define MSR_BBL_CR_ADDR 0x116
169 #define MSR_BBL_CR_DECC 0x118
170 #define MSR_BBL_CR_CTL 0x119
171 #define MSR_BBL_CR_TRIG 0x11a
172 #define MSR_BBL_CR_BUSY 0x11b
173 #define MSR_BBL_CR_CTR3 0x11e
174 #define MSR_SYSENTER_CS 0x174
175 #define MSR_SYSENTER_ESP 0x175
176 #define MSR_SYSENTER_EIP 0x176
177 #define MSR_MCG_CAP 0x179
178 #define MSR_MCG_STATUS 0x17a
179 #define MSR_MCG_CTL 0x17b
180 #define P6MSR_CTRSEL0 0x186
181 #define P6MSR_CTRSEL1 0x187
182 #define MSR_PERF_STATUS 0x198
183 #define MSR_PERF_CTL 0x199
184 #define MSR_THERM_CONTROL 0x19a
185 #define MSR_THERM_INTERRUPT 0x19b
186 #define MSR_THERM_STATUS 0x19c
187 #define MSR_THERM_STATUS_VALID_BIT 0x80000000
188 #define MSR_THERM_STATUS_TEMP(msr) ((msr >> 16) & 0x7f)
189 #define MSR_THERM2_CTL 0x19d
190 #define MSR_MISC_ENABLE 0x1a0
191 #define MSR_DEBUGCTLMSR 0x1d9
192 #define MSR_LASTBRANCHFROMIP 0x1db
193 #define MSR_LASTBRANCHTOIP 0x1dc
194 #define MSR_LASTINTFROMIP 0x1dd
195 #define MSR_LASTINTTOIP 0x1de
196 #define MSR_ROB_CR_BKUPTMPDR6 0x1e0
197 #define MSR_MTRRVarBase 0x200
198 #define MSR_MTRRphysMask0 0x201
199 #define MSR_MTRRphysBase1 0x202
200 #define MSR_MTRRphysMask1 0x203
201 #define MSR_MTRRphysBase2 0x204
202 #define MSR_MTRRphysMask2 0x205
203 #define MSR_MTRRphysBase3 0x206
204 #define MSR_MTRRphysMask3 0x207
205 #define MSR_MTRRphysBase4 0x208
206 #define MSR_MTRRphysMask4 0x209
207 #define MSR_MTRRphysBase5 0x20a
208 #define MSR_MTRRphysMask5 0x20b
209 #define MSR_MTRRphysBase6 0x20c
210 #define MSR_MTRRphysMask6 0x20d
211 #define MSR_MTRRphysBase7 0x20e
212 #define MSR_MTRRphysMask7 0x20f
213 #define MSR_MTRR64kBase 0x250
214 #define MSR_MTRR16kBase 0x258
215 #define MSR_MTRRfix16K_A0000 0x259
216 #define MSR_MTRR4kBase 0x268
217 #define MSR_MTRRfix4K_C8000 0x269
218 #define MSR_MTRRfix4K_D0000 0x26a
219 #define MSR_MTRRfix4K_D8000 0x26b
220 #define MSR_MTRRfix4K_E0000 0x26c
221 #define MSR_MTRRfix4K_E8000 0x26d
222 #define MSR_MTRRfix4K_F0000 0x26e
223 #define MSR_MTRRfix4K_F8000 0x26f
224 #define MSR_MTRRdefType 0x2ff
225 #define MSR_MC0_CTL 0x400
226 #define MSR_MC0_STATUS 0x401
227 #define MSR_MC0_ADDR 0x402
228 #define MSR_MC0_MISC 0x403
229 #define MSR_MC1_CTL 0x404
230 #define MSR_MC1_STATUS 0x405
231 #define MSR_MC1_ADDR 0x406
232 #define MSR_MC1_MISC 0x407
233 #define MSR_MC2_CTL 0x408
234 #define MSR_MC2_STATUS 0x409
235 #define MSR_MC2_ADDR 0x40a
236 #define MSR_MC2_MISC 0x40b
237 #define MSR_MC4_CTL 0x40c
238 #define MSR_MC4_STATUS 0x40d
239 #define MSR_MC4_ADDR 0x40e
240 #define MSR_MC4_MISC 0x40f
241 #define MSR_MC3_CTL 0x410
242 #define MSR_MC3_STATUS 0x411
243 #define MSR_MC3_ADDR 0x412
244 #define MSR_MC3_MISC 0x413
245
246
247 #define MSR_K6_EPMR 0xc0000086
248
249
250
251
252 #define MSR_SYSCFG 0xc0000010
253
254 #define MSR_EFER 0xc0000080
255 #define EFER_SCE 0x00000001
256 #define EFER_LME 0x00000100
257 #define EFER_LMA 0x00000400
258 #define EFER_NXE 0x00000800
259
260 #define MSR_STAR 0xc0000081
261 #define MSR_LSTAR 0xc0000082
262 #define MSR_CSTAR 0xc0000083
263 #define MSR_SFMASK 0xc0000084
264
265 #define MSR_FSBASE 0xc0000100
266 #define MSR_GSBASE 0xc0000101
267 #define MSR_KERNELGSBASE 0xc0000102
268
269
270
271
272 #define MSR_HWCR 0xc0010015
273 #define HWCR_FFDIS 0x00000040
274
275 #define MSR_NB_CFG 0xc001001f
276 #define NB_CFG_DISIOREQLOCK 0x0000000000000004ULL
277 #define NB_CFG_DISDATMSK 0x0000001000000000ULL
278
279 #define MSR_LS_CFG 0xc0011020
280 #define LS_CFG_DIS_LS2_SQUISH 0x02000000
281
282 #define MSR_IC_CFG 0xc0011021
283 #define IC_CFG_DIS_SEQ_PREFETCH 0x00000800
284
285 #define MSR_DC_CFG 0xc0011022
286 #define DC_CFG_DIS_CNV_WC_SSO 0x00000004
287 #define DC_CFG_DIS_SMC_CHK_BUF 0x00000400
288
289 #define MSR_BU_CFG 0xc0011023
290 #define BU_CFG_THRL2IDXCMPDIS 0x0000080000000000ULL
291 #define BU_CFG_WBPFSMCCHKDIS 0x0000200000000000ULL
292 #define BU_CFG_WBENHWSBDIS 0x0001000000000000ULL
293
294
295
296
297 #define MTRR_N64K 8
298 #define MTRR_N16K 16
299 #define MTRR_N4K 64
300
301
302
303
304
305
306
307
308
309
310
311
312 #define NCR1 0xc4
313 #define NCR2 0xc7
314 #define NCR3 0xca
315 #define NCR4 0xcd
316
317 #define NCR_SIZE_0K 0
318 #define NCR_SIZE_4K 1
319 #define NCR_SIZE_8K 2
320 #define NCR_SIZE_16K 3
321 #define NCR_SIZE_32K 4
322 #define NCR_SIZE_64K 5
323 #define NCR_SIZE_128K 6
324 #define NCR_SIZE_256K 7
325 #define NCR_SIZE_512K 8
326 #define NCR_SIZE_1M 9
327 #define NCR_SIZE_2M 10
328 #define NCR_SIZE_4M 11
329 #define NCR_SIZE_8M 12
330 #define NCR_SIZE_16M 13
331 #define NCR_SIZE_32M 14
332 #define NCR_SIZE_4G 15
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353 #define PMC5_CESR_EVENT 0x003f
354 #define PMC5_CESR_OS 0x0040
355 #define PMC5_CESR_USR 0x0080
356 #define PMC5_CESR_E 0x0100
357 #define PMC5_CESR_P 0x0200
358
359
360
361
362
363 #define PMC6_EVTSEL_EVENT 0x000000ff
364 #define PMC6_EVTSEL_UNIT 0x0000ff00
365 #define PMC6_EVTSEL_UNIT_SHIFT 8
366 #define PMC6_EVTSEL_USR (1 << 16)
367 #define PMC6_EVTSEL_OS (1 << 17)
368 #define PMC6_EVTSEL_E (1 << 18)
369 #define PMC6_EVTSEL_PC (1 << 19)
370 #define PMC6_EVTSEL_INT (1 << 20)
371 #define PMC6_EVTSEL_EN (1 << 22)
372 #define PMC6_EVTSEL_INV (1 << 23)
373 #define PMC6_EVTSEL_COUNTER_MASK 0xff000000
374 #define PMC6_EVTSEL_COUNTER_MASK_SHIFT 24
375
376
377 #define PMC6_DATA_MEM_REFS 0x43
378 #define PMC6_DCU_LINES_IN 0x45
379 #define PMC6_DCU_M_LINES_IN 0x46
380 #define PMC6_DCU_M_LINES_OUT 0x47
381 #define PMC6_DCU_MISS_OUTSTANDING 0x48
382
383
384 #define PMC6_IFU_IFETCH 0x80
385 #define PMC6_IFU_IFETCH_MISS 0x81
386 #define PMC6_ITLB_MISS 0x85
387 #define PMC6_IFU_MEM_STALL 0x86
388 #define PMC6_ILD_STALL 0x87
389
390
391 #define PMC6_L2_IFETCH 0x28
392 #define PMC6_L2_LD 0x29
393 #define PMC6_L2_ST 0x2a
394 #define PMC6_L2_LINES_IN 0x24
395 #define PMC6_L2_LINES_OUT 0x26
396 #define PMC6_L2_M_LINES_INM 0x25
397 #define PMC6_L2_M_LINES_OUTM 0x27
398 #define PMC6_L2_RQSTS 0x2e
399 #define PMC6_L2_ADS 0x21
400 #define PMC6_L2_DBUS_BUSY 0x22
401 #define PMC6_L2_DBUS_BUSY_RD 0x23
402
403
404 #define PMC6_BUS_DRDY_CLOCKS 0x62
405 #define PMC6_BUS_LOCK_CLOCKS 0x63
406 #define PMC6_BUS_REQ_OUTSTANDING 0x60
407 #define PMC6_BUS_TRAN_BRD 0x65
408 #define PMC6_BUS_TRAN_RFO 0x66
409 #define PMC6_BUS_TRANS_WB 0x67
410 #define PMC6_BUS_TRAN_IFETCH 0x68
411 #define PMC6_BUS_TRAN_INVAL 0x69
412 #define PMC6_BUS_TRAN_PWR 0x6a
413 #define PMC6_BUS_TRANS_P 0x6b
414 #define PMC6_BUS_TRANS_IO 0x6c
415 #define PMC6_BUS_TRAN_DEF 0x6d
416 #define PMC6_BUS_TRAN_BURST 0x6e
417 #define PMC6_BUS_TRAN_ANY 0x70
418 #define PMC6_BUS_TRAN_MEM 0x6f
419 #define PMC6_BUS_DATA_RCV 0x64
420 #define PMC6_BUS_BNR_DRV 0x61
421 #define PMC6_BUS_HIT_DRV 0x7a
422 #define PMC6_BUS_HITM_DRDV 0x7b
423 #define PMC6_BUS_SNOOP_STALL 0x7e
424
425
426 #define PMC6_FLOPS 0xc1
427 #define PMC6_FP_COMP_OPS_EXE 0x10
428 #define PMC6_FP_ASSIST 0x11
429 #define PMC6_MUL 0x12
430 #define PMC6_DIV 0x12
431 #define PMC6_CYCLES_DIV_BUSY 0x14
432
433
434 #define PMC6_LD_BLOCKS 0x03
435 #define PMC6_SB_DRAINS 0x04
436 #define PMC6_MISALIGN_MEM_REF 0x05
437 #define PMC6_EMON_KNI_PREF_DISPATCHED 0x07
438 #define PMC6_EMON_KNI_PREF_MISS 0x4b
439
440
441 #define PMC6_INST_RETIRED 0xc0
442 #define PMC6_UOPS_RETIRED 0xc2
443 #define PMC6_INST_DECODED 0xd0
444 #define PMC6_EMON_KNI_INST_RETIRED 0xd8
445 #define PMC6_EMON_KNI_COMP_INST_RET 0xd9
446
447
448 #define PMC6_HW_INT_RX 0xc8
449 #define PMC6_CYCLES_INT_MASKED 0xc6
450 #define PMC6_CYCLES_INT_PENDING_AND_MASKED 0xc7
451
452
453 #define PMC6_BR_INST_RETIRED 0xc4
454 #define PMC6_BR_MISS_PRED_RETIRED 0xc5
455 #define PMC6_BR_TAKEN_RETIRED 0xc9
456 #define PMC6_BR_MISS_PRED_TAKEN_RET 0xca
457 #define PMC6_BR_INST_DECODED 0xe0
458 #define PMC6_BTB_MISSES 0xe2
459 #define PMC6_BR_BOGUS 0xe4
460 #define PMC6_BACLEARS 0xe6
461
462
463 #define PMC6_RESOURCE_STALLS 0xa2
464 #define PMC6_PARTIAL_RAT_STALLS 0xd2
465
466
467 #define PMC6_SEGMENT_REG_LOADS 0x06
468
469
470 #define PMC6_CPU_CLK_UNHALTED 0x79
471
472
473 #define PMC6_MMX_INSTR_EXEC 0xb0
474 #define PMC6_MMX_SAT_INSTR_EXEC 0xb1
475 #define PMC6_MMX_UOPS_EXEC 0xb2
476 #define PMC6_MMX_INSTR_TYPE_EXEC 0xb3
477 #define PMC6_FP_MMX_TRANS 0xcc
478 #define PMC6_MMX_ASSIST 0xcd
479 #define PMC6_MMX_INSTR_RET 0xc3
480
481
482 #define PMC6_SEG_RENAME_STALLS 0xd4
483 #define PMC6_SEG_REG_RENAMES 0xd5
484 #define PMC6_RET_SEG_RENAMES 0xd6
485
486
487 #define C3_HAS_AES 1
488 #define C3_HAS_SHA 2
489 #define C3_HAS_MM 4
490 #define C3_HAS_AESCTR 8
491
492
493 #define C3_CPUID_HAS_RNG 0x000004
494 #define C3_CPUID_DO_RNG 0x000008
495 #define C3_CPUID_HAS_ACE 0x000040
496 #define C3_CPUID_DO_ACE 0x000080
497 #define C3_CPUID_HAS_ACE2 0x000100
498 #define C3_CPUID_DO_ACE2 0x000200
499 #define C3_CPUID_HAS_PHE 0x000400
500 #define C3_CPUID_DO_PHE 0x000800
501 #define C3_CPUID_HAS_PMM 0x001000
502 #define C3_CPUID_DO_PMM 0x002000
503
504
505 #define C3_CRYPT_CWLO_ROUND_M 0x0000000f
506 #define C3_CRYPT_CWLO_ALG_M 0x00000070
507 #define C3_CRYPT_CWLO_ALG_AES 0x00000000
508 #define C3_CRYPT_CWLO_KEYGEN_M 0x00000080
509 #define C3_CRYPT_CWLO_KEYGEN_HW 0x00000000
510 #define C3_CRYPT_CWLO_KEYGEN_SW 0x00000080
511 #define C3_CRYPT_CWLO_NORMAL 0x00000000
512 #define C3_CRYPT_CWLO_INTERMEDIATE 0x00000100
513 #define C3_CRYPT_CWLO_ENCRYPT 0x00000000
514 #define C3_CRYPT_CWLO_DECRYPT 0x00000200
515 #define C3_CRYPT_CWLO_KEY128 0x0000000a
516 #define C3_CRYPT_CWLO_KEY192 0x0000040c
517 #define C3_CRYPT_CWLO_KEY256 0x0000080e