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