1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * arch/arm/probes/kprobes/checkers.h 4 * 5 * Copyright (C) 2014 Huawei Inc. 6 */ 7 #ifndef _ARM_KERNEL_PROBES_CHECKERS_H 8 #define _ARM_KERNEL_PROBES_CHECKERS_H 9 10 #include <linux/kernel.h> 11 #include <linux/types.h> 12 #include "../decode.h" 13 14 extern probes_check_t checker_stack_use_none; 15 extern probes_check_t checker_stack_use_unknown; 16 #ifdef CONFIG_THUMB2_KERNEL 17 extern probes_check_t checker_stack_use_imm_0xx; 18 #else 19 extern probes_check_t checker_stack_use_imm_x0x; 20 #endif 21 extern probes_check_t checker_stack_use_imm_xxx; 22 extern probes_check_t checker_stack_use_stmdx; 23 24 enum { 25 STACK_USE_NONE, 26 STACK_USE_UNKNOWN, 27 #ifdef CONFIG_THUMB2_KERNEL 28 STACK_USE_FIXED_0XX, 29 STACK_USE_T32STRD, 30 #else 31 STACK_USE_FIXED_X0X, 32 #endif 33 STACK_USE_FIXED_XXX, 34 STACK_USE_STMDX, 35 NUM_STACK_USE_TYPES 36 }; 37 38 extern const union decode_action stack_check_actions[]; 39 40 #ifndef CONFIG_THUMB2_KERNEL 41 extern const struct decode_checker arm_stack_checker[]; 42 extern const struct decode_checker arm_regs_checker[]; 43 #else 44 #endif 45 extern const struct decode_checker t32_stack_checker[]; 46 extern const struct decode_checker t16_stack_checker[]; 47 #endif 48