linux/tools/perf/arch/csky/annotate/instructions.c
<<
>>
Prefs
   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}
  49