1/* 2 * arch/arm/probes/kprobes/checkers.h 3 * 4 * Copyright (C) 2014 Huawei Inc. 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 2 as 8 * published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * General Public License for more details. 14 */ 15#ifndef _ARM_KERNEL_PROBES_CHECKERS_H 16#define _ARM_KERNEL_PROBES_CHECKERS_H 17 18#include <linux/kernel.h> 19#include <linux/types.h> 20#include "../decode.h" 21 22extern probes_check_t checker_stack_use_none; 23extern probes_check_t checker_stack_use_unknown; 24#ifdef CONFIG_THUMB2_KERNEL 25extern probes_check_t checker_stack_use_imm_0xx; 26#else 27extern probes_check_t checker_stack_use_imm_x0x; 28#endif 29extern probes_check_t checker_stack_use_imm_xxx; 30extern probes_check_t checker_stack_use_stmdx; 31 32enum { 33 STACK_USE_NONE, 34 STACK_USE_UNKNOWN, 35#ifdef CONFIG_THUMB2_KERNEL 36 STACK_USE_FIXED_0XX, 37 STACK_USE_T32STRD, 38#else 39 STACK_USE_FIXED_X0X, 40#endif 41 STACK_USE_FIXED_XXX, 42 STACK_USE_STMDX, 43 NUM_STACK_USE_TYPES 44}; 45 46extern const union decode_action stack_check_actions[]; 47 48#ifndef CONFIG_THUMB2_KERNEL 49extern const struct decode_checker arm_stack_checker[]; 50extern const struct decode_checker arm_regs_checker[]; 51#else 52#endif 53extern const struct decode_checker t32_stack_checker[]; 54extern const struct decode_checker t16_stack_checker[]; 55#endif 56