Skip to content

Commit

Permalink
x86: change rdpmc interface
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Glauber de Oliveira Costa authored and Ingo Molnar committed Jan 30, 2008
1 parent 8f12dea commit b8d1fae
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 4 deletions.
6 changes: 3 additions & 3 deletions include/asm-x86/msr.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion include/asm-x86/paravirt.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ struct pv_cpu_ops {
int (*write_msr)(unsigned int msr, u64 val);

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

/* These two are jmp to, not actually called. */
void (*irq_enable_syscall_ret)(void);
Expand Down

0 comments on commit b8d1fae

Please sign in to comment.