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