Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
 1// SPDX-License-Identifier: GPL-2.0+
 2
 3#include <linux/kernel.h>
 4#include <linux/kprobes.h>
 5#include <linux/module.h>
 6#include <linux/kallsyms.h>
 7#include <asm/sections.h>
 8
 9#include "decode-insn.h"
10#include "simulate-insn.h"
11
12/* Return:
13 *   INSN_REJECTED     If instruction is one not allowed to kprobe,
14 *   INSN_GOOD_NO_SLOT If instruction is supported but doesn't use its slot.
15 */
16enum probe_insn __kprobes
17csky_probe_decode_insn(probe_opcode_t *addr, struct arch_probe_insn *api)
18{
19	probe_opcode_t insn = le32_to_cpu(*addr);
20
21	CSKY_INSN_SET_SIMULATE(br16,		insn);
22	CSKY_INSN_SET_SIMULATE(bt16,		insn);
23	CSKY_INSN_SET_SIMULATE(bf16,		insn);
24	CSKY_INSN_SET_SIMULATE(jmp16,		insn);
25	CSKY_INSN_SET_SIMULATE(jsr16,		insn);
26	CSKY_INSN_SET_SIMULATE(lrw16,		insn);
27	CSKY_INSN_SET_SIMULATE(pop16,		insn);
28
29	CSKY_INSN_SET_SIMULATE(br32,		insn);
30	CSKY_INSN_SET_SIMULATE(bt32,		insn);
31	CSKY_INSN_SET_SIMULATE(bf32,		insn);
32	CSKY_INSN_SET_SIMULATE(jmp32,		insn);
33	CSKY_INSN_SET_SIMULATE(jsr32,		insn);
34	CSKY_INSN_SET_SIMULATE(lrw32,		insn);
35	CSKY_INSN_SET_SIMULATE(pop32,		insn);
36
37	CSKY_INSN_SET_SIMULATE(bez32,		insn);
38	CSKY_INSN_SET_SIMULATE(bnez32,		insn);
39	CSKY_INSN_SET_SIMULATE(bnezad32,	insn);
40	CSKY_INSN_SET_SIMULATE(bhsz32,		insn);
41	CSKY_INSN_SET_SIMULATE(bhz32,		insn);
42	CSKY_INSN_SET_SIMULATE(blsz32,		insn);
43	CSKY_INSN_SET_SIMULATE(blz32,		insn);
44	CSKY_INSN_SET_SIMULATE(bsr32,		insn);
45	CSKY_INSN_SET_SIMULATE(jmpi32,		insn);
46	CSKY_INSN_SET_SIMULATE(jsri32,		insn);
47
48	return INSN_GOOD;
49}