linux/arch/csky/kernel/probes/decode-insn.c
<<
>>
Prefs
   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}
  50