mirror of
https://github.com/torvalds/linux.git
synced 2024-11-08 21:21:47 +00:00
perf, x86: Use ALTERNATIVE() to check for X86_FEATURE_PERFCTR_CORE
Using ALTERNATIVE() when checking for X86_FEATURE_PERFCTR_CORE avoids an extra pointer chase and data cache hit. Signed-off-by: Robert Richter <robert.richter@amd.com> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1302913676-14352-4-git-send-email-robert.richter@amd.com Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
68d2cf25d3
commit
c8e5910edf
@ -31,6 +31,7 @@
|
||||
#include <asm/nmi.h>
|
||||
#include <asm/compat.h>
|
||||
#include <asm/smp.h>
|
||||
#include <asm/alternative.h>
|
||||
|
||||
#if 0
|
||||
#undef wrmsrl
|
||||
@ -363,12 +364,18 @@ again:
|
||||
return new_raw_count;
|
||||
}
|
||||
|
||||
/* using X86_FEATURE_PERFCTR_CORE to later implement ALTERNATIVE() here */
|
||||
static inline int x86_pmu_addr_offset(int index)
|
||||
{
|
||||
if (boot_cpu_has(X86_FEATURE_PERFCTR_CORE))
|
||||
return index << 1;
|
||||
return index;
|
||||
int offset;
|
||||
|
||||
/* offset = X86_FEATURE_PERFCTR_CORE ? index << 1 : index */
|
||||
alternative_io(ASM_NOP2,
|
||||
"shll $1, %%eax",
|
||||
X86_FEATURE_PERFCTR_CORE,
|
||||
"=a" (offset),
|
||||
"a" (index));
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
static inline unsigned int x86_pmu_config_addr(int index)
|
||||
|
Loading…
Reference in New Issue
Block a user