Linux-libre 5.4.47-gnu
[librecmc/linux-libre.git] / arch / arm / probes / kprobes / checkers.h
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