diff options
-rw-r--r-- | tools/perf/arch/csky/annotate/instructions.c | 48 | ||||
-rw-r--r-- | tools/perf/util/annotate.c | 5 |
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 | |||
6 | static 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 | |||
41 | static 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, |