1 /* 2 * arch/arm/kernel/kprobes.h 3 * 4 * Copyright (C) 2011 Jon Medhurst <tixy@yxit.co.uk>. 5 * 6 * Some contents moved here from arch/arm/include/asm/kprobes.h which is 7 * Copyright (C) 2006, 2007 Motorola Inc. 8 * 9 * This program is free software; you can redistribute it and/or modify 10 * it under the terms of the GNU General Public License version 2 as 11 * published by the Free Software Foundation. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * General Public License for more details. 17 */ 18 19 #ifndef _ARM_KERNEL_KPROBES_H 20 #define _ARM_KERNEL_KPROBES_H 21 22 #include "probes.h" 23 24 /* 25 * These undefined instructions must be unique and 26 * reserved solely for kprobes' use. 27 */ 28 #define KPROBE_ARM_BREAKPOINT_INSTRUCTION 0x07f001f8 29 #define KPROBE_THUMB16_BREAKPOINT_INSTRUCTION 0xde18 30 #define KPROBE_THUMB32_BREAKPOINT_INSTRUCTION 0xf7f0a018 31 32 enum probes_insn __kprobes 33 kprobe_decode_ldmstm(kprobe_opcode_t insn, struct arch_probes_insn *asi, 34 const struct decode_header *h); 35 36 typedef enum probes_insn (kprobe_decode_insn_t)(probes_opcode_t, 37 struct arch_probes_insn *, 38 bool, 39 const union decode_action *); 40 41 #ifdef CONFIG_THUMB2_KERNEL 42 43 extern const union decode_action kprobes_t32_actions[]; 44 extern const union decode_action kprobes_t16_actions[]; 45 46 #else /* !CONFIG_THUMB2_KERNEL */ 47 48 extern const union decode_action kprobes_arm_actions[]; 49 50 #endif 51 52 #endif /* _ARM_KERNEL_KPROBES_H */ 53