1 /* SPDX-License-Identifier: GPL-2.0+ */ 1 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) 7 static __always_inline bool csky_insn_is_##nam 8 { 9 BUILD_BUG_ON(~(mask) & (val)); 10 return (code & (mask)) == (val); 11 } 12 void simulate_##name(u32 opcode, long addr, st 13 14 #define CSKY_INSN_SET_SIMULATE(name, code) 15 do { 16 if (csky_insn_is_##name(code)) 17 api->handler = simulat 18 return INSN_GOOD_NO_SL 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, 0x 31 __CSKY_INSN_FUNCS(bt32, 0x0000ffff, 0x 32 __CSKY_INSN_FUNCS(bf32, 0x0000ffff, 0x 33 __CSKY_INSN_FUNCS(jmp32, 0xffffffe0, 0x 34 __CSKY_INSN_FUNCS(jsr32, 0xffffffe0, 0x 35 __CSKY_INSN_FUNCS(lrw32, 0x0000ffe0, 0x 36 __CSKY_INSN_FUNCS(pop32, 0xfe00ffff, 0x 37 38 __CSKY_INSN_FUNCS(bez32, 0x0000ffe0, 0x 39 __CSKY_INSN_FUNCS(bnez32, 0x0000ffe0, 0x 40 __CSKY_INSN_FUNCS(bnezad32, 0x0000ffe0, 0x 41 __CSKY_INSN_FUNCS(bhsz32, 0x0000ffe0, 0x 42 __CSKY_INSN_FUNCS(bhz32, 0x0000ffe0, 0x 43 __CSKY_INSN_FUNCS(blsz32, 0x0000ffe0, 0x 44 __CSKY_INSN_FUNCS(blz32, 0x0000ffe0, 0x 45 __CSKY_INSN_FUNCS(bsr32, 0x0000fc00, 0x 46 __CSKY_INSN_FUNCS(jmpi32, 0x0000ffff, 0x 47 __CSKY_INSN_FUNCS(jsri32, 0x0000ffff, 0x 48 49 #endif /* __CSKY_KERNEL_PROBES_SIMULATE_INSN_H 50
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.