xref: /openbmc/linux/arch/arm/probes/kprobes/checkers.h (revision 28a1899d)
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