Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

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