|
@@ -211,33 +211,6 @@ do { \
|
|
|
|
|
|
#endif /* !CONFIG_PARAVIRT */
|
|
#endif /* !CONFIG_PARAVIRT */
|
|
|
|
|
|
-static inline int rdmsrl_amd_safe(unsigned msr, unsigned long long *p)
|
|
|
|
-{
|
|
|
|
- u32 gprs[8] = { 0 };
|
|
|
|
- int err;
|
|
|
|
-
|
|
|
|
- gprs[1] = msr;
|
|
|
|
- gprs[7] = 0x9c5a203a;
|
|
|
|
-
|
|
|
|
- err = rdmsr_safe_regs(gprs);
|
|
|
|
-
|
|
|
|
- *p = gprs[0] | ((u64)gprs[2] << 32);
|
|
|
|
-
|
|
|
|
- return err;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static inline int wrmsrl_amd_safe(unsigned msr, unsigned long long val)
|
|
|
|
-{
|
|
|
|
- u32 gprs[8] = { 0 };
|
|
|
|
-
|
|
|
|
- gprs[0] = (u32)val;
|
|
|
|
- gprs[1] = msr;
|
|
|
|
- gprs[2] = val >> 32;
|
|
|
|
- gprs[7] = 0x9c5a203a;
|
|
|
|
-
|
|
|
|
- return wrmsr_safe_regs(gprs);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
#define checking_wrmsrl(msr, val) wrmsr_safe((msr), (u32)(val), \
|
|
#define checking_wrmsrl(msr, val) wrmsr_safe((msr), (u32)(val), \
|
|
(u32)((val) >> 32))
|
|
(u32)((val) >> 32))
|
|
|
|
|