cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

instructions.c (1148B)


      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}