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

simulate-insn.h (1801B)


      1/* SPDX-License-Identifier: GPL-2.0+ */
      2
      3#ifndef __CSKY_KERNEL_PROBES_SIMULATE_INSN_H
      4#define __CSKY_KERNEL_PROBES_SIMULATE_INSN_H
      5
      6#define __CSKY_INSN_FUNCS(name, mask, val)				\
      7static __always_inline bool csky_insn_is_##name(probe_opcode_t code)	\
      8{									\
      9	BUILD_BUG_ON(~(mask) & (val));					\
     10	return (code & (mask)) == (val);				\
     11}									\
     12void simulate_##name(u32 opcode, long addr, struct pt_regs *regs);
     13
     14#define CSKY_INSN_SET_SIMULATE(name, code)				\
     15	do {								\
     16		if (csky_insn_is_##name(code)) {			\
     17			api->handler = simulate_##name;			\
     18			return INSN_GOOD_NO_SLOT;			\
     19		}							\
     20	} while (0)
     21
     22__CSKY_INSN_FUNCS(br16,		0xfc00, 0x0400)
     23__CSKY_INSN_FUNCS(bt16,		0xfc00, 0x0800)
     24__CSKY_INSN_FUNCS(bf16,		0xfc00, 0x0c00)
     25__CSKY_INSN_FUNCS(jmp16,	0xffc3, 0x7800)
     26__CSKY_INSN_FUNCS(jsr16,	0xffc3, 0x7801)
     27__CSKY_INSN_FUNCS(lrw16,	0xfc00, 0x1000)
     28__CSKY_INSN_FUNCS(pop16,	0xffe0, 0x1480)
     29
     30__CSKY_INSN_FUNCS(br32,		0x0000ffff, 0x0000e800)
     31__CSKY_INSN_FUNCS(bt32,		0x0000ffff, 0x0000e860)
     32__CSKY_INSN_FUNCS(bf32,		0x0000ffff, 0x0000e840)
     33__CSKY_INSN_FUNCS(jmp32,	0xffffffe0, 0x0000e8c0)
     34__CSKY_INSN_FUNCS(jsr32,	0xffffffe0, 0x0000e8e0)
     35__CSKY_INSN_FUNCS(lrw32,	0x0000ffe0, 0x0000ea80)
     36__CSKY_INSN_FUNCS(pop32,	0xfe00ffff, 0x0000ebc0)
     37
     38__CSKY_INSN_FUNCS(bez32,	0x0000ffe0, 0x0000e900)
     39__CSKY_INSN_FUNCS(bnez32,	0x0000ffe0, 0x0000e920)
     40__CSKY_INSN_FUNCS(bnezad32,	0x0000ffe0, 0x0000e820)
     41__CSKY_INSN_FUNCS(bhsz32,	0x0000ffe0, 0x0000e9a0)
     42__CSKY_INSN_FUNCS(bhz32,	0x0000ffe0, 0x0000e940)
     43__CSKY_INSN_FUNCS(blsz32,	0x0000ffe0, 0x0000e960)
     44__CSKY_INSN_FUNCS(blz32,	0x0000ffe0, 0x0000e980)
     45__CSKY_INSN_FUNCS(bsr32,	0x0000fc00, 0x0000e000)
     46__CSKY_INSN_FUNCS(jmpi32,	0x0000ffff, 0x0000eac0)
     47__CSKY_INSN_FUNCS(jsri32,	0x0000ffff, 0x0000eae0)
     48
     49#endif /* __CSKY_KERNEL_PROBES_SIMULATE_INSN_H */