49 lines · c
1// SPDX-License-Identifier: GPL-2.02// 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