1*1802d0beSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 2fca08f32SWang Nan /* 3fca08f32SWang Nan * arch/arm/kernel/kprobes.h 4fca08f32SWang Nan * 5fca08f32SWang Nan * Copyright (C) 2011 Jon Medhurst <tixy@yxit.co.uk>. 6fca08f32SWang Nan * 7fca08f32SWang Nan * Some contents moved here from arch/arm/include/asm/kprobes.h which is 8fca08f32SWang Nan * Copyright (C) 2006, 2007 Motorola Inc. 9fca08f32SWang Nan */ 10fca08f32SWang Nan 11fca08f32SWang Nan #ifndef _ARM_KERNEL_KPROBES_H 12fca08f32SWang Nan #define _ARM_KERNEL_KPROBES_H 13fca08f32SWang Nan 14fca08f32SWang Nan #include <asm/kprobes.h> 15fca08f32SWang Nan #include "../decode.h" 16fca08f32SWang Nan 17fca08f32SWang Nan /* 18fca08f32SWang Nan * These undefined instructions must be unique and 19fca08f32SWang Nan * reserved solely for kprobes' use. 20fca08f32SWang Nan */ 21fca08f32SWang Nan #define KPROBE_ARM_BREAKPOINT_INSTRUCTION 0x07f001f8 22fca08f32SWang Nan #define KPROBE_THUMB16_BREAKPOINT_INSTRUCTION 0xde18 23fca08f32SWang Nan #define KPROBE_THUMB32_BREAKPOINT_INSTRUCTION 0xf7f0a018 24fca08f32SWang Nan 250dc016dbSWang Nan extern void kprobes_remove_breakpoint(void *addr, unsigned int insn); 260dc016dbSWang Nan 27fca08f32SWang Nan enum probes_insn __kprobes 28fca08f32SWang Nan kprobe_decode_ldmstm(kprobe_opcode_t insn, struct arch_probes_insn *asi, 29fca08f32SWang Nan const struct decode_header *h); 30fca08f32SWang Nan 31fca08f32SWang Nan typedef enum probes_insn (kprobe_decode_insn_t)(probes_opcode_t, 32fca08f32SWang Nan struct arch_probes_insn *, 33fca08f32SWang Nan bool, 3483803d97SWang Nan const union decode_action *, 354e1c0664SJon Medhurst const struct decode_checker *[]); 36fca08f32SWang Nan 37fca08f32SWang Nan #ifdef CONFIG_THUMB2_KERNEL 38fca08f32SWang Nan 39fca08f32SWang Nan extern const union decode_action kprobes_t32_actions[]; 40fca08f32SWang Nan extern const union decode_action kprobes_t16_actions[]; 4183803d97SWang Nan extern const struct decode_checker *kprobes_t32_checkers[]; 4283803d97SWang Nan extern const struct decode_checker *kprobes_t16_checkers[]; 43fca08f32SWang Nan #else /* !CONFIG_THUMB2_KERNEL */ 44fca08f32SWang Nan 45fca08f32SWang Nan extern const union decode_action kprobes_arm_actions[]; 4683803d97SWang Nan extern const struct decode_checker *kprobes_arm_checkers[]; 47fca08f32SWang Nan 48fca08f32SWang Nan #endif 49fca08f32SWang Nan 50fca08f32SWang Nan #endif /* _ARM_KERNEL_KPROBES_H */ 51