0001
0002
0003
0004
0005
0006
0007 #ifndef _ARM_KERNEL_PROBES_CHECKERS_H
0008 #define _ARM_KERNEL_PROBES_CHECKERS_H
0009
0010 #include <linux/kernel.h>
0011 #include <linux/types.h>
0012 #include "../decode.h"
0013
0014 extern probes_check_t checker_stack_use_none;
0015 extern probes_check_t checker_stack_use_unknown;
0016 #ifdef CONFIG_THUMB2_KERNEL
0017 extern probes_check_t checker_stack_use_imm_0xx;
0018 #else
0019 extern probes_check_t checker_stack_use_imm_x0x;
0020 #endif
0021 extern probes_check_t checker_stack_use_imm_xxx;
0022 extern probes_check_t checker_stack_use_stmdx;
0023
0024 enum {
0025 STACK_USE_NONE,
0026 STACK_USE_UNKNOWN,
0027 #ifdef CONFIG_THUMB2_KERNEL
0028 STACK_USE_FIXED_0XX,
0029 STACK_USE_T32STRD,
0030 #else
0031 STACK_USE_FIXED_X0X,
0032 #endif
0033 STACK_USE_FIXED_XXX,
0034 STACK_USE_STMDX,
0035 NUM_STACK_USE_TYPES
0036 };
0037
0038 extern const union decode_action stack_check_actions[];
0039
0040 #ifndef CONFIG_THUMB2_KERNEL
0041 extern const struct decode_checker arm_stack_checker[];
0042 extern const struct decode_checker arm_regs_checker[];
0043 #else
0044 #endif
0045 extern const struct decode_checker t32_stack_checker[];
0046 extern const struct decode_checker t16_stack_checker[];
0047 #endif