diff options
Diffstat (limited to 'tools/perf/arch/csky/annotate/instructions.c')
-rw-r--r-- | tools/perf/arch/csky/annotate/instructions.c | 48 |
1 files changed, 48 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 | } | ||