- Renamed cpu header files
[coreboot.git] / src / include / cpu / x86 / msr.h
1 #ifndef CPU_X86_MSR_H
2 #define CPU_X86_MSR_H
3
4
5 #ifdef __ROMCC__
6
7 typedef __builtin_msr_t msr_t;
8
9 static msr_t rdmsr(unsigned long index)
10 {
11         return __builtin_rdmsr(index);
12 }
13
14 static void wrmsr(unsigned long index, msr_t msr)
15 {
16         __builtin_wrmsr(index, msr.lo, msr.hi);
17 }
18
19 #endif /* __ROMCC__ */
20
21 #if defined(__GNUC__) && !defined(__ROMCC__)
22
23 typedef struct msr_struct 
24 {
25         unsigned lo;
26         unsigned hi;
27 } msr_t;
28
29 static inline msr_t rdmsr(unsigned index)
30 {
31         msr_t result;
32         __asm__ __volatile__ (
33                 "rdmsr"
34                 : "=a" (result.lo), "=d" (result.hi)
35                 : "c" (index)
36                 );
37         return result;
38 }
39
40 static inline void wrmsr(unsigned index, msr_t msr)
41 {
42         __asm__ __volatile__ (
43                 "wrmsr"
44                 : /* No outputs */
45                 : "c" (index), "a" (msr.lo), "d" (msr.hi)
46                 );
47 }
48
49 #endif /* __GNUC__ */
50
51
52 #endif /* CPU_X86_MSR_H */