16624cf65SWang Nan /* 26624cf65SWang Nan * arch/arm/probes/kprobes/checkers.h 36624cf65SWang Nan * 46624cf65SWang Nan * Copyright (C) 2014 Huawei Inc. 56624cf65SWang Nan * 66624cf65SWang Nan * This program is free software; you can redistribute it and/or modify 76624cf65SWang Nan * it under the terms of the GNU General Public License version 2 as 86624cf65SWang Nan * published by the Free Software Foundation. 96624cf65SWang Nan * 106624cf65SWang Nan * This program is distributed in the hope that it will be useful, 116624cf65SWang Nan * but WITHOUT ANY WARRANTY; without even the implied warranty of 126624cf65SWang Nan * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 136624cf65SWang Nan * General Public License for more details. 146624cf65SWang Nan */ 156624cf65SWang Nan #ifndef _ARM_KERNEL_PROBES_CHECKERS_H 166624cf65SWang Nan #define _ARM_KERNEL_PROBES_CHECKERS_H 176624cf65SWang Nan 186624cf65SWang Nan #include <linux/kernel.h> 196624cf65SWang Nan #include <linux/types.h> 206624cf65SWang Nan #include "../decode.h" 216624cf65SWang Nan 226624cf65SWang Nan extern probes_check_t checker_stack_use_none; 236624cf65SWang Nan extern probes_check_t checker_stack_use_unknown; 246624cf65SWang Nan #ifdef CONFIG_THUMB2_KERNEL 256624cf65SWang Nan extern probes_check_t checker_stack_use_imm_0xx; 266624cf65SWang Nan #else 276624cf65SWang Nan extern probes_check_t checker_stack_use_imm_x0x; 286624cf65SWang Nan #endif 296624cf65SWang Nan extern probes_check_t checker_stack_use_imm_xxx; 306624cf65SWang Nan extern probes_check_t checker_stack_use_stmdx; 316624cf65SWang Nan 326624cf65SWang Nan enum { 336624cf65SWang Nan STACK_USE_NONE, 346624cf65SWang Nan STACK_USE_UNKNOWN, 356624cf65SWang Nan #ifdef CONFIG_THUMB2_KERNEL 366624cf65SWang Nan STACK_USE_FIXED_0XX, 376624cf65SWang Nan STACK_USE_T32STRD, 386624cf65SWang Nan #else 396624cf65SWang Nan STACK_USE_FIXED_X0X, 406624cf65SWang Nan #endif 416624cf65SWang Nan STACK_USE_FIXED_XXX, 426624cf65SWang Nan STACK_USE_STMDX, 436624cf65SWang Nan NUM_STACK_USE_TYPES 446624cf65SWang Nan }; 456624cf65SWang Nan 466624cf65SWang Nan extern const union decode_action stack_check_actions[]; 476624cf65SWang Nan 486624cf65SWang Nan #ifndef CONFIG_THUMB2_KERNEL 496624cf65SWang Nan extern const struct decode_checker arm_stack_checker[]; 5028a1899dSWang Nan extern const struct decode_checker arm_regs_checker[]; 516624cf65SWang Nan #else 526624cf65SWang Nan #endif 536624cf65SWang Nan extern const struct decode_checker t32_stack_checker[]; 546624cf65SWang Nan extern const struct decode_checker t16_stack_checker[]; 556624cf65SWang Nan #endif 56