Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 79931
b: refs/heads/master
c: c9dcda5
h: refs/heads/master
i:
  79929: 8bfe02c
  79927: ea438cd
v: v3
  • Loading branch information
Glauber de Oliveira Costa authored and Ingo Molnar committed Jan 30, 2008
1 parent 66c98c1 commit 54f63bb
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b8d1fae7dbde6a1227fa142acecb48dc3dd63817
refs/heads/master: c9dcda5ce46c395c5c99003e259e1973dface640
19 changes: 10 additions & 9 deletions trunk/include/asm-x86/msr.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,14 @@ static inline unsigned long long native_read_msr_safe(unsigned int msr,
return val;
}

static inline void native_write_msr(unsigned int msr, unsigned long long val)
static inline void native_write_msr(unsigned int msr,
unsigned low, unsigned high)
{
asm volatile("wrmsr" : : "c" (msr), "A"(val));
asm volatile("wrmsr" : : "c" (msr), "a"(low), "d" (high));
}

static inline int native_write_msr_safe(unsigned int msr,
unsigned long long val)
unsigned low, unsigned high)
{
int err;
asm volatile("2: wrmsr ; xorl %0,%0\n"
Expand All @@ -82,7 +83,7 @@ static inline int native_write_msr_safe(unsigned int msr,
" .long 2b,3b\n\t"
".previous"
: "=a" (err)
: "c" (msr), "0" ((u32)val), "d" ((u32)(val>>32)),
: "c" (msr), "0" (low), "d" (high),
"i" (-EFAULT));
return err;
}
Expand Down Expand Up @@ -118,20 +119,20 @@ static inline unsigned long long native_read_pmc(int counter)
(val2) = (u32)(__val >> 32); \
} while(0)

static inline void wrmsr(u32 __msr, u32 __low, u32 __high)
static inline void wrmsr(unsigned msr, unsigned low, unsigned high)
{
native_write_msr(__msr, ((u64)__high << 32) | __low);
native_write_msr(msr, low, high);
}

#define rdmsrl(msr,val) \
((val) = native_read_msr(msr))

#define wrmsrl(msr,val) native_write_msr(msr, val)
#define wrmsrl(msr, val) native_write_msr(msr, (u32)val, (u32)(val >> 32))

/* wrmsr with exception handling */
static inline int wrmsr_safe(u32 __msr, u32 __low, u32 __high)
static inline int wrmsr_safe(unsigned msr, unsigned low, unsigned high)
{
return native_write_msr_safe(__msr, ((u64)__high << 32) | __low);
return native_write_msr_safe(msr, low, high);
}

/* rdmsr with exception handling */
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/asm-x86/paravirt.h
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ struct pv_cpu_ops {
/* MSR, PMC and TSR operations.
err = 0/-EFAULT. wrmsr returns 0/-EFAULT. */
u64 (*read_msr)(unsigned int msr, int *err);
int (*write_msr)(unsigned int msr, u64 val);
int (*write_msr)(unsigned int msr, unsigned low, unsigned high);

u64 (*read_tsc)(void);
u64 (*read_pmc)(int counter);
Expand Down

0 comments on commit 54f63bb

Please sign in to comment.