aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/perf/arch/csky/annotate/instructions.c48
-rw-r--r--tools/perf/util/annotate.c5
2 files changed, 53 insertions, 0 deletions
diff --git a/tools/perf/arch/csky/annotate/instructions.c b/tools/perf/arch/csky/annotate/instructions.c
new file mode 100644
index 000000000000..5337bfb7d5fc
--- /dev/null
+++ b/tools/perf/arch/csky/annotate/instructions.c
@@ -0,0 +1,48 @@
1// SPDX-License-Identifier: GPL-2.0
2// Copyright (C) 2019 Hangzhou C-SKY Microsystems co.,ltd.
3
4#include <linux/compiler.h>
5
6static struct ins_ops *csky__associate_ins_ops(struct arch *arch,
7 const char *name)
8{
9 struct ins_ops *ops = NULL;
10
11 /* catch all kind of jumps */
12 if (!strcmp(name, "bt") ||
13 !strcmp(name, "bf") ||
14 !strcmp(name, "bez") ||
15 !strcmp(name, "bnez") ||
16 !strcmp(name, "bnezad") ||
17 !strcmp(name, "bhsz") ||
18 !strcmp(name, "bhz") ||
19 !strcmp(name, "blsz") ||
20 !strcmp(name, "blz") ||
21 !strcmp(name, "br") ||
22 !strcmp(name, "jmpi") ||
23 !strcmp(name, "jmp"))
24 ops = &jump_ops;
25
26 /* catch function call */
27 if (!strcmp(name, "bsr") ||
28 !strcmp(name, "jsri") ||
29 !strcmp(name, "jsr"))
30 ops = &call_ops;
31
32 /* catch function return */
33 if (!strcmp(name, "rts"))
34 ops = &ret_ops;
35
36 if (ops)
37 arch__associate_ins_ops(arch, name, ops);
38 return ops;
39}
40
41static int csky__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
42{
43 arch->initialized = true;
44 arch->objdump.comment_char = '/';
45 arch->associate_instruction_ops = csky__associate_ins_ops;
46
47 return 0;
48}
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index 2d08c4b62c63..ec7aaf31c2b2 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -145,6 +145,7 @@ static int arch__associate_ins_ops(struct arch* arch, const char *name, struct i
145#include "arch/arc/annotate/instructions.c" 145#include "arch/arc/annotate/instructions.c"
146#include "arch/arm/annotate/instructions.c" 146#include "arch/arm/annotate/instructions.c"
147#include "arch/arm64/annotate/instructions.c" 147#include "arch/arm64/annotate/instructions.c"
148#include "arch/csky/annotate/instructions.c"
148#include "arch/x86/annotate/instructions.c" 149#include "arch/x86/annotate/instructions.c"
149#include "arch/powerpc/annotate/instructions.c" 150#include "arch/powerpc/annotate/instructions.c"
150#include "arch/s390/annotate/instructions.c" 151#include "arch/s390/annotate/instructions.c"
@@ -164,6 +165,10 @@ static struct arch architectures[] = {
164 .init = arm64__annotate_init, 165 .init = arm64__annotate_init,
165 }, 166 },
166 { 167 {
168 .name = "csky",
169 .init = csky__annotate_init,
170 },
171 {
167 .name = "x86", 172 .name = "x86",
168 .init = x86__annotate_init, 173 .init = x86__annotate_init,
169 .instructions = x86__instructions, 174 .instructions = x86__instructions,