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