From: Simon Glass Date: Thu, 13 Nov 2014 05:42:18 +0000 (-0700) Subject: x86: Add msr read/write functions that use a structure X-Git-Tag: v2015.01-rc2~5^2~11 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=eddbad224b9e0e6834f946f587923f27e54abb69;p=oweals%2Fu-boot.git x86: Add msr read/write functions that use a structure It is convenient to be able to adjust MSRs with a structure that splits the two 32-bit halves into separate fields, as they are often dealt with separately. Add a few functions to support this. Signed-off-by: Simon Glass --- diff --git a/arch/x86/include/asm/msr.h b/arch/x86/include/asm/msr.h index 3b5915d5e2..df4398378c 100644 --- a/arch/x86/include/asm/msr.h +++ b/arch/x86/include/asm/msr.h @@ -175,6 +175,25 @@ static inline int wrmsr_safe_regs(u32 regs[8]) return native_wrmsr_safe_regs(regs); } +typedef struct msr_t { + uint32_t lo; + uint32_t hi; +} msr_t; + +static inline struct msr_t msr_read(unsigned msr_num) +{ + struct msr_t msr; + + rdmsr(msr_num, msr.lo, msr.hi); + + return msr; +} + +static inline void msr_write(unsigned msr_num, msr_t msr) +{ + wrmsr(msr_num, msr.lo, msr.hi); +} + #define rdtscl(low) \ ((low) = (u32)__native_read_tsc())