| /* |
| * arch/arm/probes/kprobes/checkers.h |
| * |
| * Copyright (C) 2014 Huawei Inc. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * General Public License for more details. |
| */ |
| #ifndef _ARM_KERNEL_PROBES_CHECKERS_H |
| #define _ARM_KERNEL_PROBES_CHECKERS_H |
| |
| #include <linux/kernel.h> |
| #include <linux/types.h> |
| #include "../decode.h" |
| |
| extern probes_check_t checker_stack_use_none; |
| extern probes_check_t checker_stack_use_unknown; |
| #ifdef CONFIG_THUMB2_KERNEL |
| extern probes_check_t checker_stack_use_imm_0xx; |
| #else |
| extern probes_check_t checker_stack_use_imm_x0x; |
| #endif |
| extern probes_check_t checker_stack_use_imm_xxx; |
| extern probes_check_t checker_stack_use_stmdx; |
| |
| enum { |
| STACK_USE_NONE, |
| STACK_USE_UNKNOWN, |
| #ifdef CONFIG_THUMB2_KERNEL |
| STACK_USE_FIXED_0XX, |
| STACK_USE_T32STRD, |
| #else |
| STACK_USE_FIXED_X0X, |
| #endif |
| STACK_USE_FIXED_XXX, |
| STACK_USE_STMDX, |
| NUM_STACK_USE_TYPES |
| }; |
| |
| extern const union decode_action stack_check_actions[]; |
| |
| #ifndef CONFIG_THUMB2_KERNEL |
| extern const struct decode_checker arm_stack_checker[]; |
| extern const struct decode_checker arm_regs_checker[]; |
| #else |
| #endif |
| extern const struct decode_checker t32_stack_checker[]; |
| extern const struct decode_checker t16_stack_checker[]; |
| #endif |