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
14extern probes_check_t checker_stack_use_none;
15extern probes_check_t checker_stack_use_unknown;
16#ifdef CONFIG_THUMB2_KERNEL
17extern probes_check_t checker_stack_use_imm_0xx;
18#else
19extern probes_check_t checker_stack_use_imm_x0x;
20#endif
21extern probes_check_t checker_stack_use_imm_xxx;
22extern probes_check_t checker_stack_use_stmdx;
23
24enum {
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
38extern const union decode_action stack_check_actions[];
39
40#ifndef CONFIG_THUMB2_KERNEL
41extern const struct decode_checker arm_stack_checker[];
42extern const struct decode_checker arm_regs_checker[];
43#else
44#endif
45extern const struct decode_checker t32_stack_checker[];
46extern const struct decode_checker t16_stack_checker[];
47#endif
48