0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef _ARM_KERNEL_KPROBES_H
0012 #define _ARM_KERNEL_KPROBES_H
0013
0014 #include <asm/kprobes.h>
0015 #include "../decode.h"
0016
0017
0018
0019
0020
0021 #define KPROBE_ARM_BREAKPOINT_INSTRUCTION 0x07f001f8
0022 #define KPROBE_THUMB16_BREAKPOINT_INSTRUCTION 0xde18
0023 #define KPROBE_THUMB32_BREAKPOINT_INSTRUCTION 0xf7f0a018
0024
0025 extern void kprobes_remove_breakpoint(void *addr, unsigned int insn);
0026
0027 enum probes_insn __kprobes
0028 kprobe_decode_ldmstm(kprobe_opcode_t insn, struct arch_probes_insn *asi,
0029 const struct decode_header *h);
0030
0031 typedef enum probes_insn (kprobe_decode_insn_t)(probes_opcode_t,
0032 struct arch_probes_insn *,
0033 bool,
0034 const union decode_action *,
0035 const struct decode_checker *[]);
0036
0037 #ifdef CONFIG_THUMB2_KERNEL
0038
0039 extern const union decode_action kprobes_t32_actions[];
0040 extern const union decode_action kprobes_t16_actions[];
0041 extern const struct decode_checker *kprobes_t32_checkers[];
0042 extern const struct decode_checker *kprobes_t16_checkers[];
0043 #else
0044
0045 extern const union decode_action kprobes_arm_actions[];
0046 extern const struct decode_checker *kprobes_arm_checkers[];
0047
0048 #endif
0049
0050 #endif