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