summaryrefslogtreecommitdiffstats
path: root/include/asm-x86/msr.h
diff options
context:
space:
mode:
authorGlauber de Oliveira Costa2008-01-30 13:31:07 +0100
committerIngo Molnar2008-01-30 13:31:07 +0100
commitb8d1fae7dbde6a1227fa142acecb48dc3dd63817 (patch)
tree1fdc67fe977cf6c351ed41d5fdaa46fa97aba776 /include/asm-x86/msr.h
parentx86: introduce native_read_tscp (diff)
downloadkernel-qcow2-linux-b8d1fae7dbde6a1227fa142acecb48dc3dd63817.tar.gz
kernel-qcow2-linux-b8d1fae7dbde6a1227fa142acecb48dc3dd63817.tar.xz
kernel-qcow2-linux-b8d1fae7dbde6a1227fa142acecb48dc3dd63817.zip
x86: change rdpmc interface
the rdpmc instruction gets a counter argument in rcx. However, the i386 version was ignoring it. To make both x86_64 and i386 versions the same, as well as to comply with the instruction semantics, this parameter is added in the i386 version Signed-off-by: Glauber de Oliveira Costa <gcosta@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include/asm-x86/msr.h')
-rw-r--r--include/asm-x86/msr.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/include/asm-x86/msr.h b/include/asm-x86/msr.h
index b6262e99fc8e..effb7319c0a5 100644
--- a/include/asm-x86/msr.h
+++ b/include/asm-x86/msr.h
@@ -94,10 +94,10 @@ static inline unsigned long long native_read_tsc(void)
return val;
}
-static inline unsigned long long native_read_pmc(void)
+static inline unsigned long long native_read_pmc(int counter)
{
unsigned long long val;
- asm volatile("rdpmc" : "=A" (val));
+ asm volatile("rdpmc" : "=A" (val) : "c" (counter));
return val;
}
@@ -154,7 +154,7 @@ static inline int wrmsr_safe(u32 __msr, u32 __low, u32 __high)
#define rdpmc(counter,low,high) \
do { \
- u64 _l = native_read_pmc(); \
+ u64 _l = native_read_pmc(counter); \
(low) = (u32)_l; \
(high) = (u32)(_l >> 32); \
} while(0)