1 // SPDX-License-Identifier: GPL-2.0
2 /*
3 * Perf annotate functions.
4 *
5 * Copyright (C) 2020 Loongson Technology Corporation Limited
6 */
7
8 static
loongarch__associate_ins_ops(struct arch * arch,const char * name)9 struct ins_ops *loongarch__associate_ins_ops(struct arch *arch, const char *name)
10 {
11 struct ins_ops *ops = NULL;
12
13 if (!strncmp(name, "beqz", 4) ||
14 !strncmp(name, "bnez", 4) ||
15 !strncmp(name, "beq", 3) ||
16 !strncmp(name, "bne", 3) ||
17 !strncmp(name, "blt", 3) ||
18 !strncmp(name, "bge", 3) ||
19 !strncmp(name, "bltu", 4) ||
20 !strncmp(name, "bgeu", 4) ||
21 !strncmp(name, "bl", 2))
22 ops = &call_ops;
23 else if (!strncmp(name, "jirl", 4))
24 ops = &ret_ops;
25 else if (name[0] == 'b')
26 ops = &jump_ops;
27 else
28 return NULL;
29
30 arch__associate_ins_ops(arch, name, ops);
31
32 return ops;
33 }
34
35 static
loongarch__annotate_init(struct arch * arch,char * cpuid __maybe_unused)36 int loongarch__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
37 {
38 if (!arch->initialized) {
39 arch->associate_instruction_ops = loongarch__associate_ins_ops;
40 arch->initialized = true;
41 arch->objdump.comment_char = '#';
42 }
43
44 return 0;
45 }
46