Merge tag 'fs.close_range.v5.15' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / arch / csky / kernel / probes / decode-insn.c
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  */
16 enum probe_insn __kprobes
17 csky_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 }