msr.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:3k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. #ifndef __ASM_MSR_H
  2. #define __ASM_MSR_H
  3. /*
  4.  * Access to machine-specific registers (available on 586 and better only)
  5.  * Note: the rd* operations modify the parameters directly (without using
  6.  * pointer indirection), this allows gcc to optimize better
  7.  */
  8. #define rdmsr(msr,val1,val2) 
  9.      __asm__ __volatile__("rdmsr" 
  10.   : "=a" (val1), "=d" (val2) 
  11.   : "c" (msr))
  12. #define wrmsr(msr,val1,val2) 
  13.      __asm__ __volatile__("wrmsr" 
  14.   : /* no outputs */ 
  15.   : "c" (msr), "a" (val1), "d" (val2))
  16. #define rdtsc(low,high) 
  17.      __asm__ __volatile__("rdtsc" : "=a" (low), "=d" (high))
  18. #define rdtscl(low) 
  19.      __asm__ __volatile__("rdtsc" : "=a" (low) : : "edx")
  20. #define rdtscll(val) 
  21.      __asm__ __volatile__("rdtsc" : "=A" (val))
  22. #define write_tsc(val1,val2) wrmsr(0x10, val1, val2)
  23. #define rdpmc(counter,low,high) 
  24.      __asm__ __volatile__("rdpmc" 
  25.   : "=a" (low), "=d" (high) 
  26.   : "c" (counter))
  27. /* symbolic names for some interesting MSRs */
  28. /* Intel defined MSRs. */
  29. #define MSR_IA32_P5_MC_ADDR 0
  30. #define MSR_IA32_P5_MC_TYPE 1
  31. #define MSR_IA32_PLATFORM_ID 0x17
  32. #define MSR_IA32_EBL_CR_POWERON 0x2a
  33. #define MSR_IA32_APICBASE 0x1b
  34. #define MSR_IA32_APICBASE_BSP (1<<8)
  35. #define MSR_IA32_APICBASE_ENABLE (1<<11)
  36. #define MSR_IA32_APICBASE_BASE (0xfffff<<12)
  37. #define MSR_IA32_UCODE_WRITE 0x79
  38. #define MSR_IA32_UCODE_REV 0x8b
  39. #define MSR_IA32_BBL_CR_CTL 0x119
  40. #define MSR_IA32_MCG_CAP 0x179
  41. #define MSR_IA32_MCG_STATUS 0x17a
  42. #define MSR_IA32_MCG_CTL 0x17b
  43. #define MSR_IA32_THERM_CONTROL 0x19a
  44. #define MSR_IA32_THERM_INTERRUPT 0x19b
  45. #define MSR_IA32_THERM_STATUS 0x19c
  46. #define MSR_IA32_MISC_ENABLE 0x1a0
  47. #define MSR_IA32_DEBUGCTLMSR 0x1d9
  48. #define MSR_IA32_LASTBRANCHFROMIP 0x1db
  49. #define MSR_IA32_LASTBRANCHTOIP 0x1dc
  50. #define MSR_IA32_LASTINTFROMIP 0x1dd
  51. #define MSR_IA32_LASTINTTOIP 0x1de
  52. #define MSR_IA32_MC0_CTL 0x400
  53. #define MSR_IA32_MC0_STATUS 0x401
  54. #define MSR_IA32_MC0_ADDR 0x402
  55. #define MSR_IA32_MC0_MISC 0x403
  56. #define MSR_P6_PERFCTR0 0xc1
  57. #define MSR_P6_PERFCTR1 0xc2
  58. #define MSR_P6_EVNTSEL0 0x186
  59. #define MSR_P6_EVNTSEL1 0x187
  60. /* AMD Defined MSRs */
  61. #define MSR_K6_EFER 0xC0000080
  62. #define MSR_K6_STAR 0xC0000081
  63. #define MSR_K6_WHCR 0xC0000082
  64. #define MSR_K6_UWCCR 0xC0000085
  65. #define MSR_K6_EPMR 0xC0000086
  66. #define MSR_K6_PSOR 0xC0000087
  67. #define MSR_K6_PFIR 0xC0000088
  68. #define MSR_K7_EVNTSEL0 0xC0010000
  69. #define MSR_K7_PERFCTR0 0xC0010004
  70. #define MSR_K7_HWCR 0xC0010015
  71. #define MSR_K7_FID_VID_CTL 0xC0010041
  72. #define MSR_K7_VID_STATUS 0xC0010042
  73. /* Centaur-Hauls/IDT defined MSRs. */
  74. #define MSR_IDT_FCR1 0x107
  75. #define MSR_IDT_FCR2 0x108
  76. #define MSR_IDT_FCR3 0x109
  77. #define MSR_IDT_FCR4 0x10a
  78. #define MSR_IDT_MCR0 0x110
  79. #define MSR_IDT_MCR1 0x111
  80. #define MSR_IDT_MCR2 0x112
  81. #define MSR_IDT_MCR3 0x113
  82. #define MSR_IDT_MCR4 0x114
  83. #define MSR_IDT_MCR5 0x115
  84. #define MSR_IDT_MCR6 0x116
  85. #define MSR_IDT_MCR7 0x117
  86. #define MSR_IDT_MCR_CTRL 0x120
  87. /* VIA Cyrix defined MSRs*/
  88. #define MSR_VIA_FCR 0x1107
  89. #define MSR_VIA_LONGHAUL 0x110a
  90. #define MSR_VIA_BCR2 0x1147
  91. /* Transmeta defined MSRs */
  92. #define MSR_TMTA_LONGRUN_CTRL 0x80868010
  93. #define MSR_TMTA_LONGRUN_FLAGS 0x80868011
  94. #endif /* __ASM_MSR_H */