[PATCH 1/2] perf bench: port memcpy_64.S to perf bench

From: Hitoshi Mitake
Date: Fri Oct 29 2010 - 12:01:50 EST


This patch ports arch/x86/lib/memcpy_64.S to "perf bench mem".
When PERF_BENCH is defined at preprocessor level,
memcpy_64.S is preprocessed to includable form from the sources
under tools/perf for benchmarking programs.

Signed-off-by: Hitoshi Mitake <mitake@xxxxxxxxxxxxxxxxxxxxx>
Cc: Ma Ling: <ling.ma@xxxxxxxxx>
Cc: Zhao Yakui <yakui.zhao@xxxxxxxxx>
Cc: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
Cc: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
Cc: Paul Mackerras <paulus@xxxxxxxxx>
Cc: Frederic Weisbecker <fweisbec@xxxxxxxxx>
Cc: Steven Rostedt <rostedt@xxxxxxxxxxx>
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Cc: H. Peter Anvin <hpa@xxxxxxxxx>
---
arch/x86/lib/memcpy_64.S | 30 ++++++++++++++++++++++++++++++
1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/arch/x86/lib/memcpy_64.S b/arch/x86/lib/memcpy_64.S
index 75ef61e..72c6dfe 100644
--- a/arch/x86/lib/memcpy_64.S
+++ b/arch/x86/lib/memcpy_64.S
@@ -1,10 +1,23 @@
/* Copyright 2002 Andi Kleen */

+/*
+ * perf bench adoption by Hitoshi Mitake
+ * PERF_BENCH means that this file is included from
+ * the source files under tools/perf/ for benchmark programs.
+ *
+ * You don't have to care about PERF_BENCH when
+ * you are working on the kernel.
+ */
+
+#ifndef PERF_BENCH
+
#include <linux/linkage.h>

#include <asm/cpufeature.h>
#include <asm/dwarf2.h>

+#endif /* PERF_BENCH */
+
/*
* memcpy - Copy a memory block.
*
@@ -23,8 +36,13 @@
* This gets patched over the unrolled variant (below) via the
* alternative instructions framework:
*/
+#ifndef PERF_BENCH
.section .altinstr_replacement, "ax", @progbits
.Lmemcpy_c:
+#else
+ .globl memcpy_x86_64_rep
+memcpy_x86_64_rep:
+#endif
movq %rdi, %rax

movl %edx, %ecx
@@ -34,12 +52,19 @@
movl %edx, %ecx
rep movsb
ret
+#ifndef PERF_BENCH
.Lmemcpy_e:
.previous
+#endif

+#ifndef PERF_BENCH
ENTRY(__memcpy)
ENTRY(memcpy)
CFI_STARTPROC
+#else
+ .globl memcpy_x86_64_unrolled
+memcpy_x86_64_unrolled:
+#endif
movq %rdi, %rax

/*
@@ -166,6 +191,9 @@ ENTRY(memcpy)

.Lend:
retq
+
+#ifndef PERF_BENCH
+
CFI_ENDPROC
ENDPROC(memcpy)
ENDPROC(__memcpy)
@@ -189,3 +217,5 @@ ENDPROC(__memcpy)
.byte .Lmemcpy_e - .Lmemcpy_c
.byte .Lmemcpy_e - .Lmemcpy_c
.previous
+
+#endif
--
1.7.1.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/