perf tools: Move x86 barrier.h stuff to tools/ arch/x86/include/asm/barrier.h
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 361c564eeff4b78f1303b86e8e8f07fc547bd2c9 Gitweb: http://git.kernel.org/tip/361c564eeff4b78f1303b86e8e8f07fc547bd2c9 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Thu, 30 Apr 2015 12:33:22 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Fri, 8 May 2015 16:05:03 -0300
perf tools: Move x86 barrier.h stuff to tools/arch/x86/include/asm/barrier.h
We will need it for atomic.h, so move it from the ad-hoc tools/perf/ place to a tools/ subset of the kernel arch/ hierarchy.
Other aches will follow, each in a cset.
Cc Adrian Hunter <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc David Ahern <[email protected]>
Cc Don Zickus <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Stephane Eranian <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/arch/x86/include/asm/barrier.h | 28 ++++++++++++++++++++++++++++ tools/include/asm/barrier.h | 3 +++ tools/perf/MANIFEST | 2 ++ tools/perf/perf-sys.h | 7 +------ 4 files changed, 34 insertions(+), 6 deletions(-)
tools/arch/x86/include/asm/barrier.h new file +28 -0
@@ -0,0 +1,28 @@ +#ifndef _TOOLS_LINUX_ASM_X86_BARRIER_H +#define _TOOLS_LINUX_ASM_X86_BARRIER_H + +/* +* Copied from the Linux kernel sources, and also moving code +* out from tools/perf/perf-sys.h so as to make it be located +* in a place similar as in the kernel sources. +* +* Force strict CPU ordering. +* And yes, this is required on UP too when we're talking +* to devices. +*/ + +#if defined(__i386__) +/* +* Some non-Intel clones support out of order store. wmb() ceases to be a +* nop for these. +*/ +#define mb () asm volatile("lock; addl $0,0(%%esp)" ::: "memory") +#define rmb () asm volatile("lock; addl $0,0(%%esp)" ::: "memory") +#define wmb () asm volatile("lock; addl $0,0(%%esp)" ::: "memory") +#elif defined(__x86_64__) +#define mb () asm volatile("mfence":::"memory") +#define rmb () asm volatile("lfence":::"memory") +#define wmb () asm volatile("sfence" ::: "memory") +#endif + +#endif /* _TOOLS_LINUX_ASM_X86_BARRIER_H */
tools/include/asm/barrier.h new file +3 -0
@@ -0,0 +1,3 @@ +#if defined(__i386__) || defined(__x86_64__) +#include "../../arch/x86/include/asm/barrier.h" +#endif
tools/perf/MANIFEST +2 -0
@@ -1,4 +1,5 @@ tools/perf +tools/arch/x86/include/asm/barrier.h tools/scripts tools/build tools/lib/traceevent
@@ -6,6 +7,7 @@ tools/lib/api tools/lib/symbol/kallsyms.c tools/lib/symbol/kallsyms.h tools/lib/util/find_next_bit.c +tools/include/asm/barrier.h tools/include/asm/bug.h tools/include/asm-generic/bitops/arch_hweight.h tools/include/asm-generic/bitops/atomic.h
tools/perf/perf-sys.h +1 -6
@@ -6,11 +6,9 @@#include <sys/syscall.h> #include <linux/types.h> #include <linux/perf_event.h> +#include <asm/barrier.h> #if defined(__i386__) -#define mb () asm volatile("lock; addl $0,0(%%esp)" ::: "memory") -#define wmb () asm volatile("lock; addl $0,0(%%esp)" ::: "memory") -#define rmb () asm volatile("lock; addl $0,0(%%esp)" ::: "memory")#define cpu_relax () asm volatile("rep; nop" ::: "memory");#define CPUINFO_PROC {"model name"}#ifndef __NR_perf_event_open
@@ -25,9 +23,6 @@#endif #if defined(__x86_64__) -#define mb () asm volatile("mfence" ::: "memory") -#define wmb () asm volatile("sfence" ::: "memory") -#define rmb () asm volatile("lfence" ::: "memory")#define cpu_relax () asm volatile("rep; nop" ::: "memory");#define CPUINFO_PROC {"model name"}#ifndef __NR_perf_event_open